目次 >> CUDA >> インストール(Mac OS X編)
NVIDIAのGPGPU開発環境であるCUDA(Compute unified device architecture)をインストールして、使ってみる。
使用機器はMacbook 2009年春。
CUDA2.3をMac OS X 10.6 Snow Leopardにインストールする。
Snow Leopardから、デフォルトのコンパイラが従来のgcc4.0からgcc 4.2に変わったがCUDA2.3はまだgcc4.2にうまく対応し切れていないので、インストール後、いくつかの作業が必要となる(後述)。
NVIDIAのサイトから、Mac用のドライバをダウンロードしてインストールする。ダウンロードしたファイルcudadriver_2.3.1a_macos.pkgをダブルクリックすると、インストールが始まる。
Continueをクリック、
Continueをクリック、
ライセンスに同意して、
すべてのユーザーにたいしてインストール。
Installをクリック。
しばらくの後、
インストールが完了する。
次に、CUDA Toolkitをインストールする。同じところからダウンロードしてきた、cudatoolkit_2.3a_macos_32.pkgをダブルクリックすると、
Continueをクリック、
インストール場所を選び、
Installをクリック。
しばらくの後、
インストールが完了する。
次に、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...
の様に出れば、正常に動作している。
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をダウンロードしてくる。
ダウンロードしてきたパッケージをダブルクリックすると
Continueをクリックし、
Continueをクリックし、
ここから先に進むには、ライセンスに同意する必要がある。
インストールする場所は、特に理由がなければ、デフォルトのままがよい。Installをクリックするとインストールが始まる。
インストールが進み、
これでインストールが完了する。
ダウンロードしてきたパッケージをダブルクリックすると、
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...
と、うまくいくはずである。
最終更新日