我一直在尝试使用CUDA驱动程序API通过以下代码加载.ptx文件及其中的函数:
CUdevice device;
cuDeviceGet(&device,0);
CUcontext ctx;
cuCtxCreate(&ctx,0,device);
CUmodule mod;
cuModuleLoad(&mod,"kernel.ptx");
CUfunction func;
cuModuleGetFunction(&func,mod,"kernel");
CUdeviceptr ints;
cuMemAlloc(&ints,(sizeof(int)*30));
但是在编译时我遇到了这些错误:
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuDeviceGet@8 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuCtxCreate_v2@12 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuModuleLoad@8 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuModuleGetFunction@12 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuMemAlloc_v2@8 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuMemcpyHtoD_v2@12 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuMemcpyDtoH_v2@12 referenced in function _main
1>kernel.cu.obj : error LNK2019: unresolved external symbol _cuLaunchKernel@44 referenced in function _main
我在VS2012中创建了一个新的CUDA 5.5项目,并将其直接输入到生成的.cu文件中,但是在编译时我遇到了这些错误。如果我做一个不使用驱动程序api的测试我没有收到任何错误!
答案 0 :(得分:4)
当您没有链接cuda.lib
时会发生这些错误。
答案 1 :(得分:0)
对于那些不知道如何将cuda.lib
添加到像我这样的链接过程中的人(使用VS2017):
右键单击该项目,转到菜单底部的Properties
转到Linker-->Input
在Additional Dependencies
中,确保cuda.lib
在此处。就我而言,这解决了2019年链接错误。
此外,如果单击下拉菜单中的edit
项,则有一个Macros
按钮,您可以单击并查看VS项目中的所有预定义宏。 / p>