【问题标题】:cuda separate compilation "undefined methods"cuda 单独编译“未定义的方法”
【发布时间】:2014-04-20 07:06:10
【问题描述】:

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

感谢您的任何意见!

【问题讨论】:

    标签: c cuda nvcc object-files


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      • 2012-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多