Ubuntu 10.10 64bitでCUDA4.0とPyCUDAをセットアップする方法

###必要なもの
・Ubuntu 10.10 64bit
・うまくいかなくても泣かない心と根性
・美女に惚れたダサ男のように、CUDAに拒絶されても拒絶されてもついていく精神



###参考サイト
・half an EGG:[Ubuntu][CUDA]Ubuntu及びCUDAの開発環境の構築メモ
・irieめも:Ubuntu 10.10にCUDAをインストールした時のメモ
PyCUDA@tiker.net



###CUDAのインストール
CUDAの環境構築自体は割りとみんなうまくいくと思うけど、一応メモメモ

1.NVIDIAの最新グラッフィックドライバのインストール

sudo su
add-apt-repository ppa:ubuntu-x-swat/x-updates
apt-get update
apt-get install nvidia-current nvidia-current-modaliases nvidia-settings
でOK、再起動後に
sudo nvidia-xconfig
を実行して、ログアウト→ログイン

2.CUDAのインストールに必要な環境のインストール
sudo apt-get install g++ freeglut3-dev libxi-dev libxmu-dev
sudo apt-get install openmpi-bin openmpi-dev
でOK

3.CUDA関連ツールのダウンロード(取得時点のバージョンは4.0.17)http://developer.nvidia.com/cuda-toolkit-40
から
cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
cudatools_4.0.17_linux_64.run
gpucomputingsdk_4.0.17_linux.run
visualprofiler_4.0.51_linux_64_sles11.0.tar.gz
をダウンロードしよう
とりあえずここでは
~/CUDA
フォルダにこれらのファイルを入れるものと仮定
visualprofilerのパッチファイルに関しては今回は触れないけど、コレに関してはおそらくこのドキュメントあたりを参考にすればいけるはず

4.CUDA関連ツールのインストール
4.1.CUDAツールのインストール

chmod a+x cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
sudo ./cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
でインストール完了。
インストール場所を聞かれるけど、基本的にはエンターキーを押すだけでOK。

#設定ファイルなどその1
/etc/ld.so.conf.d/cuda.conf

/usr/local/cuda/lib64
/usr/local/cuda/lib
を書き加えて
sudo ldconfig

その2
/etc/profile.d/cuda.sh

export PATH="/usr/local/cuda/bin:$PATH"
export LIBRARY_PATH="/usr/lib/nvidia-current"
を書き加えてログオフ→ログイン
(たぶん大丈夫だと思うけど、僕はzshを使ってるので、.zshrcに同様の内容を追加)

4.1.SDKのインストール
chmod a+x ./gpucomputingsdk_4.0.17_linux.run
./gpucomputingsdk_4.0.17_linux.run
でOK。
サンプルファイルを
cd ~/NVIDIA_GPU_Computing_SDK/C
make
でコンパイル。
cd ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release
./oceanFFT
で青い波みたいのが表示されたらとりあえず成功。

5.64bit環境向け
cd ~/NVIDIA_GPU_Computing_SDK/C/lib
for i in `ls *_x86_64.a`; do ln -sv $i ${i%_x86_64.a}.a; done



###PyCUDAのインストールこれが曲者。CUDAのインストールには成功したが、PyCUDAのインストールには何度も挫折。
最終的にどこいじったかわからなくなって再インストールを何度も繰り返したりした。

1.gcc周りの設定PyCUDAにはgcc-4.3が必要なため、updata-alternativesで変更する。
デフォルトではすっからかんの状態のためgccのインストールと設定を行う。ついでにgcc-4.5も入れてしまおう。
sudo apt-get install gcc-4.3 g++-4.3 gcc-4.5 g++-4.5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 45 --slave /usr/bin/g++ g++ /usr/bin/g++-4.5 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.5
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.4
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.3 43 --slave /usr/bin/g++ g++ /usr/bin/g++-4.3 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.3
の後に
sudo update-alternatives --config gcc
でgcc-4.3の番号を選択

2.PyCUDAのセットアップに必要なものをインストール(Boostの他にnumpyも必要なので入れておこう)
sudo apt-get install build-essential python-dev python-numpy python-setuptools libboost-python-dev libboost-thread-dev

3.PyCUDAのダウンロード
sudo apt-get install git
git clone http://git.tiker.net/trees/pycuda.git
でOK

4.PyCUDAのインストール
cd pycuda
./configure.py --cuda-root=/usr/local/cuda --cudadrv-lib-dir=/usr/lib --boost-inc-dir=/usr/include --boost-lib-dir=/usr/lib --boost-python-libname=boost_python-mt-py26
make -j 4
これで問題なくmakeが通れば問題なし。

さて、ここからが一番のはまりどころで、
sudo python setup.py install
とやってもnvccが見つからないYO!と言われて弾き返される。

でもecho $CUDA_ROOTってやるときちんとPATHは通ってるし…ってことで四方八方色々調べてみると、sudoだからCUDA_ROOTのパスを~/root以下に書かなきゃダメだYOってことに気づいて…

sudo su
cd ~
でrootのホームに移動して
vi .zshrc
あたりで
export PATH=/usr/local/cuda:/usr/local/cuda/bin:$PATH
export CUDA_ROOT=/usr/local/cuda:/usr/local/cuda/bin:$CUDA_ROOT
export LIBRARY_PATH=/usr/lib/nvidia-current:$LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH
を記載した後に、
cd ~/CUDA
python setup.py install
でOK



これでCUDA及びPyCUDAのインストールは完了
みなさんもハッピーGPGPUライフをお過ごしください