Linux上で非常に基本的なhelloワールドレベルのCudaプログラムをコンパイルしたいと思います。Linux上でのCudaコンパイルのような非常にシンプルなMakefileの外観
- カーネル:helloWorld.cu
- 主な方法:helloWorld.cpp
- 共通ヘッダ:helloWorld.h
は、あなたがコンパイルする私に簡単なMakefileを書くことができ、私は3つのファイルを持っていますこれはnvccとg ++でですか?
おかげで、
ガボール
Linux上で非常に基本的なhelloワールドレベルのCudaプログラムをコンパイルしたいと思います。Linux上でのCudaコンパイルのような非常にシンプルなMakefileの外観
は、あなたがコンパイルする私に簡単なMakefileを書くことができ、私は3つのファイルを持っていますこれはnvccとg ++でですか?
おかげで、
ガボール
場合によっては、ここに私の変形があります。 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
は私が前にクーダ聞いたことがないが、X.cuはそうhelloWorld.cuとのhelloWorldを持つ、Xoをにコンパイルされることになっているかのようにオンラインドキュメントからそれが見えます。 cppは良い考えではありません。
NVCC = nvcc helloWorld.o: helloWorld.cpp helloWorld.h $(NVCC) -c %< -o [email protected] helloKernel.o: helloKernel.cu $(NVCC) -c %< -o [email protected] helloWorld: helloWorld.o helloKernel.o $(NVCC) %^ -o [email protected]
(それらの先頭のスペースがタブであることに注意してください。)
をそれが動作する場合、スリッカーバージョンを試してみてください:あなたの許可を得て、私は、これは動作するはずです、「カーネル」helloKernel.cuの名前を変更します
NVCC = nvcc helloWorld.o: %.o : %.cpp %.h helloKernel.o: %.o : %.cu %.o: $(NVCC) -c %< -o [email protected] helloWorld: helloWorld.o helloKernel.o $(NVCC) %^ -o [email protected]
私のバージョン、冗長なく、透明:ここ
myapp: myapp.o g++ -fPIC -o [email protected] $< -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 [email protected] -c $< matrixMul: matrixMul.o g++ -fPIC -o [email protected] $< -L /usr/local/cuda/lib -lcudart # It MUST be named .cu or nvcc compiles as regular C !!! (no __global__) matrixMul.o: matrixMul.cu /usr/local/cuda/bin/nvcc --compiler-options -fno-strict-aliasing \ -I/usr/local/cuda/include \ -DUNIX -O2 -o [email protected] -c $<
は私の現在のプロジェクトがどのように見えるかの例です。あなたが見ることができるように、その後、
ください
make ce
と./ce
を実行して、[作成]タグであなたのメイク関連の質問にタグを付けるいくつかのOpenGLライブラリあります。根拠:http://meta.stackexchange.com/questions/24030/why-do-they-specify-makefile-tag-instead-of-make/26567#26567 –