4 Node FDR Infiniband Clusterの性能評価を行った。FDR Infinibandのデーター転送速度はQDR Infinibandの約1.7倍であることが確認された。メモリーアクセスが多いプログラムの場合、メモリー帯域不足が原因で1ノード当たり16コア程度で性能は頭打ちになる。4ノードの並列実行では1ノードの3.91倍の性能になった。

 

各ノードのCPUはIntel Xeon E5-2680v3(2.5GHz 12Core) × 2、メモリーは128GB(16GB × 8)、HDDは1TBの構成だ。付属のMellanox製12ポートのFDR InfinibandスイッチMSX6005の4ポートを使い、付属の1mのケーブルで4ノードを接続してある。OSはCentOS6.7、Mellanox OFEDドライバーのバージョンは3.1-1.0.3、クラスターには標準では付属していないがIntel Composerのバージョンは15.0.3.187、それを使ってbuildしたOpenMPIのバージョンは1.10.1、ジョブスケジューラーとしてopenlava-3.1をインストールしてある。
$ uname -a
Linux hpc1 2.6.32-573.8.1.el6.x86_64 #1 SMP Tue Nov 10 18:01:38 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/centos-release
CentOS release 6.7 (Final)
$ ofed_info -s
MLNX_OFED_LINUX-3.1-1.0.3:
$ ifort -V
Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 15.0.3.187 Build 20150407
Copyright (C) 1985-2015 Intel Corporation. All rights reserved.
$ ompi_info | head
Package: Open MPI root@hpc1 Distribution
Open MPI: 1.10.1
Open MPI repo revision: v1.10.0-178-gb80f802
Open MPI release date: Nov 03, 2015
Open RTE: 1.10.1
Open RTE repo revision: v1.10.0-178-gb80f802
Open RTE release date: Nov 03, 2015
OPAL: 1.10.1
OPAL repo revision: v1.10.0-178-gb80f802
OPAL release date: Nov 03, 2015
$ head /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 63
model name : Intel(R) Xeon(R) CPU E5-2680 v3 @ 2.50GHz
stepping : 2
microcode : 50
cpu MHz : 1200.000
cache size : 30720 KB
physical id : 0
$ bhosts -V
OpenLava 3.1, Nov 5 2015

最初にOSU Micro-BenchmarksでFDR Infinibandの転送速度を計測した。OSU Micro-Benchmarksの過去の記事はこちら。表1のv5.1が今回FDR Infinibandで測定した結果で、v4.0.1が過去の記事を書いた時にQDR Infinibandで測定した結果だ。FDRがQDRに対して約1.7倍高速であることがわかる。FDRは56GBps、QDRは40GBpsでその比は1.4倍である。どうして測定結果は1.7倍なのだろうか。56GBpsと40GBpsはデータの転送速度ではなくクロックの速度である。FDRの56GBpsの場合は64b/66bエンコーディングを使っていてデーターの転送速度はは56×64/66=約54.30GBpsになって、クロックのほとんどがデーター転送に使われている。一方QDRの40GBpsの場合は8b/10bエンコーディングを使っていてデーターの転送速度は40×8/10=32GBpsしかなく、クロックよりデーター転送速度はだいぶ落ちてしまう。データー転送速度の比をとると54.3/32=約1.7となって、測定結果と一致する。FDR Infinibandの性能は十分に出ていると言っていいだろう。

表1
OSU MPI Bandwidth Test
  v5.1 v4.0.1  
# Size  Bandwidth (MB/s)  
  FDR QDR FDR/QDR
1 3.04 1.29 2.36
2 6.40 2.68 2.39
4 12.90 6.13 2.10
8 25.21 17.17 1.47
16 49.31 34.17 1.44
32 97.66 66.30 1.47
64 189.29 131.07 1.44
128 362.14 286.24 1.27
256 641.76 545.00 1.18
512 1238.86 1051.96 1.18
1024 2223.75 1909.01 1.16
2048 3737.55 2429.00 1.54
4096 5230.29 2997.33 1.74
8192 5664.37 3268.66 1.73
16384 5957.80 3097.32 1.92
32768 6200.98 3313.34 1.87
65536 6189.09 3460.37 1.79
131072 6334.85 3693.55 1.72
262144 6356.10 3751.95 1.69
524288 6369.55 3781.65 1.68
1048576 6373.81 3804.27 1.68
2097152 6388.11 3811.37 1.68
4194304 6390.81 3817.67 1.67

 

