2011-08-31

Ubuntu 11.04にCUDA開発環境を導入する

特売で買ったHP Z800 には nVidia の Tesla C2050 を2枚差してある。この GPGPU で遊ぶには CUDA の開発環境を導入する必要がある。nVidia が配布している Ubuntu 用の開発環境 CUDA Toolkit 4.0 は Ubuntu 10.10 用であるが、Ubuntu 11.04 にも導入できるのでその方法を紹介する。
CUDA を Ubuntu 11.04 に導入するに際しての問題点は以下の通り。

  • デフォルトでインストールされる X 用のドライバ nouveau と相性が悪い。
  • Ubuntu のソフトウェア更新(apt による upgrade)時のカーネルのバージョンアップへの対処が必要。
  • Ubuntu 11.04 では GCC のバージョンが 4.5 であるが、CUDA は 4.4 を必要とする。

最初の点の nouveau 問題は結構やっかいで、手順を失敗するとシステムが訳のわからない状態になるので注意が必要だ。この問題をさける一番簡単な対処法は GUI 画面で [追加ドライバ] 設定を用いて nVidia のドライバを導入することである。この方法で導入して再起動すると nouveau カーネルモジュールがロードされないはずで、確かめるには以下を実行すればよい。

$ lsmod | grep nouveau

この状態で nVidia が配布している devdriver → toolkit → sdk の順番でインストールすればよいのだが、nVidia 配布の devdriver を使うと、apt-get upgrade のときのカーネルのバージョンアップのたびにドライバを再導入する必要があってわずらわしい。これを解決するために X Updates の PPA を利用して最新の nVidia ドライバを導入することにする。この PPA を用いると、カーネルのバージョンアップの際に nVidia ドライバの再コンパイルも自動的に行ってくれるので世話がない。
以上を勘案した手順は以下の通り。

  1. GUI 画面で [追加ドライバ] を起動し、nVidia の高性能ドライバを導入し再起動する。
  2. ログイン画面(自動ログインしている人はログアウトしてから)で Ctrl-Alt-F1 を押し、テキストコンソール状態にしてログインする。
  3. $ sudo initctl stop gdm
    $ sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
    $ sudo apt-get update
    $ sudo apt-get upgrade
    $ sudo reboot
    
    再起動後、バージョンを確認する。

     

    $ cat /proc/driver/nvidia/version
    NVRM version: NVIDIA UNIX x86_64 Kernel Module  280.13  Wed Jul 27 16:53:56 PDT 2011
    GCC version:  gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4)
    
  4. 必要なパッケージをインストールする。
  5. $ sudo apt-get install gcc-4.4 g++-4.4 libxi-dev libxmu-dev freeglut3-dev
    
  6. nVidia 配布の Toolkit とオプションで Tools SDK、そして SDK をインストールする(driver はインストールしない)。
  7. $ sudo sh cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
    $ sudo sh cudatools_4.0.17_linux_64.run
    $ sh gpucomputingsdk_4.0.17_linux.run
    $ sudo vi /etc/ld.so.conf.d/cuda.conf
    /usr/local/cuda/lib64
    /usr/local/cuda/lib
    $ sudo ldconfig
    $ vi ~/.bashrc
    PATH=/usr/local/cuda/bin:$PATH
    
  8. Toolkit が gcc 4.4 を使うように設定する。
  9. $ sudo mkdir /usr/local/cuda/gcc
    $ for a in gcc g++ cpp; do sudo ln -s /usr/bin/$a-4.4 /usr/local/cuda/gcc/$a; done
    $ sudo vi /usr/local/cuda/bin/nvcc.profile
    compiler-bindir = /usr/local/cuda/gcc
  10. SDK をビルドする。
  11. $ cd ~/NVIDIA_GPU_Computing_SDK/C
    $ make
    $ bin/linux/release/driveQuery
    

ただし、6 の make のところで失敗する。これはどうやら SDK のバグ(devdriver が間違った場所にライブラリをインストールしており、SDK がそれに依存している)らしい。以下の方法で回避できる。

$ LPATH=/usr/lib64/nvidia-current make

これを .bashrc にでも入れておくとよいかも。

$ vi ~/.bashrc
export LPATH=/usr/lib64/nvidia-current

References

LPATH の件は: [0000065: /usr/bin/ld: cannot find -lcuda - Mantis]
X-Updates の PPA については以下で知った: [Ubuntu 10.04 に CUDA をインストールした時のメモ - irie めも]
nvcc.profile の設定による GCC 4.4 の利用については: [HDfpga: Install Cuda 4.0 on Ubuntu 11.04]

2012/2/14 追記

CUDA Toolkit 4.1 がリリースされ、Ubuntu 11.04 に正式対応した。CUDA 4.1 へのアップグレードについて書いた記事を参照: Ubuntu 11.04のCUDA開発環境を4.1にアップグレードする

4844329782 CUDA by Example 汎用GPUプログラミング入門
Jason Sanders, Edward Kandrot, 株式会社クイープ
インプレスジャパン 2011-02-14

0 件のコメント:

コメントを投稿