heyheytower

日々のメモです。誰かのお役に立てれば幸いです。

CUDA対応ビデオカード搭載の複数ホスト間でGPGPU ( その3:Quadro 4000 ドライバと CUDA Toolkit のインストール )

nvidia-1201074_640.jpg

目次

目的

以前、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のベンチ) 位の性能みたいです。

www.dospara.co.jp

また、下記動画の "ワンズちゃんねる!#105 「ELSA特集第2弾」Quadroについて紹介!" では、
性能は "GTX670" 相当との話が出ています。

www.youtube.com

そうすると性能は "3D Mark 11 スコア3015" (DirectX 11のベンチ) ということになります。

試しに Steam の "The Talos Principle" デモ版を実行してみましたが、カクカクすることなく実行はできていました。
(グラボに詳しくないので今はこれ以上は調査できないですが、他にもゲームをやってみましたら
実行フレームレートなど追記したいと思います。)

http://store.steampowered.com/app/257510/?l=japanese

以上。