我有一个 CUDA 内核,我想从 C 文件启动。我将内核放在一个 .cu 文件中,并制作了一个调用内核的包装函数。然后我制作了一个头文件,它简单地声明了包装函数。在我的 C 文件中,我包含了头文件并调用了包装函数。
如果我想将这些文件编译成对象然后链接它们,我的 makefile 会是什么样子?
最佳答案
nvcc 使用文件扩展名来自动确定语言和编译轨迹。所以你实际上只需要一个编译语句,它可以很简单:
application: foo.cu bar.c
nvcc $(CUDAFLAGS) -XComplier=$(CFLAGS) -Xlinker=$(LDFLAGS) -o $@ $^
[免责声明:在浏览器中编写,不包含选项卡,从未测试过,具体形式将取决于所使用的 make 风格,使用风险自负]
在 CUDAFLAGS
中定义您需要的任何 CUDA 特定选项。我认为它可以在不将 CFLAGS
和 LDFLAGS
变量括在引号中的情况下工作,但您可能需要对此进行一些试验。
关于c++ - 编译 CUDA 文件、C 文件和 Cuda 头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15859471/