CUDA対応ビデオカード搭載の複数ホスト間でGPGPU ( その3:Quadro 4000 ドライバと CUDA Toolkit のインストール )
目次
目的
以前、ubuntu(12.04) 4台で NFS にてファイル共有を行い、OpenMPI でホスト間通信させることで、Linuxクラスタ環境を構築しました。
そして、このクラスタ環境の2ホスト上にCUDA対応ビデオカードを追加し、2ホスト間でGPGPUを行うことを目的として、その前段階としてCUDA対応ビデオカード配置を行いました。
前エントリでは、Tesla C1060 ビデオカードドライバと CUDA Toolkit のインストールを行いましたが、
本エントリでは、Quadro 4000 ビデオカードドライバと CUDA Toolkit のインストールを行う。
方法
CUDA developer ページを参考にした。
http://developer.download.nvidia.com/compute/cuda/6_5/rel/docs/CUDA_Getting_Started_Linux.pdf
NVIDIA® Quadro® 4000
CUDA が使えるグラボを認識しているか調べる
ito@calc2:~$ lspci | grep -i nvidia 01:00.0 VGA compatible controller: NVIDIA Corporation GF100GL [Quadro 4000] (rev a3) 01:00.1 Audio device: NVIDIA Corporation GF100 High Definition Audio Controller (rev a1)
グラボの認識は大丈夫そうです。
CUDA がサポートしているOSかどうか調べる
ito@calc2:~$ uname -m && cat /etc/*release x86_64 DISTRIB_ID=Ubuntu DISTRIB_RELEASE=12.04 DISTRIB_CODENAME=precise DISTRIB_DESCRIPTION="Ubuntu 12.04.4 LTS" NAME="Ubuntu" VERSION="12.04.4 LTS, Precise Pangolin" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu precise (12.04.4 LTS)" VERSION_ID="12.04"
ubuntu12.04 は "DEPRECATED " バージョンですが、良しとします。
gcc のバージョン確認
ito@calc2:~$ gcc --version gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ito@calc2:~$ ito@calc2:~$ icc --version icc (ICC) 14.0.1 20131008 (C) 1985-2013 Intel Corporation. 無断での引用、転載を禁じます。
gcc は 4.6以上ですし、icc は14.01なので、対象バージョンです。
ドライバ・CUDA のインストール
管理者権限で下記を実行します。
wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1204/x86_64/cuda-repo-ubuntu1204_6.5-14_amd64.deb dpkg -i cuda-repo-ubuntu1204_6.5-14_amd64.deb apt-get update apt-get install -y cuda-6-5
Tesla C1060 の CUDA バージョン 6.5 に合わせました。 前エントリの Tesal C1060 の場合と違って、問題もなく簡単にインストールは終わりました。
インストール後に設定するべき項目と、再起動実行後の確認事項
".bashrc" に下記設定を追加した。
export PATH=/usr/local/cuda/bin:$PATH export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
インストール後の出力に「再起動後に module のロードが行われる」と記載がありましたので、このタイミングで再起動を行います。
その後下記を実行し、CUDA Toolkit のコマンドが使えるか確認します。
ito@calc2:~$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2014 NVIDIA Corporation Built on Thu_Jul_17_21:41:27_CDT_2014 Cuda compilation tools, release 6.5, V6.5.12
パスも通っており、コマンドも無事使えました。
サンプル実行
./deviceQuery Starting... CUDA Device Query (Runtime API) version (CUDART static linking) Detected 1 CUDA Capable device(s) Device 0: "Quadro 4000" CUDA Driver Version / Runtime Version 6.5 / 6.5 CUDA Capability Major/Minor version number: 2.0 Total amount of global memory: 2048 MBytes (2147155968 bytes) ( 8) Multiprocessors, ( 32) CUDA Cores/MP: 256 CUDA Cores GPU Clock rate: 950 MHz (0.95 GHz) Memory Clock rate: 1404 Mhz Memory Bus Width: 256-bit L2 Cache Size: 524288 bytes Maximum Texture Dimension Size (x,y,z) 1D=(65536), 2D=(65536, 65535), 3D=(2048, 2048, 2048) Maximum Layered 1D Texture Size, (num) layers 1D=(16384), 2048 layers Maximum Layered 2D Texture Size, (num) layers 2D=(16384, 16384), 2048 layers Total amount of constant memory: 65536 bytes Total amount of shared memory per block: 49152 bytes Total number of registers available per block: 32768 Warp size: 32 Maximum number of threads per multiprocessor: 1536 Maximum number of threads per block: 1024 Max dimension size of a thread block (x,y,z): (1024, 1024, 64) Max dimension size of a grid size (x,y,z): (65535, 65535, 65535) Maximum memory pitch: 2147483647 bytes Texture alignment: 512 bytes Concurrent copy and kernel execution: Yes with 2 copy engine(s) Run time limit on kernels: No Integrated GPU sharing Host Memory: No Support host page-locked memory mapping: Yes Alignment requirement for Surfaces: Yes Device has ECC support: Disabled Device supports Unified Addressing (UVA): Yes Device PCI Bus ID / PCI location ID: 1 / 0 Compute Mode: < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) > deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 6.5, CUDA Runtime Version = 6.5, NumDevs = 1, Device0 = Quadro 4000 Result = PASS
[CUDA Bandwidth Test] - Starting... Running on... Device 0: Quadro 4000 Quick Mode Host to Device Bandwidth, 1 Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 33554432 5188.3 Device to Host Bandwidth, 1 Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 33554432 6252.3 Device to Device Bandwidth, 1 Device(s) PINNED Memory Transfers Transfer Size (Bytes) Bandwidth(MB/s) 33554432 74148.9 Result = PASS
サンプルプログラムの実行も大丈夫でした。
"deviceQuery" と同様の情報はネットでも取得できるとは思いますが、出力結果の一部の値は
CUDAプログラムの最適化の際に利用しますので、実行結果を手元に控えておくことをお勧めいたします。
補足 ( ビデオカード性能 )
今回 OpenGL も使ってみたかったので、Tesla だけでなく Quadro を混ぜた環境にしたのですが、
どうせなら Quadro 4000 で Steam などもやりたいと思い、どの程度の動画描画性能があるのか調べてみました。
lspci の結果からも分かるように GF100コアを用いているの、GeForce GTX 470/465 の性能と同じ位だと想像できます。
そうすると下記のサイトの結果では "3D Mark Vantage スコア8553" (DirectX 10のベンチ) 位の性能みたいです。
また、下記動画の "ワンズちゃんねる!#105 「ELSA特集第2弾」Quadroについて紹介!" では、
性能は "GTX670" 相当との話が出ています。
そうすると性能は "3D Mark 11 スコア3015" (DirectX 11のベンチ) ということになります。
試しに Steam の "The Talos Principle" デモ版を実行してみましたが、カクカクすることなく実行はできていました。
(グラボに詳しくないので今はこれ以上は調査できないですが、他にもゲームをやってみましたら
実行フレームレートなど追記したいと思います。)
http://store.steampowered.com/app/257510/?l=japanese
以上。