Fedora Core 12 にCUDAプログラミング環境構築メモ
NEC Express5800/110Gdにグラフィックボードを増設してCUDAプログラミング環境を構築した。
NEC Express5800/110Gdはサーバ機なので
PCI-Express x16が使えずPCI-Express x1に対応したグラフィックボードが必要だったが
nvidia製のGeforce 210を積んでいて
お手軽にCUDAプログラミングを始めるのにちょうどいいと思いこれを選んだ。
ELSA ビデオカードELSA GLADIAC 210 LP x1 512MB GD210-512ERLP1
OSは普段FreeBSDを使っているので、そのまま使おうかと思ったが
あとでめんどくさそうなので結局Fedoraにした。
グラフィックボードを差したら、最初に起動したときにBIOSすら起動せず
マザーボードからピッピッピとビープ音が聞こえてきたのだが
PCI-Express ポートの2つめに挿し直したらうまくBIOSが起動するのを確認できた。
なんでだろ?
起動したfedoraはx86_64版の12で、gnomeデスクトップにfirefoxをいれてある
そのままnvidiaのサイトに行ってドライバをダウンロードする
ドライバの検索ページで
製品のタイプ:GeForce
製品シリーズ:GeForce 200 Series
製品ファミリー:GeForce210
オペレーティングシステム: Linux 64-bit
言語:Japanese
を選択して検索して
NVIDIA-Linux-x86_64-190.53-pkg2.runを/usr/local/src以下に保存する
http://www.nvidia.co.jp/object/linux_display_amd64_190.53_jp.html
次にCUDA関連のソフトもダウンロードする
http://www.nvidia.co.jp/object/cuda_get_jp.html
ここで
オペレーションシステム:Linux64ビット
Linux版:Fedora 10
を選択して
最新のCUDA2.3の
1. CUDAドライバ
2. CUDAツールキット
3. CUDA SDKコードサンプル
の3つを落とした。
(1.CUDAドライバは最新のNVIDIAのLinux用ドライバの190.53を落としていたので実際には不要だった)
これも/usr/local/srcに保存した。
ドライバのインストールはxの停止した環境で行わなければならないため
/etc/inittabを編集してランレベルを5から3にしてrebootしてから行う。
ドライバのインストールは
sudo sh NVIDIA-Linux-x86_64-190.53-pkg2.run
とするとインストールがはじまる
途中で32bit版OpenGLライブラリをいれるかと聞かれたが、とりあえずYesとしておいた。
CUDAドライバは上記ドライバの一部としてインストール済みのようなので飛ばして
CUDAツールキットのインストールを行った
sudo sh cudatoolkit_2.3_linux_64_fedora10.run
途中pathを打つように言われるが、defaultで良いので何も記入せずにEnterを押した。
最後にCUDA SDKのインストールを行った
SDKは~/以下にインストールされるようなので
自分のhomeディレクトリにインストールされるように
sudoをつけないことにした
sh cudasdk_2.3_linux.run
これも途中pathを打つように言われるが、defaultで良いので何も記入せずにEnterを押した。
ひととおりインストールが終わったら最後にPATHを通す
.bashrcに
export PATH=$PATH:/usr/local/cuda/bin export LD_LINKLIBRALY=/usr/local/cuda/lib64
を記載した。
最後にcudaでhello worldを行った
cd ~ mkdir -p work/cuda
で作業ディレクトリを作って
hello.cuに
#include <stdio.h> int main(void) { printf("Hello, world!\n"); return 0; }
これをnvccでコンパイルして
nvcc hello.cu
a.outが出力されるので
./a.out
これでhello world!がでるはず
ここで、a.outがエラーを出てしまう場合は
LD_LINKLIBLALY_PATHを/usr/local/cuda/libなどと
間違えていないか確認したほうがよいだろう
(最初間違えてエラーが出てしまった、自分の環境にあわせて設定すればよさそう)
ここまでくれば、あとは自由にCUDAプログラミングができるはず。