使用CuPy RawKernel遇CUDA_ERROR_NOT_FOUND错误,空函数也无法编译
解决CuPy RawKernel的CUDA_ERROR_NOT_FOUND问题
问题根源:你创建
cp.RawKernel时指定的函数名与CUDA代码中定义的全局函数名不匹配。CUDA代码里的全局函数是none,但初始化RawKernel时第二个参数传的是"null",CuPy无法找到名为null的符号,因此抛出CUDA_ERROR_NOT_FOUND错误。修复方案:确保
cp.RawKernel的第二个参数(目标CUDA函数名)与代码中__global__修饰的函数名完全一致。
修正后的代码示例:
import cupy as cp none = """ __global__ void none() { }; """ # 将第二个参数改为与CUDA函数名一致的"none" null = cp.RawKernel(none, "none") null.compile()
补充说明:cupyx.jit.RawKernel装饰器可以正常工作,是因为它会自动关联装饰的Python函数名和生成的CUDA全局函数名,不需要手动指定,而cp.RawKernel需要显式匹配两者的名称。
内容的提问来源于stack exchange,提问作者user54188
相关产品推荐
相关产品推荐

