I am trying to incorporate the cuPrintf example from NVIDIA in my CUDA CMake project but encountered some problems.
I downloaded the cuPrintf.cu and cuPrintf.cuh from the NVIDIA website.
My program compiles and runs fine, when I do not use cuPrintf.
My CMakeLists.txt for creating a static library out of my CUDA Code looks like this
SET(MyProjectCUDA_SRCS
test.cu
)
CUDA_ADD_LIBRARY(MyProjectCUDA ${MyProjectCUDA_SRCS})
TARGET_LINK_LIBRARIES(MyProjectCUDA ${CUDA_LIBRARIES})
If I now add cuPrintf.cu to MyProjectCUDA_SRCS I get the following error when calling make:
[ 72%] Built target MyProjectGUI
[ 81%] Building NVCC (Device) object src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
-- Removing /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
/usr/bin/cmake -E remove /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
-- Generating dependency file: /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.NVCC-depend
/opt/cuda/bin/nvcc /local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA/cuPrintf.cu --host-compilation C -m64 -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -Xcompiler ,\"-g\" -DNVCC -M -o /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.NVCC-depend -I/opt/cuda/include -I/opt/net/gcc41/boost/include -I/opt/cuda/include -I/usr/include -I/usr/include/opencv -I/usr/include/qt4 -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/include -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/app -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyProjectGUI -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyProjectGUI -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtCore
-- Generating temporary cmake readable file: /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend.tmp
/usr/bin/cmake -D input_file:FILEPATH=/local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.NVCC-depend -D output_file:FILEPATH=/local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend.tmp -P /local/Testprograms/CUDA/BasicCMakeQTCUDA/CMakeModules/make2cmake.cmake
-- Copy if different /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend.tmp to /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend
/usr/bin/cmake -E copy_if_different /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend.tmp /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend
-- Removing /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend.tmp and /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.NVCC-depend
/usr/bin/cmake -E remove /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.depend.tmp /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/MyProjectCUDA_generated_cuPrintf.cu.o.NVCC-depend
-- Generating /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
/opt/cuda/bin/nvcc /local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA/cuPrintf.cu --host-compilation C -m64 -DQT_DLL -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_XML_LIB -DQT_CORE_LIB -Xcompiler ,\"-g\" -DNVCC -c -o /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o -I/opt/cuda/include -I/opt/net/gcc41/boost/include -I/opt/cuda/include -I/usr/include -I/usr/include/opencv -I/usr/include/qt4 -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/include -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/app -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyProjectGUI -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyProjectGUI -I/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA -I/usr/include/qt4/QtOpenGL -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtCore
/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA/cuPrintf.cu(308): warning: function "copyArg(char *, const char *, char *)" was declared but never referenced
/opt/cuda/bin/../include/cuda_runtime.h:184: error: inline function ‘_Z18cudaMemcpyToSymbolI19cuPrintfRestrictionE9cudaErrorRK
T_PKvmm14cudaMemcpyKind’ cannot be declared weak
/opt/cuda/bin/../include/cuda_runtime.h:184: error: inline function ‘_Z18cudaMemcpyToSymbolIPVcE9cudaErrorRKT_PKvmm14cudaMemcp
yKind’ cannot be declared weak
/opt/cuda/bin/../include/cuda_runtime.h:184: error: inline function ‘_Z18cudaMemcpyToSymbolIiE9cudaErrorRKT_PKvmm14cudaMemcpyK
ind’ cannot be declared weak
/opt/cuda/bin/../include/cuda_runtime.h:238: error: inline function ‘_Z20cudaMemcpyFromSymbolIPVcE9cudaErrorPvRKT_mm14cudaMemc
pyKind’ cannot be declared weak
/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA/cuPrintf.cu: In function ‘_Z16outputPrintfDataPcS_’:
/local/Testprograms/CUDA/BasicCMakeQTCUDA/src/libMyCUDA/cuPrintf.cu:643: warning: format not a string literal and no format arguments
/opt/cuda/bin/../include/cuda_runtime.h: At top level:
/opt/cuda/bin/../include/cuda_runtime.h:184: error: inline function ‘_Z18cudaMemcpyToSymbolI19cuPrintfRestrictionE9cudaErrorRK
T_PKvmm14cudaMemcpyKind’ cannot be declared weak
/opt/cuda/bin/../include/cuda_runtime.h:184: error: inline function ‘_Z18cudaMemcpyToSymbolIPVcE9cudaErrorRKT_PKvmm14cudaMemcp
yKind’ cannot be declared weak
/opt/cuda/bin/../include/cuda_runtime.h:184: error: inline function ‘_Z18cudaMemcpyToSymbolIiE9cudaErrorRKT_PKvmm14cudaMemcpyK
ind’ cannot be declared weak
/opt/cuda/bin/../include/cuda_runtime.h:238: error: inline function ‘_Z20cudaMemcpyFromSymbolIPVcE9cudaErrorPvRKT_mm14cudaMemc
pyKind’ cannot be declared weak
In file included from /tmp/tmpxft_00000eda_00000000-1_cuPrintf.cudafe1.stub.c:6,
from /opt/cuda/bin/../include/cuda_runtime.h:251:
/opt/cuda/bin/../include/crt/host_runtime.h:178: warning: ‘struct surfaceReference’ declared inside parameter list
/opt/cuda/bin/../include/crt/host_runtime.h:178: warning: its scope is only this definition or declaration, which is probably not what you want
-- Removing /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
/usr/bin/cmake -E remove /local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
CMake Error at MyProjectCUDA_generated_cuPrintf.cu.o.cmake:205 (message):
Error generating file
/local/Testprograms/CUDA/BasicCMakeQTCUDA/bin/src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o
make[2]: *** [src/libMyCUDA/./MyProjectCUDA_generated_cuPrintf.cu.o] Error 1
make[1]: *** [src/libMyCUDA/CMakeFiles/MyProjectCUDA.dir/all] Error 2
make: *** [all] Error 2
I heard that this might have something to do with the gcc compiler.
I am using Ubuntu 9.10 64-bit with gcc-4.4 and g+±4.4 and the CUDA 2.3 Toolkit.
But if I set
SET(CMAKE_CXX_COMPILER g++-4.3)
SET(CMAKE_C_COMPILER gcc-4.3)
The same error appears.