2012-09-23

CUDA 4.2 を CentOS 6.3 (64 bit) へインストール(GeForce GTX680)

0. 前提

同じような情報は探すと結構あるが、自分用に敢えて残しておく。前提として、

  • GPU: GeForce GTX680
  • CPU: Core i7 3770K
  • OS: CentOS 6.3 (64 bit), インストール時にGUIを入れず runlevel 3 で運用
  • Linux力: たったの5

という状況。以下の Linux での操作は全て Windows マシンから Poderosa で ssh login して行った。また、CUDA のインストール後に CAPS OpenACC compiler をインストールするよてい(別エントリに書く予定)。

1. ファイルのダウンロード

ドライバはCUDAのページではなく、一般的なグラフィクスカード用ドライバのダウンロードページから落とす。こっちの方がだいたい新しい模様。他の2つ (toolkit, SDK) はCUDAのページから落とした(ChromeでコピペしてPoderosaへAlt+Pでペーストして $ wget http:... みたいな)。

2. ドライバのインストール

自分の場合、「Nouveau kernel driver」云々のエラーは起きなかった。CentOS のインストール時点から一度もGUIを入れていないから、なのかな?

[2012-09-30追記]
と、思っていたら、昨夜の LogWatch に
WARNING: Kernel Errors PresentACPI Error (psargs-0359): [ ...: 2 Time(s)nouveau: probe of 0000:01:00.0 failed with error -22 ...: 2 Time(s)
以下延々とエラーが……やっぱ対策必要なのかも。
[/追記]

ただ別の問題が……。インストールのために
# su -
# ./NVIDIA-Linux-x86_64-304.43.run
をするとアスキーアート的というか、「CUIなんだけどがんばってGUIぽくしてる的なアレ」 (TUI?) が出てきて [Accept] [Do Not Accept] を選べ、系のがでてくる。が、なぜか今の環境だと「いまどのボタンを選んでいるかがわからない」。具体的には矢印キーの左を押す回数が画面別に違うという謎仕様。自分の場合、順番に何回押せばよかったかをメモっておく(画面表示される文章は PGI のページから引用&一部改変させていただいた)。

> Please read the following LICENSE and then select either "Accept" to accept the license
> and continue with the installation, or select "Do Not Accept" to abort the installation.
> [Accept]                     [Do Not Accept]

[Accept] を選択するためには、左キーを3回。

> There appears to already be a driver installed on your system (version: xxxxxxxxx).
> As part of installing this driver (version: xxxxxxxxx), the existing driver will be
> uninstalled. Are you sure you want to continue? ('no' will abort installation)
> [Yes]           [No]

[Yes] を選択するには、左キーを2回。

> Install NVIDIA's 32-bit compatibility OpenGL libraries?
> [Yes]           [No]

[Yes] を選択するには、左キーを2回。

> Would you like to run the nvidia-xconfig utility to automatically update your
> X configuration file so that the NVIDIA X driver will be used when you restart X?
> Any pre-existing X configuration file will be backed up.
> [Yes]           [No]

[Yes] を選択するには、左キーをここはなぜか 3 回。なぜかは知らない。

これでインストールが完了。ここでいったん
# reboot
これは不要な気もするが念のため。

3. toolkit のインストール

http://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cuda40_install.html
の通り、
# bash cudatoolkit_4.2.9_linux_64_rhel6.0.run
でインストールされた。自分はここにあるとおり「/usr/local」にしたが、別にデフォルトでもいいんじゃないかな。

4. SDK のインストール

これも
http://www.softek.co.jp/SPG/Pgi/TIPS/public/accel/cuda40_install.html
の通り、
# exit
$ bash gpucomputingsdk_4.2.9_linux.run
でインストールされた。さらに、
http://tech.ckme.co.jp/cuda_inst.shtml
の通り、
$ cd NVIDIA_GPU_Computing_SDK
$ make
でSDK内のファイルが全部コンパイルされる模様。ただこれ、数分はかかる (@ Core i7 3770K) ので、場合によっては飛ばしてもいいかも。

5. 環境変数の設定

これも
http://tech.ckme.co.jp/cuda_inst.shtml
の通り、
$ vim .bashrc
して
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH
を追加した。インストール先ディレクトリを変えた場合はそれに応じて変える。いったん
$ exit
して再度ログインし、反映されているかを確認。なんかだめっぽければ reboot する。

6. CUI (runlevel==3) の場合の追加作業

インストールの確認のため、
http://tech.ckme.co.jp/cuda_inst.shtml
などにあるように、
$ cd NVIDIA_GPU_Computing_SDK/C/bin/linux/release/
$ ./deviceQuery
とするとグラフィックカードが認識されるはずだが、されない。原因と対処法は、
http://d.hatena.ne.jp/flick-flick/20110818
http://troylee2008.blogspot.jp/2012/05/cudagetdevicecount-returned-38.html
を参照。cuda_getting_started_linux.pdf というドキュメント(ググってもヒットする)に書いてあるように、CUIが原因のようだ。日本語のエントリには「電源入れ直すたびに実行しないといけない」とあるが、実際には英語のエントリの方にあるように /etc/rc.local に書いておけば起動時に毎回自動で読まれるんじゃないかな、たぶん。というわけで、
# su -
# vim /etc/rc.local
して、ここに参照先のスクリプトをコピペ。当たり前だが、既に文書冒頭に「#!/bin/bash」がある場合はこれは書かない。
# reboot
して、再度
$ cd NVIDIA_GPU_Computing_SDK/C/bin/linux/release/
$ ./deviceQuery
するとちゃんと認識された。よかった。

[余談] ところで上記英語エントリには、上記はてブの日本語エントリを google translate も使って読んだ、とあった。自分も、このブログを google translate で読んだという韓国人研究者からメールをもらったことがある。まだまだ日本語の翻訳はひどいとは思うけど、それでもそういうことがあるんだなー、と。

7. CAPS OpenACC Compiler のインストール

別エントリを書く予定。

No comments: