Posted at

CUDAもcmakeでコンパイルする

More than 5 years have passed since last update.


CUDAのインストール(Fedora)

Fedoraだと公式でリポジトリ(rpmで配布されている)を取得した後、

yum install cuda

で入れると問題が少いと思う。現在(2014/8/21)Fedora20ではCUDA6.5が入る。

rpmfusionのnVidiaドライバーを使用してる場合は/etc/yum.repos.d/cuda.repoを書き換えて

標準で無効にしておくと問題が少い。


/etc/yum.repos.d/cuda.repo

[cuda]

name=cuda
baseurl=http://developer.download.nvidia.com/compute/cuda/repos/fedora20/x86_64
enabled=0 # 無効化
gpgcheck=1
gpgkey=http://developer.download.nvidia.com/compute/cuda/repos/GPGKEY

この場合

yum --enable-repo=cuda install cuda # install

yum --enable-repo=cuda update # update

とする必要がある。


cmakeでコンパイル

CUDAのコンパイルにはnvccを用いる。

nsightを使用したくない場合、cmakeを使えばいろいろ勝手に設定してくれる。

/usr/local/cuda/samples/0_Simple/vectorAdd/vectorAdd.cuあたりをとりあえずコピーしてくる。

vectorAdd/CMakeLists.txt

vectorAdd.cu

のようになっているとする。このvectorAdd.cuをコンパイルする最小のCMakeLists.txtは以下の通りだ:


vectorAdd/CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

find_package(CUDA REQUIRED)
cuda_add_executable(vectorAdd vectorAdd.cu)

これで

cmake .

make

とすればvectorAddがコンパイルされる。

せっかくなのでバージョン情報等も出してもいいだろう。


vectorAdd/CMakeLists.txt

cmake_minimum_required(VERSION 2.8)

find_package(CUDA REQUIRED)
message("-- CUDA --")
message("Version: " ${CUDA_VERSION})
message("Library: " ${CUDA_CUDA_LIBRARY})
message("Runtime: " ${CUDA_CUDART_LIBRARY})
cuda_add_executable(vectorAdd vectorAdd.cu)

他のオプションについては

cmake --help-module FindCUDA

とすれば見れる。