Неопределенные методы отдельной компиляции cuda

У меня проблемы с использованием отдельной компиляции с помощью cuda c. У меня есть 2 файла. nsim.cu и методы.cu.

в моих файлах method.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 содержит мой основной метод, и именно здесь возникают ошибки во время компиляции.

спасибо за любой вклад!


person Chris Phillips    schedule 19.04.2014    source источник


Ответы (1)


Я решил свою проблему, переместив все функции моего устройства в отдельные объектные файлы, а затем скомпилировав их с помощью библиотеки lcudadebrt. мой новый make-файл выглядит так:

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}
person Chris Phillips    schedule 19.04.2014