我在使用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}

10-07 16:33