【问题标题】:CUDA: Creating object with G++ linker and cuda object filesCUDA:使用 G++ 链接器和 cuda 目标文件创建对象
【发布时间】:2011-02-17 17:01:26
【问题描述】:

我将普通的 cpp 文件编译为 .o,将我的 cuda .cu 文件编译为 .co

我想链接这些,以便我可以从我的普通 C++ 文件中调用 cuda 的东西

这是 Make 正在运行的链接器命令:

g++ -I ../readers/ -I../writers -I../common/ -I /home/dcole/software/xerces-c-3.1.1/src -I /home/dcole/NVIDIA_GPU_Computing_SDK/C/common/inc/ -I /usr/local/cuda/include -O3 -fPIC -fopenmp -DFIX_PAULI -DFIX_YAMA -DUSING_CUDA -o YamaguchiGPU YamaguchiMain.o YamaguchiDecomp.o cuYamaguchi.co -L/usr/lib64/ ../../lib/IDT.a ../../lib/Linux/libxerces-c.a ../../lib/Linux/libfftw3f.a -lcurl -lidn -ldl -lssl -lm -lpthread -lcuda -L/usr/local/cuda/lib64/libcudart.so 

所以我肯定将 cuda 和 cudart 联系起来,但我明白了:

cuYamaguchi.co: In function `__sti____cudaRegisterAll_46_tmpxft_00003190_00000000_4_cuYamaguchi_cpp1_ii_init_gpu()':
tmpxft_00003190_00000000-1_cuYamaguchi.cudafe1.cpp:(.text+0x1b4): undefined reference to `__cudaRegisterFatBinary'
tmpxft_00003190_00000000-1_cuYamaguchi.cudafe1.cpp:(.text+0x20f): undefined reference to `__cudaRegisterFunction'

【问题讨论】:

    标签: c++ linker g++ cuda


    【解决方案1】:

    Cuda 文件的链接没有问题,但您似乎忘记定义一些必要的函数(如 cudaRegisterFatBinary)。

    【讨论】:

    • 所以,这些函数是 cuda API 的一部分。我的源 .cu 文件包含 cuda.h 和 cuda_runtime.h
    【解决方案2】:

    升级到 gcc 4.7.0 或更高版本应该可以解决这个可怕的链接器问题。

    【讨论】:

      【解决方案3】:

      我在_libcudart.so_ 的链接器中使用了绝对搜索路径。我将-L 更改为仅指向该文件夹,然后添加了-libcudart,以便它会在该文件夹中搜索该库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-15
        • 2011-04-27
        • 2011-07-14
        • 2012-08-30
        相关资源
        最近更新 更多