CUDA on Fedora 12

Fedora 12 で CUDA を動かすには多少コードの修正が必要です。

1.準備(その1)
gcc-3.4およびカーネルのヘッダーなど、CUDAが必要とするパッケージををyumでインストールしておく。

# yum install compat-gcc-34 compat-gcc-34-c++
# yum install kernel-devel
# yum install freeglut freeglut-devel

(参考)http://benzo-501.blogspot.com/2010/01/fedora12geforce-gt-240-cuda.html

2.準備(その2)

NVIDIA(エヌビディア)のCUDAサイトから、ファイルをダウンロードする。「オペレーションシステムの選択」で「Linux 32ビット」または「Linux 64ビット」を選択後、「Fedora 10」を選択し、下記のファイルをダウンロード。

  1. CUDAドライバ
  2. CUDAツールキット
  3. CUDA SDKコードサンプル

3.準備(その3)
カーネルモジュールnouveauがOS立ち上げ時にロードされていると、CUDAドライバがインストールできないので、以下の例のように/etc/grub.conf を修正して、nouveauのモジュールロードを止める(nouveau.modeset=0を末尾に追加)。

kernel /vmlinuz-2.6.32.12-115.fc12.x86_64 ro root=/dev/mapper/vg_srv2-lv_root LANG=ja_JP.UTF-8 KEYBOARDTYPE=pc KEYTABLE=jp106 rhgb quiet nouveau.modeset=0

4.Run level の修正

CUDAのドライバのインストールには、Xを停止している必要がありますので、一旦 run levelを3に落とす。

/etc/inittabの該当行(通常最後の行)を下記のように修正(5 --> 3に)

id:3:initdefault:

リブートする。

5.ドライバのインストール
コンソール画面でログインして、root権限にてドライバをインストール。

sh NVIDIA-Linux-x86_64-195.30-pkg2.run
x86_64の場合。執筆時点での最新バージョン。)

カーソルキーとリターンキーを使って普通に操作を進めてけば、そのまま完了まで進む。

6.X Window に戻る
コンソールでそのまま操作を続けてもいいのですが、操作性を良くするためXに戻る。

/etc/inittabの修正をもとに戻してリブート(別のオプションとしては init 5を実行してもOK)。

id:5:initdefault:

7.ツールキットをインストール

# sh cudatoolkit_2.3_linux_64_fedora10.run

8.SDKとサンプルプログラムをインストール
ここはハマりどころ。

まず、ユーザー権限でSDKをインストール。ホームディレクトリの下にインストールされる。

% sh cudasdk_2.3_linux.run

VIDIA_CUDA_SDK/common/common.mkの該当部分を下記のように修正する(gcc-3.4でコンパイルするように指定するため)。

CXX := g++34
CC := gcc34
LINK := g++34 -fPIC
NVCCFLAGS := --compiler-bindir /tmp

シンボリックリンクの作成

# ln -s /usr/bin/gcc34 /tmp/gcc

「undefined reference to std::basic_ostream」というエラーを避けるために、下記の修正を行なう。

cd VIDIA_CUDA_SDK/

mv src/smokeParticles/Makefile src/smokeParticles/0makefile
mv src/particles/Makefile src/particles/0makefile
mv src/nbody/Makefile src/nbody/0makefile

(参考)http://forums.nvidia.com/index.php?showtopic=99139

もしうまくいかなければ、CUDA 3.0を試してください。
http://developer.nvidia.com/object/cuda_3_0_downloads.html