Debian 6.0 (64bit)に CUDA 4.0.17 をインストール

kernel は 2.6.32-5-amd64.

基本的には CUDA Getting Started Guide (Linux) http://developer.download.nvidia.com/compute/DevZone/docs/html/C/doc/CUDA_C_Getting_Started_Linux.pdf に従う. ただし, Debian はサポートされていない. CUDA Toolkit for Ubuntu 10.10 64bit http://www.nvidia.com/object/thankyou.html?url=/compute/cuda/4_0/toolkit/cudatoolkit_4.0.17_linux_64_ubuntu10.10.run があるのでこれを使えばいいことを期待する.

まず

# lspci

PCIにCUDA対応のGraphics Cardが認識されていることを確認する.

ドライバ(kernel module)の組み込み

# apt-get install gcc make linux-source-2.6.32
$ cd /home/hig3/src; tar fvjz /usr/src/linux-source-2.6.32.tar.bz2 # kernel source が必要
# sh ./devdriver_4.0_linux_64_270.41.19.run -a --kernel-source-path=/home/hig3/src/linux-source-2.6.32/

ここでふたつ警告/エラーが出る

  1. 現在のkernelはgcc-4.3でcompileされてるのに今使えるのはgcc-4.4. このまま進んだらどうなっても知らないよ〜という警告
    1. 警告を無視してgcc-4.4を使って進んだ結果, kernel module `nvidia.ko'がloadできないというエラーになった.
    2. gcc-4.3 をインストールし, driver のコンパイルのときだけsymlink してごまかすことにした.
    3. kernel を gcc-4.4 でrecompileして置きかえるっていうのが王道だったかも. でも今回はそうはしなかった.
  2. modpost がないというエラー
  /bin/sh: scripts/mod/modpost: not found
    1. 本体のソース自体は linux-source-2.6.32/scripts/mod/modpost.c として含まれてるのだが, このdirectoryでmakeしても何か足りなくてだめ. もっと上の階層で make する必要があるのだろう. 結局, kernel-package をいれて kernel 全体を compile してしまった. このときはgcc-4.4であることが必要.
kernel の recompile

カーネル再構築onDebian5.0(lenny) - 備忘録@とろさん を見て思い出しながらやりました.

# aptitude install kernel-package
# vi /etc/kernel-pkg.conf  # edit maintainer and email
$ cd /tmp/kbuild; tar fvxj /usr/src/linux-source-2.6.32
$ cd linux-source-2.6.32
$ cp /boot/config-2.6.32-5-amd64 .config
$ make-kpkg --rootcmd fakeroot clean
$ make-kpkg --append_to_version VER --revision REV configure

modpost が生成されたらそこでやめちゃってもいいのかも.

CUDA Toolkit のインストール

Ubuntu 10.10 のものでも問題なかった.

# sh ./cudatoolkit_4.0.17_linux_64_ubuntu10.10.run 

GPU Computing SDK の導入とコンパイル

$ sh ./gpucomputingsdk_4.0.17_linux.run 

サンプルなどをmakeするには, gcc-4.4を使う必要があり, また

# apt-get libglu1-mesa-dev libxi-dev libxmu-dev freeglut3-dev

くらいと依存性で導入されるパッケージが必要. ドキュメントには

$ sudo  apt-get  install  freeglut3-dev  build-essential  libx11-dev  
libxmu-dev  libxi-dev  libgl1-mesa-glx  libglu1-mesa  libglu1-mesa-dev

と書いてあった.

deviceQuery などを実行するには

$ path=$path:/usr/local/cuda/bin # zsh
$ LD_LIBRARY_PATH=/usr/local/cuda/lib_x64; export LD_LIBRARY_PATH

つきつめていないこと

以下のような non-free packages があるけど, これらは何? libcuda1-dev の /usr/include/cuda/cuda.h は CUDA 3.0 だった.
開発の際には干渉しないように注意が必要.
上の作業のときには一部インストールされていたけど, 影響はなかったはず.

# apt-cache search cuda
  • libcuda1-dev - NVIDIA CUDA development files
  • libcuda1-ia32 - NVIDIA CUDA runtime library (32-bit)
  • libcuda1 - NVIDIA CUDA runtime library
  • libnvidia-compiler-ia32 - NVIDIA runtime compiler library (32-bit)
  • libnvidia-compiler - NVIDIA runtime compiler library
# apt-cache search nvidia

...

...