Linux에서 아주 기본적인 안녕하세요 세계 수준의 Cuda 프로그램을 컴파일하고 싶습니다. 리눅스에서 Cuda 컴파일을위한 매우 간단한 Makefile을 만들려면 어떻게해야합니까?
당신이 컴파일 나에게 간단한 Makefile을 쓸 수 helloWorld.h :
- 커널 : helloWorld.cu
- 주요 방법 : helloWorld.cpp
- 일반적인 헤더 나는 세 개의 파일이 이 nvcc 및 g ++ 함께?
감사합니다,
가보
Linux에서 아주 기본적인 안녕하세요 세계 수준의 Cuda 프로그램을 컴파일하고 싶습니다. 리눅스에서 Cuda 컴파일을위한 매우 간단한 Makefile을 만들려면 어떻게해야합니까?
당신이 컴파일 나에게 간단한 Makefile을 쓸 수 helloWorld.h :
감사합니다,
가보
내 변형입니다. 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는 들어 본 적이 있지만, X.cu가 너무 helloWorld.cu 및 인 helloWorld를 가지고, XO로 컴파일하도록되어있는 것처럼 온라인 문서에서 보인다. cpp는 좋은 생각이 아닙니다. 내가 "커널"helloKernel.cu의 이름을 바꿀 수 있습니다 귀하의 허락으로,이 작동합니다 :
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]
(. 그 선행 공백이 탭 참고)이 작동하는 경우
을, 야바위꾼 버전을 사용해 :
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 –