cuda独立汇编“;“未定义的方法”;
我在使用cuda c进行单独编译时遇到问题。 我有两个文件。nsim.cu和methods.cu 在methods.cu文件中,我有所有的内核函数“\uu\u global\uu” 我的nsim.cu调用这些函数。我的问题是,当试图调用对象文件中的方法时,我得到一个cuda独立汇编“;“未定义的方法”;,c,cuda,nvcc,object-files,C,Cuda,Nvcc,Object Files,我在使用cuda c进行单独编译时遇到问题。 我有两个文件。nsim.cu和methods.cu 在methods.cu文件中,我有所有的内核函数“\uu\u global\uu” 我的nsim.cu调用这些函数。我的问题是,当试图调用对象文件中的方法时,我得到一个 error : "identifier "MyMethod" is undefined" 以下是我如何使用nvcc: NVCC= /usr/local/cuda-5.5/bin/nvcc NVCCFLAGS= -arch=sm_3
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包含我的main方法,并且是编译时抛出错误的地方
谢谢你的任何意见 我通过将所有设备函数移动到单独的对象文件中,然后使用lcudadebrt库进行编译,解决了我的问题。我的新生成文件如下所示:
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}