Skip to content

Instantly share code, notes, and snippets.

@miettal
Created December 24, 2012 18:12
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miettal/4370260 to your computer and use it in GitHub Desktop.
Save miettal/4370260 to your computer and use it in GitHub Desktop.
CUDA用簡易Makefile
#-------------------------------------------------------------------------------
# マクロ
#====ここから===================================================================
# オブジェクトファイル(ソースコード*.cu,*.c,*.cppを*.oに書き換えたもの)
OBJS = hello.o
# 実行ファイル名
BIN = hello
# CUDA環境のインストールパス
CUDA_PATH = /usr/local/cuda/
# デバイス認識用スクリプトのパス(CUI環境では必須,GUI環境ならばコメントアウト)
RECOGINIZE_SCRIPT = /home/miettal/Dropbox/bin/recoginize.sh
# OSの指定 LinuxかMacかを書く
OS = Mac
# 何ビットCPUか指定 32か64かを書く Macの場合は書かなくて良い
CPU_BIT = 64
#====ここまでを書き換える====================================================
# CUDAコンパイラ
NVCC = $(CUDA_PATH)/bin/nvcc
# CUDAインクルードディレクトリ
CUDA_INCLUDE_DIR = $(CUDA_PATH)/include/
# CUDAライブラリディレクトリ(32bitの場合はlib,64bitの場合はlib64)
# 手動でしたい場合はコメントを外して,記述する.
#CUDA_LIBRARY_DIR = $(CUDA_PATH)/lib/
# C++コンパイラ
#(C++対応GCC 4.4を指定してください.そうしないとリンクでエラーが出ます.)
# インストール方法 例 Debian系 $sudo apt-get install gcc-4.4 g++-4.4
# 例 mac XCODEをインストールする
# 手動でしたい場合はコメントを外して,記述する.
#CXX = gcc-4.4
ifeq ($(OS), Linux)
ifndef CXX
CXX = gcc-4.4
endif
ifndef CUDA_LIBRARY_DIR
ifeq ($(CPU_BIT), 32)
CUDA_LIBRARY_DIR = $(CUDA_PATH)/lib/
else
CUDA_LIBRARY_DIR = $(CUDA_PATH)/lib64/
endif
endif
else
ifeq ($(OS), Mac)
ifndef CXX
CXX = gcc
endif
ifndef CUDA_LIBRARY_DIR
CUDA_LIBRARY_DIR = $(CUDA_PATH)/lib/
endif
endif
endif
# コンパイルオプション
CFLAGS = -I$(CUDA_INCLUDE_DIR)
# リンクオプション
LDFLAGS = -L$(CUDA_LIBRARY_DIR) -lcudart
#-------------------------------------------------------------------------------
# 生成ルール
# コンパイル
all:$(BIN)
# 実行
run:$(BIN)
$(RECOGINIZE_SCRIPT)
./$(BIN)
# 削除
clean:
rm $(OBJS)
rm $(BIN)
# オブジェクトファイルをリンクし,実行ファイルを作成する.
$(BIN):$(OBJS)
$(CXX) $(CFLAGS) $(LDFLAGS) $(OBJS) -o $(BIN)
#-------------------------------------------------------------------------------
# サフィックスルール
# サフィックス
.SUFFIXES: .o .cpp .cu
# cuファイルをnvccでcppファイルに変換
.cu.cpp:
$(NVCC) --cuda $< -o $@
# cppファイルをコンパイルし,オブジェクトファイルを作成する.
.cpp.o:
$(CXX) $(CFLAGS) -c $<
# cファイルをコンパイルし,オブジェクトファイルを作成する.
.c.o:
$(CXX) $(CFLAGS) -c $<
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment