Twitterに投稿 はてなブックマークに追加 Google Bookmarksに追加

目次 >> CUDA >> インストール(Mac OS X編)

CUDA - インストール(Mac OS X編)

NVIDIAのGPGPU開発環境であるCUDA(Compute unified device architecture)をインストールして、使ってみる。
使用機器はMacbook 2009年春。

CUDA2.3のインストール

CUDA2.3をMac OS X 10.6 Snow Leopardにインストールする。

Snow Leopardから、デフォルトのコンパイラが従来のgcc4.0からgcc 4.2に変わったがCUDA2.3はまだgcc4.2にうまく対応し切れていないので、インストール後、いくつかの作業が必要となる(後述)。

CUDA用ドライバのインストール

NVIDIAのサイトから、Mac用のドライバをダウンロードしてインストールする。ダウンロードしたファイルcudadriver_2.3.1a_macos.pkgをダブルクリックすると、インストールが始まる。

Continueをクリック、

Continueをクリック、

ライセンスに同意して、

すべてのユーザーにたいしてインストール。

Installをクリック。

しばらくの後、

インストールが完了する。

CUDA Toolkitのインストール

次に、CUDA Toolkitをインストールする。同じところからダウンロードしてきた、cudatoolkit_2.3a_macos_32.pkgをダブルクリックすると、

Continueをクリック、

インストール場所を選び、

Installをクリック。

しばらくの後、

インストールが完了する。

CUDA SDKのインストール

次に、CUDA SDKをインストールする。同じところからダウンロードしてきた、cudasdk_2.3a_macos.pkgをダブルクリックすると、

Continueをクリックし、

インストール場所を選択し、

Installをクリックする。

しばらくの後、

インストールが完了する。

各種設定

そして、~/.bash_profileにコンパイラのパス、ライブラリのパス、インクルードファイルの各種パスを追加する。CUDA2.3とCUDA2.2ではいくつかのフォルダの場所が変わっているので注意。具体的には、/Developer/CUDAであったものが、/Developer/GPU Computingになった。空白入りのフォルダはあまり好きではないのだが・・・。

export PATH=/usr/local/cuda/bin:$PATH
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
export C_INCLUDE_PATH="/Developer/GPU Computing/C/common/inc"
export CPLUS_INCLUDE_PATH="/Developer/GPU Computing/C/common/inc"

を追加する。これで、ターミナルを立ち上げて、

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2009 NVIDIA Corporation
Built on Thu_Sep__3_00:38:40_PDT_2009
Cuda compilation tools, release 2.3, V0.2.1221

と出れば、コンパイラへのパスは通っている。


(このセクションはおそらくSnow Leopardのみ)

次に、Snow Leopardを使っている場合、gcc4.2とCUDAの相性が非常に悪い(gcc4.2でもいくつかはコンパイルできる)ので、(後ろ向きの対応だが)下記の作業を行い、gcc4.0が使われるように設定を変更する。
現在設定されているgccをgcc_oldに保存し、gccがgcc-4.0を指すように設定する。

$ sudo mv /usr/bin/gcc /usr/bin/gcc_old
$ sudo ln -s /usr/bin/gcc-4.0 /usr/bin/gcc

同様に、g++もg++-4.0を指すよう設定する。

sudo mv /usr/bin/g++ /usr/bin/g++_old
sudo ln -s /usr/bin/g++-4.0 /usr/bin/g++

(ここまで、おそらくSnow Leopardのみ)


以上の設定が終わったら、/Developer/GPU Computing/Cに移動し、make

$ cd /Developer/GPU\ Computing/C
$ make

すべてのサンプルがコンパイルできるかどうかはわからないが、

/Developer/GPU Computing/C/lib

というフォルダに

libcutil_i386.a
libparamgl_i386.a
librendercheckgl_i386.a

というファイルができているはずである。それらのファイルの_i386を削除する。

libcutil.a
libparamgl.a
librendercheckgl.a

cutilを使う場合は、上記のライブラリを使えばよい。

同時に、サンプルプログラム類もコンパイルされているはずである(自分のところではいくつかはエラーが出てコンパイルできなかったが)。もし、deviceQueryというプログラムがコンパイルできていないようであれば、下記のようにすれば、コンパイルされるはずである。

$ cd /Developer/GPU\ Computing/C/src/deviceQuery
$ make

このmakeでできた実行ファイルは、/Developer/GPU Computing/C/bin/darwin/releaseにある。下記のように打って、コンパイルされたdeviceQueryを実行してみる。

$ cd /Developer/GPU\ Computing/C/bin/darwin/release
$ ./deviceQuery

ここで、

$ ./deviceQuery
CUDA Device Query (Runtime API) version (CUDART static linking)
There is 1 device supporting CUDA

