メモ CUDA/製品

NVIDIA GeForce GT 710 を今更ながら購入した。超がつくほどのエントリーなグラフィックカードです。
このカードを選んだのは安価で、音もなく、Compute Capabilityが3.5とあるから。
https://developer.nvidia.com/cuda-gpusここには書いてないけど...

この安いカードでCUDA対応なアプリを試してみた。
*当然Teslaやハイエンドカードなら研究者にとって満足な速度を得られるのでしょうが、ここはそうゆうのを目的にしてないので、、

まずこのカードをCentOS 7マシンに搭載してみた。

[root@e ~]# lsb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description:    CentOS Linux release 7.2.1511 (Core)
Release:        7.2.1511
Codename:       Core
[root@e ~]#
[root@e ~]# lspci -vv 
(略
01:00.0 VGA compatible controller: NVIDIA Corporation Device 128b (rev a1) (prog-if 00 [VGA controller])
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 8c93
 :
                LnkCap: Port #0, Speed 5GT/s, Width x8, ASPM not supported, Exit Latency L0s <512ns, L1 <4us
 :
                LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
(略
01:00.1 Audio device: NVIDIA Corporation GK208 HDMI/DP Audio Controller (rev a1)
        Subsystem: Micro-Star International Co., Ltd. [MSI] Device 8c93
 :
                LnkCap: Port #0, Speed 5GT/s, Width x8, ASPM not supported, Exit Latency L0s <512ns, L1 <4us
 :
                LnkSta: Speed 5GT/s, Width x8, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
(略
[root@e ~]#

pcie2.0の x8 で接続されている。物理的なインターフェースはx16なのだが、、まぁいい。チップはGK208。

CUDA環境のインストール

ここからhttps://developer.nvidia.com/cuda-downloads CentOS 7 向けのパッケージを選択してインストールします。
ここではネットワーク経由でインストールする rpm(network) を選びました
2016y08m16d_214059017.png

入手したインストーラー(cuda-repo-rhel7-7.5-18.x86_64.rpm)をまずCentOS7にインストールして、

[root@e ~]# rpm -qpli ./cuda-repo-rhel7-7.5-18.x86_64.rpm
警告: ./cuda-repo-rhel7-7.5-18.x86_64.rpm: ヘッダー V3 DSA/SHA1 Signature、鍵 ID 5c37d3be: NOKEY
Name        : cuda-repo-rhel7
Version     : 7.5
Release     : 18
Architecture: x86_64
Install Date: (not installed)
Group       : NVIDIA
Size        : 185
License     : NVIDIA License
Signature   : DSA/SHA1, 2016年01月29日 09時35分40秒, Key ID d88c3d385c37d3be
Source RPM  : cuda-repo-rhel7-7.5-18.src.rpm
Build Date  : 2016年01月29日 09時35分40秒
Build Host  : vm-fedora21-x64-001.nvidia.com
Relocations : /
Summary     : CUDA repo configuration files.
Description :
 Contains configuration files needed to set up access to the
 CUDA repository.
.
/etc/yum.repos.d/cuda.repo
 
[root@e ~]#
[root@e ~]# yum localinstall ./cuda-repo-rhel7-7.5-18.x86_64.rpm

その後に本体をインストールします。がepelリポジトリにある dkms が必要なので、事前にepelリポジトリはインストールしておきます。

[root@e ~]# yum -y install epel-release
[root@e ~]# yum install cuda

テスト

nvidia-smiで確認してみようかと思ったのだが、、、

[root@e ~]# nvidia-smi -h
(略
Supported products:
- Full Support
    - All Tesla products, starting with the Fermi architecture
    - All Quadro products, starting with the Fermi architecture
    - All GRID products, starting with the Kepler architecture
    - GeForce Titan products, starting with the Kepler architecture
- Limited Support
    - All Geforce products, starting with the Fermi architecture
(略

とあるようにこのデバイスは、nvidia-smiのLimited Supportに該当するようだ。
そのためだろうか、

[root@e ~]# nvidia-smi
Tue Aug 16 22:18:08 2016
+------------------------------------------------------+
| NVIDIA-SMI 352.93     Driver Version: 352.93         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 710      Off  | 0000:01:00.0     N/A |                  N/A |
| 50%   59C    P0    N/A /  N/A |      5MiB /  2047MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
+-----------------------------------------------------------------------------+
[root@e ~]#

としても物理的な状態(fan、温度、メモリーら)は提示してくれるが、Process情報がでてこない。Not Supportedである。

CUDA対応のNAMDで計算を行うと

[root@e ~]# nvidia-smi
Tue Aug 16 22:53:17 2016
+------------------------------------------------------+
| NVIDIA-SMI 352.93     Driver Version: 352.93         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 710      Off  | 0000:01:00.0     N/A |                  N/A |
| 54%   63C    P0    N/A /  N/A |    161MiB /  2047MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
+-----------------------------------------------------------------------------+
[root@e ~]#

とメモリー使用量が跳ね上がる。だが、プロセス情報とかは見えない。
NAMDのテストデータ(apoa1.namd)で実際にCUDA有無で計算してみた。
CPUはi7-4771,MEM 16GBのシングルノード2coreでの計算

CUDA結果
GeForce GT 710Info: Benchmark time: 2 CPUs 0.168253 s/step 1.94737 days/ns 263.074 MB memory
NoInfo: Benchmark time: 2 CPUs 0.37438 s/step 4.3331 days/ns 470.238 MB memory

Quadro K600

昔購入したQuadro K600。GeForce GT 710から挿し代えてみた。
仕様的には「PCI Express 2.0 x16」なのだが、

[root@e ~]# lspci -vv |less
(略
01:00.0 VGA compatible controller: NVIDIA Corporation GK107GL [Quadro K600] (rev a1) (prog-if 00 [VGA controller])
        Subsystem: NVIDIA Corporation Device 094b
 :
                LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <512ns, L1 <4us
 :
                LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
 :
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)
        Subsystem: NVIDIA Corporation Device 094b
 :
                LnkCap: Port #0, Speed 5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <512ns, L1 <4us
 :
                LnkSta: Speed 2.5GT/s, Width x16, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
(略

とPCIExpress 1.0 の x16で接続しているように見える。だが、nvidia-smiを実行すると

[root@e ~]# nvidia-smi
modprobe: ERROR: could not insert 'nvidia': No such device
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. (略

とエラーが発生して、どうやら繋がっていない模様。
BIOS側で当該のPCIEスロットをPCIE2.0に限定するとようやく nvidia-smi が使えるようになった。
*BIOSでPCIE2.0と限定しても「lspci -vv」の値に変化はなかった

[root@e ~]# nvidia-smi -q |less
(略
    PCI
        Bus                         : 0x01
        Device                      : 0x00
        Domain                      : 0x0000
        Device Id                   : 0x0FFA10DE
        Bus Id                      : 0000:01:00.0
        Sub System Id               : 0x094B10DE
        GPU Link Info
            PCIe Generation
                Max                 : 2
                Current             : 2
            Link Width
                Max                 : 16x
                Current             : 16x
(略
[root@e ~]#

とnvidia-smiの出力からは PCIE2.0のx16と仕様と同様の接続ができている。lspciの出力が間違い?
再度、NAMDのテストデータ(apoa1.namd)で実際にCUDA有無で計算してみた。
quadraカードなのでProcess情報も表示してくれる。

[root@e ~]# nvidia-smi
Wed Aug 17 20:42:36 2016
+------------------------------------------------------+
| NVIDIA-SMI 352.93     Driver Version: 352.93         |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Quadro K600         Off  | 0000:01:00.0     Off |                  N/A |
| 29%   58C    P0    N/A /  N/A |    159MiB /  1023MiB |     99%      Default |
+-------------------------------+----------------------+----------------------+
 
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0      1112    C   ...MD_2.11_Linux-x86_64-multicore-CUDA/namd2   151MiB |
+-----------------------------------------------------------------------------+
[root@e ~]#
CUDA結果
Quadro K600
(GK107,876 MHz,192コア,1GB DDR3)
Compute Capability: 3.0
Info: Benchmark time: 2 CPUs 0.27054 s/step 3.13125 days/ns 223.168 MB memory

まぁ、Hzの違いもあるが、大きくは Compute Capability の違いで差が出たのかな?

(再掲)

CUDA結果
GeForce GT 710
(GK208,954 MHz,192コア,2GB DDR3)
Compute Capability: 3.5
Info: Benchmark time: 2 CPUs 0.168253 s/step 1.94737 days/ns 263.074 MB memory
NoInfo: Benchmark time: 2 CPUs 0.37438 s/step 4.3331 days/ns 470.238 MB memory

cuda-z

cpu-zと名称が似ているのだが、GUIで搭載GPUカードの詳細を教えてくれるアプリケーションがある
http://cuda-z.sourceforge.net/
Linux64bit版(CUDA-Z-0.10.251-64bit.run)をダウンロードして、GeForce GT 710を搭載したマシンで実行してみた

[root@s ~]# ./CUDA-Z-0.10.251-64bit.run

暫くすると画面が表示される(Xming経由でwindowsから撮影してます)
2016y11m14d_221259135.png
この画面の「Performance」タブを選択すると、リアルタイムでGPUのベンチを取ってくれる。
画面下部に「Export」ボタンがあり、そこから「to Text」を選んで数値を保存することもできます。
2016y11m14d_221624844.png
保存したTextには

[root@s ~]# less CUDA-Z.txt
 :
GPU Core Performance
        Single-precision Float: 293.395 Gflop/s
        Double-precision Float: 15.2506 Gflop/s
 :
[root@s ~]#

と書かれていた。倍精度計算は、単精度計算の20分の1って感じですね。

めも

新規のマシンにCentOS7を載せて cuda をインストールしても

[root@s ~]# nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. (略

lsmodで確かめてロードされていないことが分かったが、/lib/modules/`uname -r`/extra をみると正しく入っている
調べてみるとマザーボードのSecure Bootが原因だった。これを無効にしたらすんなり行けた

消費電力、Hz、温度をcsvに書き出す場合

nvidia-smi --query-gpu=index,timestamp,power.draw,clocks.sm,clocks.mem,clocks.gr,temperature.gpu --format=csv -l 10 | tee -a log

とする。「-l」で採取間隔が指定できる。単位は秒


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2016-11-14 (月) 22:21:53 (275d)