次にCPUとメモリーも含めたシステム全体の性能評価を姫野ベンチマークテストを使って行った。ソースコードの種類はFortran90 + MPI、実行時の配列のサイズは一番大きいXL(1024 x 512 x 512)を使った。このテストはメモリーアクセスが非常に多いプログラムである。表2は結果のMFLOPS表示、表3は結果の相対表示である。1ノードで並列コア数を増やしていくと表3からわかる通り、性能の伸びはどんどん落ちていき、20コアあたりで限界に達する。1ノードでの最高性能は、52.668GFLOPSであることが表2からわかる。並列計算コア数が増えても性能が伸びない原因が、並列計算のオーバーヘッドにあるのか、メモリー帯域不足にあるのかは、同じコア数での2ノードまたは4ノードでの性能を見れば明らかである。1ノードで24コアの並列計算では52.442GFLOPSだが、2ノードで24コアの並列計算では98.730GFLOPS、4ノードでの同じく24コアの並列計算では137.812GFLOPSと、ノード数を増やしてメモリー帯域を2倍、4倍にすると性能は上がる。1ノードではコア数を増やしてもメモリー帯域不足が原因で性能は上がっていないことがわかる。表3の相対性能で見ると、1ノードでは24コア使っても8.91コア分の性能しか出ないが、2ノードにすると24コア使うと16.77コア分の性能が出るようになり、4ノードで24コア使うと23.41コア分の性能が出ていることになる。しかし各ノード数での最高性能を出すには、効率は低下するが、ある程度の並列実行コア数がないとできないことがわかる。並列実行効率が良い少ないコア数では、メモリーとキャッシュ間の転送に空き時間があり、メモリー帯域を全部は使い切ることができないのだろう。この種のメモリーアクセスが多いプログラムの場合、1ノードあたり16〜20コアで最高性能が出るようだ。お薦めのCPUを1つ選択するとすればE5-2660v3(2.6GHz 10Core 105W)になる。この場合4 Node FDR Infiniband Clusterの価格は¥3,538,000(税抜き)、1U Twin FDR Infiniband Clusterの価格は¥1,374,700(税抜き)になる。1ノードで計算時間が長すぎてお困りの場合、2ノードまたは4ノードのFDR Infiniband Clusterを検討されてはいかがでしょうか。  

 表2
Himeno Benchmark Test MPI Version 
  MFLOPS
#Core 1 Node 2 Node 4 Node
2 11,775.91    
4 25,150.60 26,498.77  
6 35,108.73    
8 42,359.61 49,794.05 52,320.22
10 46,790.57    
12 49,375.51 68,901.25  
14 50,867.38    
16 52,115.89 84,215.70 100,487.44
18 52,154.63    
20 52,668.61 92,091.00  
22 52,622.11    
24 52,442.97 98,730.35 137,812.15
26      
28   101,136.31  
30      
32   104,442.37 166,847.49
34      
36   103,147.60  
38      
40   103,985.62 184,223.13
42      
44   104,631.04  
46      
48   103,885.91 192,333.50
50      
52      
54      
56     199,101.61
58      
60      
62      
64     206,017.60
66      
68      
70      
72     205,147.64
74      
76      
78      
80     205,836.03
82      
84      
86      
88     205,066.35
90      
92      
94      
96     203,025.10

 

 表3
Himeno Benchmark Test MPI Version 
  相対性能
#Core 1 Node 2 Node 4 Node
2 2.00    
4 4.27 4.50  
6 5.96    
8 7.19 8.46 8.89
10 7.95    
12 8.39 11.70  
14 8.64    
16 8.85 14.30 17.07
18 8.86    
20 8.95 15.64  
22 8.94    
24 8.91 16.77 23.41
26      
28   17.18  
30      
32   17.74 28.34
34      
36   17.52  
38      
40   17.66 31.29
42      
44   17.77  
46      
48   17.64 32.67
50      
52      
54      
56     33.82
58      
60      
62      
64     34.99
66      
68      
70      
72     34.84
74      
76      
78      
80     34.96
82      
84      
86      
88     34.83
90      
92      
94      
96     34.48