g2で1TFLOPSがcg1だと倍になった

g2時の記事はこちらをご覧下さい

AWSで使えるGPUインスタンスはたったの2種類ということで、泣きながら作ったAMIをくっつけて起動するだけのお手軽テストが可能なので、インスタンスタイプをcg1.4xlargeに変えてnBodyを投げてみた。

こちらは物理的に1ノードに2枚のGPUが装着されている様子。消費電力値などが取れていないのは、ハードウェアの制約なのかドライバを再インストールする必要があるのかは不明。

というか、古い世代のGPUが刺さってるので、これはこれで1からAMIを作った方が美しさという意味ではげふんげふん

sh nbody.sh
nvidia-smi -l
Sat Mar  8 08:07:48 2014
+------------------------------------------------------+
| NVIDIA-SMI 5.319.37   Driver Version: 319.37         |
|-------------------------------+----------------------+----------------------+
| 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 M2050         Off  | 0000:00:03.0     Off |                    0 |
| N/A   N/A    P0    N/A /  N/A |       61MB /  2687MB |     99%      Default |
+-------------------------------+----------------------+----------------------+
|   1  Tesla M2050         Off  | 0000:00:04.0     Off |                    0 |
| N/A   N/A    P0    N/A /  N/A |       61MB /  2687MB |     99%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Compute processes:                                               GPU Memory |
|  GPU       PID  Process name                                     Usage      |
|=============================================================================|
|    0      2353  ./nbody                                              104MB  |
|    1      2353  ./nbody                                              104MB  |
+-----------------------------------------------------------------------------+

計算結果をのぞいてみる

ノード内での並列計算が出来ているかどうかもポイントになる。

cat log/nbody.log
number of CUDA devices  = 2
> Windowed mode
> Simulation data stored in system memory
> Single precision floating point simulation
> 2 Devices used for simulation
GPU Device 0: "Tesla M2050" with compute capability 2.0

> Compute 2.0 CUDA device: [Tesla M2050]
> Compute 2.0 CUDA device: [Tesla M2050]
number of bodies = 200000
200000 bodies, total time for 10 iterations: 3878.218 ms
= 103.140 billion interactions per second
= 2062.803 single-precision GFLOP/s at 20 flops per interaction

2TFLOPS近く、安定して出てますね

倍精度のことを考えるとg2よりcg1インスタンスの方が使いやすいのかもしれない。。。-fp64オプション付けてnBody投げるだけなのだけど、出し惜しみです。要調査。