CUDA-Python:如何在 Python (Numba 0.25) 中启动 CUDA 内核?
CUDA-Python: How to launch CUDA kernel in Python (Numba 0.25)?
你能帮我理解如何在 Python 中编写 CUDA 内核吗? AFAIK,numba.vectorize 可以在 cuda,cpu,并行(multi-cpus) 上执行, 基于 目标 。但是 target='cuda' 需要设置 CUDA 内核。
主要问题是互联网上的许多示例和答案都与 已弃用 NumbaPro 库相关,因此很难遵循 未更新 WIKIs,特别是如果你是新手。
我有:
- 最新的 Anaconda (v2)
- 最新的 Numba (v0.25)
- 最新的 CUDA 工具包 (v7)
这是我遇到的错误:
numba.cuda.cudadrv.driver.CudaAPIError: 1 Call to cuLaunchKernel
results in CU DA_ERROR_INVALID_VALUE
import numpy as np
import time
from numba import vectorize, cuda
@vectorize(['float32(float32, float32)'], target='cuda')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
start = time.time()
C = VectorAdd(A, B)
vector_add_time = time.time() - start
print "C[:5] = " + str(C[:5])
print "C[-5:] = " + str(C[-5:])
print "VectorAdd took for % seconds" % vector_add_time
if __name__ == '__main__':
main()
所发布的代码是正确的,并且 运行 在 Python 2 Numbapro/Accelerate 系统上没有错误。
可能是用于 运行 代码的特定系统的容量不是很大,并且正在使用 3200 万个元素向量触发显示驱动程序看门狗或可用内存错误。减小输入数据的大小允许代码正确 运行。
[此答案由评论组成并添加为社区 wiki 条目以将此问题从未回答列表中移除]
你能帮我理解如何在 Python 中编写 CUDA 内核吗? AFAIK,numba.vectorize 可以在 cuda,cpu,并行(multi-cpus) 上执行, 基于 目标 。但是 target='cuda' 需要设置 CUDA 内核。
主要问题是互联网上的许多示例和答案都与 已弃用 NumbaPro 库相关,因此很难遵循 未更新 WIKIs,特别是如果你是新手。
我有:
- 最新的 Anaconda (v2)
- 最新的 Numba (v0.25)
- 最新的 CUDA 工具包 (v7)
这是我遇到的错误:
numba.cuda.cudadrv.driver.CudaAPIError: 1 Call to cuLaunchKernel results in CU DA_ERROR_INVALID_VALUE
import numpy as np
import time
from numba import vectorize, cuda
@vectorize(['float32(float32, float32)'], target='cuda')
def VectorAdd(a, b):
return a + b
def main():
N = 32000000
A = np.ones(N, dtype=np.float32)
B = np.ones(N, dtype=np.float32)
start = time.time()
C = VectorAdd(A, B)
vector_add_time = time.time() - start
print "C[:5] = " + str(C[:5])
print "C[-5:] = " + str(C[-5:])
print "VectorAdd took for % seconds" % vector_add_time
if __name__ == '__main__':
main()
所发布的代码是正确的,并且 运行 在 Python 2 Numbapro/Accelerate 系统上没有错误。
可能是用于 运行 代码的特定系统的容量不是很大,并且正在使用 3200 万个元素向量触发显示驱动程序看门狗或可用内存错误。减小输入数据的大小允许代码正确 运行。
[此答案由评论组成并添加为社区 wiki 条目以将此问题从未回答列表中移除]