你能帮我理解如何用Python编写CUDA内核吗? AFAIK, numba.vectorize 可以基于 target 在cuda,cpu,parallel(multi-cpus)上执行 . 但是target = 'cuda'需要设置CUDA内核 .
主要问题是很多例子,互联网上的答案与 deprecated NumbaPro库有关,所以很难遵循 not-updated WIKIs,特别是如果你是新手 .
我有:
最新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()