Express5800 110Ge で CUDAの練習 続き(開発環境インスコ)

ここでは、「Express5800 110Ge で CUDAの練習 続き(開発環境インスコ)」 に関する記事を紹介しています。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
CUDAの開発環境をCentOS 5.4(64bit)にインストール

前の記事
Express5800 110Ge で CUDAの練習
続き。

環境は前のとおり:
(どうでもいいがAtom、IONと来ているのな。この調子で進化?すればそのうちRNAとか出てくるかも分からんね)

CentOS 5.4にCUDAを入れたいので下調べしたら、そのものズバリなところが見つかった。

SofTekさんのところ:
CUDA™ 3.0開発環境をインストールする (Linux版) 対象 GPU CUDA 3.0 インストール CentOS 5.4

そのまま道なりでできました。感謝。
こういう風にかけるようになりたいなぁ。

ちなみに64bit環境なので、インストールしたのは次のファイル:
  • devdriver_3.1_linux_64_256.40.run (ドライバ)
  • cudatoolkit_3.0_linux_64_rhel5.3.run
  • gpucomputingsdk_3.0_linux.run
最初はドライバとして
  • NVIDIA-Linux-x86_64-256.53.run
を入れたが、これではCUDAが動かなかった(エラーメッセージ失念)。
新しければよい、というモンでもないようだ。




SDK付属のサンプルプログラムを確認。
SDKのディレクトリ
~/NVIDIA_GPU_Computing_SDK/C
に入って make するとバイナリは
~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release
にできる。

とりあえず bandwidthTest してみる:

$ ./bandwidthTest
[bandwidthTest]
./bandwidthTest Starting...

Running on...

 Device 0: ION
 Quick Mode

 Host to Device Bandwidth, 1 Device(s), Paged memory
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     164.0

 Device to Host Bandwidth, 1 Device(s), Paged memory
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     198.5

 Device to Device Bandwidth, 1 Device(s)
   Transfer Size (Bytes)        Bandwidth(MB/s)
   33554432                     9054.9


[bandwidthTest] - Test results:
PASSED


Press <Enter> to Quit...
-----------------------------------------------------------

x1だし、こんなもんかな。ちょっと速いHDDくらいの転送速度だと思えばいいのか。
Device to Host のほうが速いのはちょっと意外。




書籍「はじめてのCUDAプログラミング」のサンプルをコンパイル。

人に勧められて
はじめてのCUDAプログラミング―驚異の開発環境[GPU+CUDA]を使いこなす! (I・O BOOKS)はじめてのCUDAプログラミング
(2009/11)
青木 尊之額田 彰

詳細

を購入。密度が濃い本だと思います。

サポートページ
www.kohgakusha.co.jp/support/cuda/index.html
に書籍内で紹介されたサンプルプログラムのソースが置いてある。ソースをいただいてきて、展開。

$ for NUM in 1 2 3 4 5 6 7; do wget http://www.kohgakusha.co.jp/support/cuda/linux/sample${NUM}_linux.tgz; done
$ for NUM in 1 2 3 4 5 6 7; do tar xvf sample${NUM}_linux.tgz; done

各ディレクトリに入ってmakeすると変なエラーが。結論的には64bit環境が原因。

sample1_linux $ make
nvcc -c -O3 -I/home/tekito/NVIDIA_GPU_Computing_SDK/C/common/inc -maxrregcount 32 sample_1.cu
gcc -o a.out sample_1.o -O3 -L/usr/local/cuda/lib64 -L/home/tekito/NVIDIA_GPU_Computing_SDK/C/lib -lcudart -lcutil
/usr/bin/ld: cannot find -lcutil
collect2: ld はステータス 1 で終了しました
make: *** [a.out] エラー 1

なんで -lcutil が見つからないんだ、と思ってディレクトリを確認してみたら原因判明:

$ ll ~/NVIDIA_GPU_Computing_SDK/C/lib/
合計 316
-rw-rw-r-- 1 tekito tekito 201540  9月  8 02:38 libcutil_x86_64.a
-rw-rw-r-- 1 tekito tekito  46330  9月  8 02:38 libparamgl_x86_64.a
-rw-rw-r-- 1 tekito tekito  61144  9月  8 02:38 librendercheckgl_x86_64.a

64bit環境だと -lcutil_x86_64 なのか。じゃあMakefileを直せばいい。てきとうスクリプトを書いた:

$ cat subst.sh
#!/bin/bash
TMP=$(find ./ -name 'Makefile')
for FILE in ${TMP};do
        cp ${FILE} ${FILE}.bak
        sed -e "s/-lcutil/-lcutil_x86_64/g" ${FILE}.bak > ${FILE}_x86_64
done

(これ1行で書けないかな。最初、xargsでやろうとしたが面倒になってスクリプトにすることにした)
このスクリプトはMakefileの中の「-lcutil」を「-cutil_x86_64」に置換した結果を、Makefile_x86_64 に出力する。ついでにバックアップファイルも作る。

で、各ディレクトリでmakeしたら通った:

sample1_linux $ make -f Makefile_x86_64
nvcc -c -O3 -I/home/tekito/NVIDIA_GPU_Computing_SDK/C/common/inc -maxrregcount 32 sample_1.cu
gcc -o a.out sample_1.o -O3 -L/usr/local/cuda/lib64 -L/home/tekitou/NVIDIA_GPU_Computing_SDK/C/lib -lcudart -lcutil_x86_64





スポンサーサイト
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://tekitobibouroku.blog42.fc2.com/tb.php/258-77b4eac1
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。