Problema de Vinculação do Cuda 5.0
Eu estou apenas tentando construir um projeto antigo meu usando o cuda 5.0 preview. Eu recebo um erro ao ligar, dizendo-me que certas funções cuda não podem ser encontradas. Por exemplo:
undefined reference to 'cudaMalloc'
.
Meu comando de vinculação inclui as seguintes opções para cuda:
-L / usr / local / cuda / lib64 -L / home / myhome / NVIDIA_CUDA_Samples / C / lib -L / home / myhome / NVIDIA_CUDA_Samples / C / common / lib / linux -lcudart
ls -lah /usr/local/cuda/lib64/
me dá 8 bibliotecas cuda incluindo libcudart.so.5.0.7 com links simbólicos usando apenas a terminação .so-file.
ls /home/myhome/NVIDIA_CUDA_Samples/C/lib/
me dá um diretório vazio, o que é meio estranho?
ls /home/myhome/NVIDIA_CUDA_Samples/C/common/lib/linux/
me dá dois diretórios: i686 e x86_64 ambos contendo apenas libGLEW.a
Não tenho idéia de qual caminho procurar uma solução. Qualquer ajuda é apreciada!
EDITAR:
Aqui está o meu comando de ligação completo (TARGET_APPLICATION é meu binário e x86_64 / Objectfiles.o significa todos os (23) arquivos de objeto, incluindo o arquivo de objeto compilado com nvcc):
/home/myhome/nullmpi-0.7/bin/mpicxx -CC=g++ -I. -I/home/myhome/nullmpi-0.7/src -I/usr/lib/openmpi/include -L/usr/local/cuda/lib64 -L/home/myhome/NVIDIA_CUDA_Samples/C/lib -L/home/myhome/NVIDIA_CUDA_Samples/C/common/lib/linux -lcudart -o TARGET_APPLICATION x86_64/Objectfiles.o /usr/lib/liblapack.so /usr/lib/libblas.so /home/myhome/nullmpi-0.7/lib/libnullpmpi.a -lm
eu usonullmpi para compilação e ligação (o projeto usa MPI e CUDA), que usa internamenteg++
como pode ser visto por-CC=g++
Eu queria manter essas coisas fora.
O comando de compilação para o meu arquivo de objeto cuda:
/usr/local/cuda/bin/nvcc -c -arch=sm_21 -L/home/myhome/NVIDIA_CUDA_Samples/C/lib -O3 kernelwrapper.cu -o x86_64/kernelwrapper.RELEASE.2.o
echo $LD_LIBRARY_PATH
resulta em:
/usr/local/cuda/lib64:/usr/local/cuda/lib:
echo $PATH
resulta em:
outras opções:/usr/local/cuda/bin:/home/myhome/nullmpi-0.7/bin
Estou construindo 64 bits. Por uma questão de completude estou construindo no Ubuntu 12.04. (64 bits)Construir as amostras CUDA funciona bem.
SOLUÇÃO (graças a talonmies para me apontar para isso):
Este é o comando de vinculação correto:
/home/myhome/nullmpi-0.7/bin/mpicxx -CC=g++ -I. -I/home/myhome/nullmpi-0.7/src -I/usr/lib/openmpi/include -L/usr/local/cuda/lib64 -L/home/myhome/NVIDIA_CUDA_Samples/C/lib -L/home/myhome/NVIDIA_CUDA_Samples/C/common/lib/linux -o TARGET_APPLICATION x86_64/Objectfiles.o /usr/lib/liblapack.so /usr/lib/libblas.so /home/myhome/nullmpi-0.7/lib/libnullpmpi.a -lcudart -lm