#topicpath ** CUDA [#i9611829] // 素人が書いています!間違っていたらごめんなさい! Debian(squeeze) に CUDA 5.0 を導入して動かしてみました。 Debian(squeeze) に CUDA 5.0 を導入して動かしてみました。 *** CUDA について [#u7f4bb72] -- CUDA とは~ NVIDIAが提供するGPU向けのC言語の統合開発環境(cf. [[Wikipedia>http://ja.wikipedia.org/wiki/CUDA]])~ ~ -- CUDA 用語 |GPU | Graphical Processing Unit | | |GPGPU | General-Purpose Graphical Processing Unit | 汎用的な計算に用いるGPU | | | | | |SP | Streaming Processor | 演算装置。今では これを CUDAコア と呼ぶ。| |MP | Multi-Processors | 次のSMと同じ (?) | |SM | Streaming Multiprocessor | チップ上に置かれた演算部。内部にいくつもの SP がある。Kepler 以降はSMXと呼ばれる(後述)。 | |GPC| Graphics Processing Cluster | SMX 2基をまとめたもの。| | | | | |Fermi | | ひとつ前の世代 の GPU。SM 中の SP は 32個(16グループx2個)。| |Kepler| | 最新の世代 の GPU。 SMは SMX と呼ばれるようになり、その中のCUDAコア数は 192個(16グループx12個)。| ~ ~ -- CUDA でできること --- 統計パッケージRの計算を速くする。~ cf. http://blogs.yahoo.co.jp/igproj_fusion/9772350.html ~ fastICA も速くなる!?~ cf. http://brainarray.mbni.med.umich.edu/brainarray/rgpgpu/ ~ ~ --- 流体力学などの数値計算を速くする。~ ~ -- CUDA が利用できるGPUs~ --- [[CUDA が使える GPU の一覧>https://developer.nvidia.com/cuda-gpus]]~ 基本的には、チップが適合していれば使える。~ ~ --- GPU の種類~ http://geo.mff.cuni.cz/~hanyk/GUCAS/UoM-Using-PGI.pdf によると、~ ・GeForce : デスクトップ用 ~ ・Quadro : プロのグラフィックス~ ・TESLA : 計算機用~ ~ -- CUDA に似たプロジェクト~ --- OpenCL~ 私の理解では、CUDAと同様にコンパイラを含んだ SDK(ソフトウエア開発キット)である。~ CUDA が nVIDIA の GPU に特化しているのに対して、OpenCL は異なるハードウエアの混在を意識しているようである。~ 実際の SDK には様々な種類があるらしい。~ (cf. [[Wikipedia>http://ja.wikipedia.org/wiki/OpenCL]])~ ~ --- OpenMP~ 私の理解では、コンパイラとは別にライブラリとして整備したものである。~ プログラム中に「ディレクティブ」を挿入することで、並列環境でも非並列環境でも動作するプログラムとして書けるのが特徴。~ (cf. [[Wikipedia>http://ja.wikipedia.org/wiki/OpenMP]])~ ~ --- MPI(Message Passing Interface)~ OpenMP と同様にライブラリとして並列処理を整備したもの。個人的にはずっと以前から名前は知っていた。~ 具体的なライブラリは、[[Open MPI>http://www.open-mpi.org/]] とか MPICH とかがある。~ (cf. [[Wikipedia>http://ja.wikipedia.org/wiki/Message_Passing_Interface]])~ ~ *** ハードウエアの装着 [#d1cc3287] -- 購入したもの~ &amazon(B00B1AW7O0);([[価格COM>http://kakaku.com/item/K0000430512]])~ &amazon(B00B1AW7O0,image);~ ~ --- 情報~ | ベースとなるコア| GK106 | | Total amount of global memory: |2048 MBytes (2147287040 bytes)| | ( 5) Multiprocessors x (192) CUDA Cores/MP: |960 CUDA Cores| | GPU Clock rate: |1072 MHz (1.07 GHz)| | Memory Clock rate: |3004 Mhz| | Memory Bus Width: |192-bit| ~ ~ --- 理論性能~ cf. [[Nordic Hardware>http://www.nordichardware.com/graphics/geforce-gtx-650-ti-detailed-better-than-expected.html]]~ |・単精度 | 1クロックで CUDA コアあたり 最大2演算できる(ただし制約は大きい)。|→ 2.054 TFLOPS|RIGHT:(2054 GFLOPS)| |・倍精度 | 1クロックで SMX あたり最大16演算できる(ただし制約は大きい)。|→ 0.086 TFLOPS|RIGHT:(86GFLOPS)| ~ -- 取り付け時の注意 +++ PCIExpress x16 のポートの他に、もう一枚分のスペースを使うことになる。 +++ マザーボードに挿した上で、別途、グラフィックボードに電源を供給する必要がある。 +++ %% 起動時に BIOS を設定し、マザーボードのグラフィックスボードを利用するようにし、%%~ %% 取り付けたグラフィックカードを利用しないようにする。%%~ COLOR(RED): むしろ、グラフィックカードとして使用しないとサンプルプログラムのいくつかは動かない!~ ~ *** 開発環境(ソフトウエア)の整備 [#u20e018c] -- 参考URL~ --- [[Masteries>http://blog.papix.net/entry/2012/11/06/185857]] --- [[ぬうぱんの備忘録とか>http://d.hatena.ne.jp/NU_Pan/20121119]]~ これを見ると、CUDA 5 (Ubuntu11.10用) は現行の Debian ではうまくいかないようである。~ そこで、Ubuntu10.04用を試すことにする。~ ~ -- ダウンロード~ --- ドライバ~ http://www.nvidia.co.jp/Download/index.aspx?lang=jp から、自分の環境にあったものを選んでダウンロード。~ 70MB弱。~ ~ --- 本体 (CUDA 5.0)~ https://developer.nvidia.com/cuda-downloads から Ubuntu 10.04 (64bit 環境なので 64bit 用)をダウンロード。~ 670MB もあるので、ダウンロード中は別の仕事をする。~ ~ --- Debian パッケージ~ 次のようなパッケージを導入した。~ libglut3-dev, libXi-dev, libXmu-dev~ ~ -- ドライバの導入スクリプトの実行~ --- root で bash NVIDIA-Linux-x86_64-310.32.run --- DKMS(Dynamic Kernel Module Support)を Yes にするとうまくいかなかった。No にする。~ ~ -- CUDA本体の導入スクリプトの実行~ --- root で bash cuda_5.0.35_linux_64_ubuntu10.04-1.run --- 指示に従って処理する。~ ・グラフィックドライバは導入しないつもりだった。しかし、そうするとサンプルプログラムがコンパイルできない。~ → sudo cuda_5.0.35_linux_64_ubuntu10.04-1.run -silent -driver でドライバだけインストールするように指示されるが、うまく導入できない。~ → そこで前述のドライバを別途導入した。~ ~ -- 確認~ サンプルプログラムのページで make してうまくいけばよい。~ ちなみに、サンプルプログラム matrixMulCUBLAS を実行すると、&color(red){487 GFlops}; 程度~ また、サンプルプログラムで描画するものは、むしろ nVIDIA GPU をグラフィックボードにしないと機能しないことがわかった。~