你能帮我理解如何用 Python 编写 CUDA 内核吗?AFAIK, numba.vectorize可以基于target在cuda, cpu, parallel(multi-cpus)上执行。但是target='cuda'需要设置 CUDA 内核。
主要问题是互联网上的许多示例和答案都与已弃用的 NumbaPro 库有关,因此很难遵循诸如未更新的 WIKI 之类的问题,尤其是如果您是新手。
我有:
- 最新的 Anaconda (v2)
- 最新的 Numba (v0.25)
- 最新的 CUDA 工具包 (v7)
这是我得到的错误:
numba.cuda.cudadrv.driver.CudaAPIError: 1调用 cuLaunchKernel 导致 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()