在尝试编译代码时,我收到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都很陌生,所以我或许可能在某个地方犯了一个非常愚蠢的错误。我将不胜感激任何帮助。
答案 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版