Linux에서 Cuda 컴파일을 위해 매우 간단한 Makefile이 어떻게 생겼습니까?

StackOverflow https://stackoverflow.com/questions/1607015

문제

Linux에서 매우 기본적인 Hello World Level Cuda 프로그램을 컴파일하고 싶습니다. 세 가지 파일이 있습니다.

  • 커널 : helloworld.cu
  • 주요 방법 : helloworld.cpp
  • 공통 헤더 : Helloorld.h

NVCC 및 G ++로 이것을 컴파일하기 위해 간단한 makefile을 작성해 주시겠습니까?

감사,
가버

도움이 되었습니까?

해결책

만일 경우, 여기 내 변형이 있습니다. 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가 XO로 컴파일되는 것처럼 보이므로 Helloworld.cu 및 HelloWorld.cpp를 갖는 것은 좋은 생각이 아닙니다. 귀하의 권한을 사용하면 "Kernel"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 $@

내 버전, 장점이지만 투명합니다.

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

# 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 $@ -c $<

다음은 내 현재 프로젝트가 어떻게 보이는지 예입니다. 보시다시피 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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top