0

我一直在尝试使用 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 的测试,我不会收到任何错误!

4

2 回答 2

4

当您没有链接到cuda.lib.

于 2013-10-04T05:26:20.413 回答
1

对于cuda.lib像我这样不知道如何添加到链接过程中的人(使用 VS2017):

  1. 右键单击项目,转到Properties菜单底部

  2. Linker-->Input

  3. Additional Dependencies中,确保它cuda.lib在那里。就我而言,这解决了 2019 链接错误。

  4. 此外,如果您单击edit下拉菜单中的项目,则有一个Macros按钮可以单击并查看 VS 项目中的所有预定义宏。

于 2019-04-11T11:54:06.840 回答