Device 0: "GeForce 9400M"
CUDA Driver Version: 2.30
CUDA Runtime Version: 2.30
CUDA Capability Major revision number: 1
CUDA Capability Minor revision number: 1
Total amount of global memory: 266010624 bytes
Number of multiprocessors: 2
Number of cores: 16
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 262144 bytes
Texture alignment: 256 bytes
Clock rate: 1.10 GHz
Concurrent copy and execution: No
Run time limit on kernels: Yes
Integrated: Yes
Support host page-locked memory mapping: Yes
Compute mode: Default (multiple host threads can use this device simultaneously)

Test PASSED

Press ENTER to exit...

の様に出れば、正常に動作している。

CUDA2.2のインストール

Mac OS X 10.5にCUDA 2.2をインストールする。

まず、Mac OS Xを最新バージョンにして、バージョンを10.5.2以上にしておく。
そして、ここ(http://www.nvidia.com/object/cuda_get.html)から、CUDA ToolkitとCUDA SDKをダウンロードしてくる。

CUDA Toolkitのインストール

ダウンロードしてきたパッケージをダブルクリックすると

Continueをクリックし、

Continueをクリックし、

ここから先に進むには、ライセンスに同意する必要がある。

インストールする場所は、特に理由がなければ、デフォルトのままがよい。Installをクリックするとインストールが始まる。

インストールが進み、

これでインストールが完了する。

CUDA SDKのインストール

ダウンロードしてきたパッケージをダブルクリックすると、

Continueをクリックし、

Continueをクリックし、

ここから先に進むには、ライセンスに同意する必要がある。

特に必要がなければデフォルトのままインストール。

インストールが進み、

これで完了する。

そして、~/.bash_profileにコンパイラのパス、ライブラリのパス、インクルードファイルの各種パスを追加する。具体的には、

export PATH=/usr/local/cuda/bin:$PATH
export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
export C_INCLUDE_PATH=/Developer/CUDA/common/inc
export CPLUS_INCLUDE_PATH=/Developer/CUDA/common/inc

を追加する。これで、ターミナルを立ち上げて、

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2009 NVIDIA Corporation
Built on Mon_May__4_04:48:55_PDT_2009
Cuda compilation tools, release 2.2, V0.2.1221

と出れば、コンパイラへのパスは通っている。
次に、サンプルプログラム類をコンパイルしてみる。

$ cd /Developer/CUDA/
$ make

と打って、エラーなくコンパイルできれば、コンパイラは正常にインストールされている。

ここで、もしかしたら問題が起きるかもしれない。下記のように打って、コンパイルされたサンプルプログラムの一つを実行してみる。

$ cd /Developer/CUDA/bin/darwin/release/
$ ./deviceQuery

すると、ここで、

$ ./deviceQuery
CUDA Device Query (Runtime API) version (CUDART static linking)
There is no device supporting CUDA.

Device 0: "Device Emulation (CPU)"
CUDA Capability Major revision number: 9999
CUDA Capability Minor revision number: 9999
Total amount of global memory: 4294967295 bytes
Number of multiprocessors: 16
Number of cores: 128
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 1
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 262144 bytes
Texture alignment: 256 bytes
Clock rate: 1.35 GHz
Concurrent copy and execution: No
Run time limit on kernels: No
Integrated: Yes
Support host page-locked memory mapping: Yes
Compute mode: Default (multiple host thre
can use this device simultaneously)

Test PASSED

Press ENTER to exit...

のような表示が出るかもしれない。「There is no device supporting CUDA」すなわちこのままでは、CUDAプログラムは実行できない。
他のサンプルプログラムも動かないはずである。

もう一度、CUDA Toolkitのインストールを立ち上げ、Installation TypeでCustomizeをクリックし、CUDAKextにチェックをつけインストールする。(なぜこれがデフォルトでチェックされていないのかは謎)

再起動をして、再度先ほどのプログラムを実行してみると、

$ ./deviceQuery
CUDA Device Query (Runtime API) version (CUDART static linking)
There is 1 device supporting CUDA

Device 0: "GeForce 9400M"
CUDA Capability Major revision number: 1
CUDA Capability Minor revision number: 1
Total amount of global memory: 266010624 bytes
Number of multiprocessors: 2
Number of cores: 16
Total amount of constant memory: 65536 bytes
Total amount of shared memory per block: 16384 bytes
Total number of registers available per block: 8192
Warp size: 32
Maximum number of threads per block: 512
Maximum sizes of each dimension of a block: 512 x 512 x 64
Maximum sizes of each dimension of a grid: 65535 x 65535 x 1
Maximum memory pitch: 262144 bytes
Texture alignment: 256 bytes
Clock rate: 0.80 GHz
Concurrent copy and execution: No
Run time limit on kernels: Yes
Integrated: Yes
Support host page-locked memory mapping: Yes
Compute mode: Default (multiple host threads
can use this device simultaneously)

Test PASSED

Press ENTER to exit...

と、うまくいくはずである。

最終更新日


本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて20.04、21.04のようにバージョン番号をつけて区別しています。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2021 Chikuma Engineering Co., Ltd. All Rights Reserved.