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が起動するのを確認できた。
なんでだろ?


起動したfedorax86_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ドライバは最新のNVIDIALinux用ドライバの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プログラミングができるはず。