我在使用cuda c单独编译时遇到问题。
我有2个档案。 nsim.cu和Methods.cu。
在我的methods.cu文件中,我拥有所有的内核函数“ _ _global _ _”
我的nsim.cu调用了这些函数。我的问题是,当尝试在目标文件中调用方法时,
error : "identifier "MyMethod" is undefined"
这是我使用nvcc的方式:
NVCC= /usr/local/cuda-5.5/bin/nvcc
NVCCFLAGS= -arch=sm_35 -dc
LIBS= -lglut -lGL -lcurand
OBJECTS = nsim.o methods.o
go:
rm -f ${OBJECTS}
${NVCC} ${NVCCFLAGS} methods.cu ${LIBS}
${NVCC} ${NVCCFLAGS} nsim.cu ${LIBS}
${NVCC} ${NVCCFLAGS} ${OBJECTS} -o nsim
nsim.cu包含我的主要方法,并且是在编译时引发错误的位置
感谢您的输入!
最佳答案
通过lcudadebrt库进行编译时,我通过将所有设备功能移到单独的目标文件中来解决问题。我的新makefile如下所示:
NVCC= /usr/local/cuda-5.5/bin/nvcc
NVCCFLAGS= -arch=sm_35
LIBS= -lglut -lGL -lcurand -lcudadevrt
OBJECTS = nsim.o cuda0.o cuda1.o cuda2.o cuda3.o cuda4.o
go:
rm -f ${OBJECTS}
${NVCC} ${NVCCFLAGS} -dc cuda0.cu ${LIBS}
${NVCC} ${NVCCFLAGS} -dc cuda1.cu ${LIBS}
${NVCC} ${NVCCFLAGS} -dc cuda2.cu ${LIBS}
${NVCC} ${NVCCFLAGS} -dc cuda3.cu ${LIBS}
${NVCC} ${NVCCFLAGS} -dc cuda4.cu ${LIBS}
${NVCC} ${NVCCFLAGS} -dc nsim.cu ${LIBS}
${NVCC} ${NVCCFLAGS} ${OBJECTS} -o nsim ${LIBS}