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




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

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

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

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

[bash] sh nbody.sh
[/bash] [bash] 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 |
+—————————————————————————–+
[/bash]

計算結果をのぞいてみる

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

[bash] 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
[/bash]

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

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