首页 文章

CUDA-Python:如何在Python中启动CUDA内核(Numba 0.25)?

提问于
浏览
3

你能帮我理解如何用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()

1 回答

  • 1

    发布的代码是正确的,可以在Python 2 Numbapro / Accelerate系统上运行而不会出错 .

    可能是用于运行代码的特定系统的容量不是很大,并且使用3200万个元素向量命中显示驱动程序看门狗或空闲内存错误 . 减小输入数据的大小允许代码正确运行 .

    [这个答案汇总了评论,并作为社区维基条目添加,以便将这个问题从未答复的清单中删除]

相关问题