fedora 9 x86_64にCUDA2.1 Betaをインストールするまで
64bitのfedora 9マシンにCUDA2.1betaをインストールした。以下その記録
まずはfedora 9を理研のftpから持ってきてインストールする。
ネットワークをつなげる
インストールが終わったら、ここを参考にしてネットワークを管理するデーモンをどちらか片方きってネットワークをつなげる。
ネットワークがつながらないという孔明も驚愕のfedora 9の罠。原因がわからず、LANケーブルが壊れてないか確認して時間をつぶしてしまった。
日本語入力環境のインストール
# yum install scim anthy acim-anthy
で日本語入力環境をインストールする。そして一旦ログアウトして再度ログインする。右上のscimのアイコンを右クリックして「scimの設定」をクリック、フロントエンド→全体設定から開始、終了キーを設定する。キーコードを押して「追加」ボタンで登録して閉じる。「適用」ボタンを押すとscimを再起動するべき旨のメッセージが現れる。acimの再起動の仕方がわからないのでマシンを再起動した。
fedora7,8だとはじめから日本語入力できた気がするのは間違いだっけ?まさかこれもfedora 9の罠では・・
nvidiaのディスプレイドライバをインストール
次に、nvidiaが提供するドライバをインストールする。とりあえず、nvidiaのサイトから、以降で使う、ドライバとツールキットとSDKをダウンロードする。今回使ったバージョンは以下のとおり。
ドライバ: NVIDIA-Linux-x86_64-180.06-pkg2.run
ツールキット:cuda-linux64-rel-nightly-2.1.1635-3065709.run
SDK:cuda-sdk-linux-2.10.1126.1520-3141441.run
そしてドライバのインストール。まずその前の準備として、パッケージkernel-develをインストールする。
# yum install kernel-devel
また、Xが起動していない状態でドライバのインストールをしなければならないので、
# vim /etc/inittab
で、ランレベルを3に設定してリブートする。
# reboot
再起動したらログインし、rootでドライバのインストールを行う。
# sh ./NVIDIA-Linux-x86_64-180.06-pkg2.run
No -> ok -> "Building kernel module..." -> Yes -> Yes -> Ok
たしかこんな順番でインストール完了。inittabを編集してランレベルを5に戻して再起動する。
サンプルの実行
SDKをインストールしたディレクトリでmakeするだけ・・・のはずがうまくいかなかった。threadMigrationという名前のプロジェクトでコンパイルがとまってしまう。「gnu/stub-32.hが無い」らしい。まず、SDK全体ではなくプロジェクト単体ではビルドできるのかどうか確認してみた。oceanFFTというディレクトリ中で、makeしてみると
$ make /usr/bin/ld: cannot find -lglut collect2: ldはステータス1で終了しました
それっぽいパッケージのfreeglut-develをインストールして再度make
$ make /usr/bin/ld: cannot find -lrendercheckgl collect2: ldはステータス1で終了しました
(・3・)
それっぽいパッケージを探しても見つからず、最終的にthreadMigration以外だけでもコンパイルすることにした。まず、共有ライブラリを作る。SDKディレクトリのcommonディレクトリでmake、次にprojectディレクトリで
$ for d in `/bin/ls`; do (cd $d && make); done
でbinディレクトリに実行可能プログラムが作られる。おそるおそる実行してみると・・動いた!nbodyが動いた!
ところで、どうしてthreadMigrationはビルドできなかったのか?エラーメッセージによるとgnu/stub-32.hが無い、らしいので yum providesで調べた。32bit版のglibcに含まれるインクルードファイルらしい。64bit環境用のSDKになぜ32bit版glibcのコードが入っていたのだろう。わからない。