10

Linux で非常に基本的な hello world レベルの Cuda プログラムをコンパイルしたいと考えています。私は3つのファイルを持っています:

  • カーネル: helloWorld.cu
  • メインメソッド: helloWorld.cpp
  • 共通ヘッダー: helloWorld.h

これを nvcc と g++ でコンパイルするための簡単な Makefile を書いてくれませんか?

ありがとう、
ガボール

4

4 に答える 4

8

Cuda のことは聞いたことがありませんが、オンライン ドキュメントによると、X.cu は Xo にコンパイルされるように見えるため、helloWorld.cu と helloWorld.cpp を用意するのは得策ではありません。あなたの許可を得て、「カーネル」の名前を helloKernel.cu に変更します。これで動作するはずです。

NVCC = NVCC

helloWorld.o: helloWorld.cpp helloWorld.h
    $(NVCC) -c %< -o $@

helloKernel.o: helloKernel.cu
    $(NVCC) -c %< -o $@

helloWorld: helloWorld.o helloKernel.o
    $(NVCC) %^ -o $@

(先頭のスペースはタブであることに注意してください。)

それが機能する場合は、より洗練されたバージョンを試してください。

NVCC = NVCC

helloWorld.o: %.o : %.cpp %.h
helloKernel.o: %.o : %.cu

%.o:
    $(NVCC) -c %< -o $@

helloWorld: helloWorld.o helloKernel.o
    $(NVCC) %^ -o $@
于 2009-10-22T18:31:05.140 に答える
4

念のため、これが私のバリアントです。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
于 2009-11-13T06:26:01.907 に答える
2

私のバージョン、冗長だが透過的:

myapp: myapp.o
    g++ -fPIC -o $@ $< -L /usr/local/cuda/lib -lcudart

myapp.o: myapp.cu
    /usr/local/cuda/bin/nvcc --compiler-options -fno-strict-aliasing \
    -I/usr/local/cuda/include \
    -DUNIX -O2 -o $@ -c $<

matrixMul: matrixMul.o
    g++ -fPIC -o $@ $< -L /usr/local/cuda/lib -lcudart

# .cu という名前にする必要があります。そうしないと、nvcc は通常の C としてコンパイルされます !!! (__global__ なし)
matrixMul.o: matrixMul.cu
    /usr/local/cuda/bin/nvcc --compiler-options -fno-strict-aliasing \
    -I/usr/local/cuda/include \
    -DUNIX -O2 -o $@ -c $<
于 2010-01-09T17:59:36.237 に答える
1

これが私の現在のプロジェクトがどのように見えるかの例です。ご覧のとおり、いくつかの 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

于 2012-05-03T18:26:21.113 に答える