電子計算記

個人的な検証を

IDCFクラウドのGPUインスタンス

IDCF Cloud Advent Calendar 2016 の12/10が空いていたので個人的に責任(ぉ)をとって埋めておきますね。

新リージョンこと東日本リージョン2と併せて、GPUインスタンスであるgpu.7XLM40がリリースされてます。
56vCPUなので7XL(XL=8vCPU)、NVIDIAGPU TeslaのモデルからM40となってます。

このあたりのGPUなんちゃらの話は、12/8のアドカレの通りオフィシャルのテックブログに書かれてます。

blog.idcf.jp

手元にあるGPUとしてJetson TK1があったので、gpu.7XLM40と比べてみます。


本題の前に、上記テックブログのエントリーでは、CentOSにCUDA入れてますが、以降ではUbuntu14.04を使ってるので、インストールコマンドだけ書いておきます。

# apt update && apt upgrade -y && reboot

# wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_8.0.44-1_amd64.deb
# dpkg -i cuda-repo-ubuntu1404_8.0.44-1_amd64.deb
# apt update
# apt install cuda -y
# reboot

# export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
# export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

ここでwgetしてるリポジトリファイルの最新は以下から入手してください。

developer.nvidia.com


昔と違ってCUDA入れるのも楽になりましたよねー、動作確認としてはCUDAと一緒に入る以下のコマンドで。

# nvidia-smi
Fri Nov 25 21:36:06 2016
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 361.93.02              Driver Version: 361.93.02                 |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla M40 24GB      On   | 0000:03:00.0     Off |                    0 |
| N/A   38C    P8    17W / 250W |      0MiB / 22944MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+


+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+


では、Jetson TK1とgpu.7XLM40比べていきましょう。
前提として、Jetson TK1はCUDA6.5、gpu.7XLM40は上記のとおりCUDA8.0です。

Jetson TK1は、Keplerが 192 CUDA Core。
gpu.7XLM40は、Maxwellが 3072 CUDA Core。

では、CUDAのsmplesを動かして比較してみましょう。

まずはbandwidthTestでデータ転送速度を見ます。

$ ./bandwidthTest 
Jetson TK1 gpu.7XLM40
Host to Device(MB/s) 998.2 7907.7
Device to Host(MB/s) 5464.7 8288.7
Device to Device(MB/s) 11901.5 211407.8

わかってましたが桁違いの差ですね。
次にnbodyでFLOPSを見ます。

$ ./nbody -benchmark -numbodies=16384
$ ./nbody -benchmark -numbodies=16384 -fp64
$ ./nbody -benchmark 
Jetson TK1 gpu.7XLM40
-numbodies=16384(GFLOP/s) 13.356 3216.793
-numbodies=16384 -fp64(GFLOP/s) 0.865 142.198
-numbodies=131072(GFLOP/s) 13.393 4003.906

こちらも圧倒的な差ですね。Maxwell倍精度遅いと言っても、Jetson TK1と比べると圧倒的な差ですね。
今日はここまで、次回はTesla M40の用途に合わせてDeep Learningの性能を見ていきましょう。