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,特别是如果你是新手。

我有:

这是我遇到的错误:

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 条目以将此问题从未回答列表中移除]