cuda单独编译 "undefined methods"

标签 c cuda nvcc object-files

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

关于cuda单独编译 "undefined methods",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23176377/

相关文章:

c++ - 使用 MinGW windows 7 将静态库 .lib 转换为动态库 .dll

windows - 有没有办法在 Windows 7/8 中关闭 Windows 显示驱动程序模型 (WDDM)?

c++ - 在 C++ 问题中链接 Cuda

c - 在cuda设备函数中使用省略号

compiler-errors - 使用nvcc执行OpenMPI代码时出错(OPAL错误)

c - 传递给 pthread_create 的值改变了

c - zlib输出内存缓冲区大小错误

C编译器优化(gcc) : Automatically Inline a non-static function vs static function

cuda - 何时调用 cudaDeviceSynchronize?

compiler-errors - “adadelta_solver”的Caffe编译错误