【问题标题】:How should a very simple Makefile look like for Cuda compiling under linux一个非常简单的 Makefile 应该如何在 linux 下编译 Cuda
【发布时间】:2010-12-09 02:03:04
【问题描述】:

我想在 Linux 下编译一个非常基本的 hello world 级别的 Cuda 程序。我有三个文件:

  • 内核:helloWorld.cu
  • 主要方法:helloWorld.cpp
  • 通用头文件:helloWorld.h

你能给我写一个简单的 Makefile 来用 nvcc 和 g++ 编译它吗?

谢谢,
嘉柏

【问题讨论】:

标签: compilation cuda makefile gpgpu


【解决方案1】:

我以前从未听说过 Cuda,但从在线文档看来,X.cu 似乎应该被编译成 X.o,因此拥有 helloWorld.cu 和 helloWorld.cpp 并不是一个好主意。征得您的许可,我将重命名“内核”helloKernel.cu,这样应该可以:

NVCC = nvcc helloWorld.o:helloWorld.cpp helloWorld.h $(NVCC) -c %&lt -o $@ helloKernel.o:helloKernel.cu $(NVCC) -c %&lt -o $@ helloWorld: helloWorld.o helloKernel.o $(NVCC) %^ -o $@

(注意那些前导空格是制表符。)

如果可行,请尝试更流畅的版本:

NVCC = nvcc helloWorld.o: %.o : %.cpp %.h helloKernel.o: %.o: %.cu %.o: $(NVCC) -c %&lt -o $@ helloWorld: helloWorld.o helloKernel.o $(NVCC) %^ -o $@

【讨论】:

  • 可以在普通的cpp文件上使用nvcc吗?
  • 我无权访问 nvcc,所以我不能确定,但​​根据文档,是的。对于普通的编译器任务,nvcc 将工作交给像 g++ 这样的标准编译器。
【解决方案2】:

以防万一,这是我的变体。我用它在 Mac 上编译 CUDA 项目,但我认为它也适合 Linux。它需要 CUDA SDK。

BINDIR = ./ # places compiled binary in current directory
EXECUTABLE := helloWorld

CCFILES := helloWorld.cpp
CUFILES := helloWorld.cu

# an ugly part - setting rootdir for CUDA SDK makefile
# look for common.mk - I don't know where SDK installs it on Linux -
# and change ROOTDIR accordingly 
ROOTDIR := /Developer/GPU\ Computing/C/common

include $(ROOTDIR)/../common/common.mk

【讨论】:

  • 我知道这篇文章的发布时间,但这些信息对于开始使用 CUDA = 5.x,不再需要/鼓励使用 common.mk,因为据说所有 Makefile 都是自包含的(s.也是 Changelog)
【解决方案3】:

我的版本,详细但透明:

我的应用程序:myapp.o g++ -fPIC -o $@ $

【讨论】:

    【解决方案4】:

    这是我当前项目的示例。如您所见,有一些 OpenGL 库

    ce : cudaExample.c cudaExample.h
        cp cudaExample.c cudaExample.cu
        /usr/local/cuda/bin/nvcc -arch=sm_20 -o ce -lglut -lGL -lGLU -lXext -lXmu -lX11 -lm  cudaExample.cu
    

    然后运行make ce./ce

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-28
      • 1970-01-01
      • 2010-12-01
      • 1970-01-01
      • 2013-06-30
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多