为什么我在CUDA中为cuMemcpyDtoH_v2获取了未定义的符号错误

时间:2018-06-08 18:26:12

标签: python cuda linker-errors

在尝试编译代码时,我收到cuMemcpyDtoH_v2的未定义符号错误。我想我的问题是cuMemcpyDtoH_v2定义在哪里?我认为它将在cuda运行时环境中定义,但似乎并非如此。这是我的代码:

#include </usr/local/cuda/include/cufft.h>
#include </usr/local/cuda/include/cuda.h>

void main()
{
   ...
   cuMemcpyDtoH_v2(v1, v2, ds);
   ...
}

编译我正在使用python disutils.core setup.py,因为我将python代码链接到cuda代码并创建Python C扩展。

python myFunc.py -build_ext --inplace -lcudart -lcufft -L"/usr/local/cuda/lib64/"

myFunc.py调用disutils.core.setup()命令,该命令用于编译python扩展。

我假设cuMemcpyDtoH_v2将在cuda运行时环境中定义,我认为我正在使用“-lcudart”命令进行链接,但可能情况并非如此。

我对C ++编程和Cuda都很陌生,所以我或许可能在某个地方犯了一个非常愚蠢的错误。我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分:1)

感谢Robert Crovella,我能够让这个工作。根据Robert函数调用,以cu开头通常链接到驱动程序API,以cuda开头的函数通常链接到CUDA rumtime API。所以我需要使用以下命令链接到cuda驱动程序API:

python myfunc.py -build-ext --inplace -lcudart -lcudafft -L"/usr/local/cuda/lib64" -lcuda -L"/usr/local/cuda/lib64/stubs/"

注意:我使用的是CUDA 9.1版