开发者

CUDA: Creating object with G++ linker and cuda object files

开发者 https://www.devze.com 2023-02-10 22:13 出处:网络
I compiled my normal cpp files to .o, and my cuda .cu files to .co I want to link these so I can call the cuda stuff from my normal C++ file

I compiled my normal cpp files to .o, and my cuda .cu files to .co

I want to link these so I can call the cuda stuff from my normal C++ file

Here is my linker command that Make is running:

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 ../../l开发者_开发知识库ib/Linux/libxerces-c.a ../../lib/Linux/libfftw3f.a -lcurl -lidn -ldl -lssl -lm -lpthread -lcuda -L/usr/local/cuda/lib64/libcudart.so 

So I am definitly linking cuda, and cudart, but yet I get this:

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'


The Cuda file is being linked without problems but it looks like you might have forgotten to define some necessary function (like cudaRegisterFatBinary).


Upgrading to gcc 4.7.0 or higher should fix this horrid linker issue.


I was using an absolute search path in the linker to _libcudart.so_. I changed the -L to point to just the folder, then added -libcudart so it would search the folder for that lib.

0

精彩评论

暂无评论...
验证码 换一张
取 消