我在使用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包含我的主要方法,并且是在编译时引发错误的位置

谢谢您的投入!

===============>>#1 票数:1 已采纳

通过将所有设备功能移到单独的目标文件中,然后使用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}

  ask by Chris Phillips translate from so

未解决问题?本站智能推荐: