スーパーコンピュータのネットワーク 情報ネットワーク特論 南里豪志 ( 九州大学情報基盤研究開発センター ) 1
今日の講義内容 スーパーコンピュータとは どうやって計算機を速くするか スーパーコンピュータのネットワーク 2
スーパーコンピュータとは? " スーパー " な計算機 = その時点で 一般的な計算機の性能をはるかに超える性能を持つ計算機 スーパーコンピュータの用途 主に科学技術分野 創薬 分子構造シミュレーション 車 飛行機等の設計 構造シミュレーション 気象予測 熱力学シミュレーション等 出典 : http://eng.mod.gov.cn/database/academies/2013-06/18/content_4455818_2.htm 出典 : https://www.llnl.gov/news/aroundthelab/2012/jun/atl- 061812_sequoia.html 近年 他の分野でも利用拡大 株価変動予測 交通量解析 ソーシャルネットワーク上のデータ解析 顧客の行動予測等 出典 : http://www.aics.riken.jp/jp/k/facility.html 常に より高い性能の計算機を要求 3
計算機の 理論的な 最大性能 FLOPS (FLoating Operations Per Second) 一秒間に実行できる実数演算 (floating point operation) の数 実数計算がほとんどを占める科学技術計算で使用 理論的な最大 FLOPS の計算式 : Theoretical Peak FLOPS = frequency of CPU(CPU のクロック周波数 ) x number of operations per clock (1 クロックあたりの演算数 ) x number of CPUs (CPU の数 ) 例えば : 1GHz で 1 クロック当たり 4 個の演算を実行できる CPU を 1000 個搭載する計算機の理論的な最大 FLOPS = 4000 GFLOPS = 4 TFLOPS (Tera FLOPS) 4
実際の計算機の性能 例えば CPU は 以下を待つ間 計算が出来ない 計算すべきデータが ディスク メモリ ネットワークから CPU に届く 他の CPU との同期が完了する なので 実際の計算機の性能は プログラムに依存する 例 ) 多数の仕事に分けて 分担させることができるプログラム 低速の CPU を多数持つ計算機で高い性能が得られる 仕事の分割や分担が難しいプログラム 非常に高速な CPU を持つ計算機でなければ 高い性能が得られない 同じプログラムを各計算機で実行して実行時間を比較 ベンチマークプログラム 5
Top500 List http://www.top500.org 最も有名な スーパーコンピュータ性能比較リスト 稼働中のスーパーコンピュータの 1 位 ~500 位を掲載 毎年 6 月と 11 月に更新 LINPACK ベンチマークプログラムの性能で順位付け 連立一次方程式の解を求める計算 比較的 理論的な最大性能に近い性能が出る 他の計算機との比較や傾向の分析などが容易 1993 年からほとんど同じ条件で更新を継続 世界中のほぼ全てのスーパーコンピュータが登録 スーパーコンピュータ開発競争に利用 6
スーパーコンピュータの例 : 地球シミュレータ 2002 年 3 月に稼働を開始 主に NEC が開発 開発目標 : 10km 四方 ( 赤道近辺 ) の精度で地球全体の大気循環をシミュレート それまでは 100km 四方 例えば台風の発生過程 :100km 四方だと台風が台風に見えない 地球シミュレータの成果 台風進路予測 5.5km 四方で地球全体をシミュレート ( 日本近辺は 2.78km 四方 ) 海底探査船 ちきゅう に 正確な台風進路の予測結果を 到達予定の 3 日前までに提供 台風発生予測 過去 10 年間についてシミュレーションによる台風発生回数が実際の値とほぼ一致 7 CO2 の増加に伴う温暖化の予測 2040 年には年間の真夏日日数が約 20 日増加, 平均気温が約 2 度上昇.
Top500 における地球シミュレータの性能 Linpack 性能 35.8TFLOPS ( 理論最大性能 41.0TFLOPS) = 1 秒あたりの 35 兆回の実数計算 断トツの 1 位 2 位から 10 位までの計算機の演算性能の合計を上回る性能 (2002 年 6 月時点 ) Computenik = 計算機分野での Sputnik だ! (in New York Times) by Jack Dongarra 教授テネシー大学教授 Top500 サイトの創始者 USA のスーパーコンピュータ開発意欲に火を付けた 8
USA の逆襲 (2004 年 ) IBM Blue Gene/L (2004 年 11 月 ~) http://www.research.ibm.com/bluegene/ 70.7TFLOPS ( 理論最大性能 91.8TF) ちなみに地球シミュレータ (35TFLOPS) は 3 位に後退 まだ完成形ではない : 2005 年前半に さらに 4 倍高速化する計画 日本のすべてのスーパーコンピュータをかき集めても追いつかない規模になる 9
USA の逆襲 (2005 年 ) IBM Blue Gene/L (2005 年 11 月 ) 280.6TFLOPS ( 理論最大性能 367.0TFLOPS) 世界で初めて 100TFLOPS を越えた計算機 地球シミュレータは 7 位に後退 本当に日本のすべてのスーパーコンピュータをかき集めても追いつかない規模に 世界 500 位に入った計算機の性能の国別合計 : 1 位 USA 68.3% 2 位 Japan 5.68 % 3 位 UK 5.41% 4 位 Germany 3.10% 5 位 China 2.59% 以下 Australia, Switzerland, Netherland, Korea,... 10
1 位の計算機の変遷 2006 年 ~2014 年 Appear Name Country Linpack Peak 2000. 11 - ASCI White USA 7.2 TFLOPS 12.3 TFLOPS 2002. 6 - Earth Simulator Japan 35.9 TFLOPS 41.0 TFLOPS 2004. 11 - BlueGene/L USA 478.2 TFLOPS 596.4 TFLOPS 2008. 6 - RoadRunner USA 1.1 PFLOPS 1.5 PFLOPS 2009. 11 - Jaguar USA 1.8 PFLOPS 2.3 PFLOPS 2010. 11 - Tianhe-1A China 2.6 PFLOPS 4.7 PFLOPS 2011. 6 - K computer Japan 10.5 PFLOPS 11.3 PFLOPS 2012. 6 - Titan USA 17.6 PFLOPS 27.1 PFLOPS 2013. 6 - Tianhe-2 China 33.9 PFLOPS 54.9 PFLOPS 11
最新情報 : 2014 年 6 月 1 位 Tianhe-2(China) 33.9 PFLOPS 2 位 Titan (USA) 17.6 PFLOPS 3 位 Sequoia (USA) 17.1 PFLOPS 4 位 K Computer(Japan) 10.5 PFLOPS 国別合計 : 1 位 USA 44.7% (122.5 PFLOPS) 2 位 China 19.0% ( 52.1 PFLOPS) 3 位 Japan 8.7% ( 23.9 PFLOPS) 4 位 UK 5.4% ( 14.9 PFLOPS) 5 位 Germany 5.4% ( 14.8 PFLOPS) 以下,France, Switzerland, Italy, India, Australia, Korea,... 来月 更新予定 12
どうやって計算機を速くするか? CPU を速くする クロック周波数の向上 命令レベル並列処理の向上 電力 熱の限界 命令レベル並列性の限界 プロセッサコア数の増加 アクセラレータの利用 13
プロセッサを増やす 現在の計算機 = 複数のプロセッサを搭載した並列計算機 スーパーコンピュータだけでなく PC やタブレット スマートフォンまで あらゆる計算機が並列計算機 スーパーコンピュータのプロセッサコア数 Name Number of Cores K computer 705,024 Titan 560,640 Tianhe-2 3,120,000 タブレットのプロセッサコア数 Name Number of Cores Nexus9 2 ipadair2 3 Xperia Z3 Tablet 4 YOGA Tablet 2 4 14
並列計算機 仕事を複数のプロセッサに分担させて高速化 = 並列処理 普通の処理 仕事 1 並列処理 仕事 1 仕事 2 仕事 3 仕事 2 仕事 3 うまく分担できればプロセッサの数に応じて性能向上 並列処理をするには? 並列プログラムが必要 15
並列プログラム 並列処理に必要な事項を含むプログラム 各 CPU コアへの仕事の分担のさせ方 相互の情報交換 CPU コアの間の同期等 普通のプログラム (= 並列じゃないプログラム ) とどう違う? 16
普通のプログラムの例 : 2 つのベクトルの和を計算 0 番目から 99 番目までの要素を順に計算 A B C... 0 99 プログラム double A[100], B[100], C[100];... for (i = 0; i < 100; i++) A[i] = B[i] + C[i]; 17
並列プログラムの例 : 複数の スレッド で並列処理 スレッド : 同じ記憶空間を共有しながら進行する流れ A B C スレッド 0 スレッド 1 スレッド 2 スレッド 3... 25... 50... 75... 0 24 49 74 99 全スレッドが同じ配列を共有 double A[100],B[100],C[100];... double A[100],B[100],C[100]; for (i=0; i<25; i++)... double A[100],B[100],C[100]; A[i] = B[i] + for C[i]; (i=25; i<50; i++)... double A[100],B[100],C[100]; A[i] = B[i] + C[i]; for (i=50; i<75; i++)... A[i] = B[i] + C[i]; for (i=75; i<100; i++) スレッド0 スレッド1 A[i] = B[i] + C[i]; スレッド2 18 スレッド3
スレッドによる並列化の利点と欠点 利点 : 比較的簡単に並列化 自動並列化コンパイラ等も利用可能 欠点 : 基本的に 共有メモリ型並列計算機 向け 分散メモリ型並列計算機 では使えない = 大規模な計算機で利用できない 19
共有メモリ型並列計算機 1 つのメインメモリを複数の CPU コアで共有 マルチ CPU コアの PC 等 CPU コア CPU コア CPU コア CPU コア CPU コア CPU コア メインメモリ CPU コアからメインメモリへの経路が共有 規模 (=CPU コア数 ) に限界 20
分散メモリ型並列計算機 複数の独立したメインメモリで構成 CPU コア CPU コア CPU コア CPU コア CPU コア CPU コア CPU コア CPU コア メインメモリ メインメモリ メインメモリ メインメモリ ネットワーク 規模に応じて経路の数も増加 大規模化が比較的容易 21
プロセス並列プログラム 分散メモリ型並列計算機における並列処理に必要 プロセス並列独立した記憶空間をもつ プロセス を単位とした並列処理 22
プロセス並列 プログラムの特徴 (1) 処理だけでなくデータも分割 各プロセスが別の配列を利用 A プロセス0... 0 24 A プロセス1... 0 24 A プロセス2... 0 24 A プロセス3... 0 24 B C B B C C C B double A[25],B[25],C[25];... double A[25],B[25],C[25]; for (i=0;i<25;i++)... double A[25],B[25],C[25]; A[i] = B[i] + for C[i]; (i=0;i<25;i++)... double A[25],B[25],C[25]; プロセス0 A[i] = B[i] + for C[i]; (i=0;i<25;i++)... プロセス1 A[i] = B[i] + for C[i]; (i=0;i<25;i++) プロセス2 A[i] = B[i] + C[i]; 23 プロセス3
プロセス並列 プログラムの特徴 (2) 他のプロセスのデータは直接参照できない 必要に応じてプロセス間通信 プロセス 0 プロセス 1 プロセス 2 プロセス 3 A A A A 受信 送信 ネットワーク 24
MPI (Message Passing Interface) 並列プログラム用に用意された通信関数群の定義 例 ) プロセス 0 からプロセス 1 にデータを転送 MPI_Comm_rank(MPI_COMM_WORLD, &myid);... if (myid == 0) MPI_Send(&(a[5]), 1, MPI_DOUBLE, 1, 0, MPI_COMM_WORLD); if (myid == 1) MPI_Recv(&(a[3]), 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD, &status); 自分のプロセス番号を取得 プロセス 0 がプロセス 1 に送信 プロセス 1 がプロセス 0 から受信 25
分散メモリ型並列計算機の利点と欠点 利点 : 理論的な性能は 比較的容易に向上 極端な話, 単純に数を増やせば向上する 欠点 : 実質的な性能向上には工夫が必要 並列プログラムの作成 計算の分担 データの分割 計算結果の通信 並列処理のための時間増加 他の CPU との同期待ちや通信 現在のスーパーコンピュータは 全て分散メモリ型並列計算機 26
並列化手段と並列計算機 利用可能な並列化手段 自動並列化 OpenMP 共有メモリ型 分散メモリ型 MPI MPI プログラムは 作るのに苦労するがどこでも実行できる 27
アクセラレータ 背景 : 今後のスーパーコンピュータ高速化に向けた最大の課題は電力 アクセラレータの基本的な考え方 : 低性能 低機能だが 電力効率の高いコアを多数並べて並列計算する 電力 Top500 に登場する主なアクセラレータ : NVIDIA Tesla Intel Xeon Phi 例 ) 半分の性能を 1/8 の電力で達成 性能 電力効率 4 倍 28
NVIDIA Tesla GPGPU (General Purpose Graphic Processing Unit) グラフィック用の GPU を汎用計算にも使用する 高い電力効率 メモリ量を制限して高速メモリアクセスを実現 1 6GB 程度 演算の種類を制限して回路を単純化 主に加算, 乗算の性能重視 複雑な処理は制限 29
GPGPU の問題 メモリからアクセラレータのメモリへのデータ転送が遅い Tesla C2015 で 515GFLOPS に対して 8GB/sec アクセラレータ上のメモリへのアクセスは 144GB/sec NEC のベクトルプロセッサは 100GFLOPS に対して 256GB/sec 京のスカラープロセッサは 128GFLOPS に対して 64GB/sec 性能に対するメモリ量が少ない Tesla C2015 で 515GFLOPS に対して 6GB NEC のベクトルプロセッサは 100GFLOPS に対して 64GB 京のスカラープロセッサは 128GFLOPS に対して 16GB 専用のプログラム言語やインタフェースが必要 CUDA, OpenACC 30
Intel Xeon Phi 古い Pentium のアーキテクチャ + ベクトル演算器を最新の回路技術で実装 ベクトル演算器 : 1 度に 8 個の実数計算を実行可能 高い電力効率 小さい実装面積 高密度実装が可能 (Intel Xeon Phi 5110P で 60 コア ) 最新 CPU とアーキテクチャ互換 将来は CPU とメモリを共有 既存のプログラムが動く データのコピーが不要 どちらも 性能を活かすためには高度なチューニングが必要 31
性能比較 単精度実数演算性能 倍精度実数演算性能 NVIDIA Tesla K20X Intel Xeon Phi 5110P Intel Xeon E5-2687 4.0TF 2.0TF 0.33TF 1.3TF 1.0TF 0.33TF メモリ容量 6GB 8GB 16~128GB 消費電力 235W 225W 150W 32
Tianhe-2 ( 天河 2) 構成 : (24 プロセッサコア + アクセラレータ ) x 約 1 万 6 千ノード CPU: Intel Xeon E5-2692 2.2GHz x 12cores x 2chips アクセラレータ : Intel Xeon Phi 31S1P 理論演算性能に対する実性能比 : 0.617 (= 33.9PF / 54.9PF) 電力あたり性能 : 1.90GF / W ネットワーク : Fat Tree 名称 : TH Express-2 出典 : http://eng.mod.gov.cn/database/academies/ 2013-06/18/content_4455818_2.htm 出典 : http://www.china.org.cn/top10/2013-06/21/content_29187340_10.htm 33
Titan 製品名 : Cray XK7 構成 : (16 プロセッサコア + GPU) x 約 1 万 8 千ノード CPU: AMD Opteron 6274 2.2GHz アクセラレータ : NVIDIA Tesla K20X 理論演算性能に対する実性能比 : 0.65 (= 17.6PF / 27.1PF) 電力あたり性能 : 2.14GF / W ネットワーク : 3 次元トーラス構造 名称 : GEMINI 出典 : http://www.olcf.ornl.gov/titan/ 34
Sequoia 製品名 : IBM BlueGene/Q Top500 List の 2 位,4 位,5 位,9 位 構成 : 16 プロセッサコア x 約 10 万ノード CPU: IBM PowerBQC 1.6GHz 理論演算性能に対する実性能比 : 0.81(= 16.3 PF / 20.1 PF ) 電力あたり性能 : 2.1GFLOPS / W ネットワーク : 5 次元トーラス構造 出典 : https://www.llnl.gov/news/aroundthelab/2012/jun/atl -061812_sequoia.html 35
K Computer 理化学研究所と富士通による開発 http://www.aics.riken.jp 互換機の製品名 : Fujitsu PRIMEHPC FX10 九大情報基盤研究開発センターで利用可能 構成 : 8 プロセッサコア x 約 8 万ノード CPU: Fujitsu SPARC64 VIIIfx 2.0GHz 理論演算性能に対する実性能比 : 0.93 (=10.5PF / 11.3PF) 出典 : http://www.aics.riken.jp/jp/k/facility.html 消費電力 : 0.83GFLOPS / W ネットワーク : 6 次元トーラス / メッシュ構造 名称 : Tofu インターコネクト 36
Tianhe-2 vs Titan vs Sequoia vs K computer vs 地球シミュレータ 天河 2 Titan Sequoia K computer 地球シミュ レータ 総 CPU コア数 384,000 299,008 1,572,864 705,024 5,120 ノード数 16,000 18,688 98,304 88,128 640 アクセラレータ Xeon Phi Tesla No No No 理論性能 54.9 PF 27.1 PF 20.1 PF 11.3 PF 0.041 PF 実性能 33.9 PF 17.6 PF 16.3 PF 10.5 PF 0.036 PF 実性能 / 理論 0.61 0.64 0.81 0.93 0.88 電力 17.8MW 8.2MW 7.9MW 12.7MW 3.2 MW 実性能 / 電力 1.9 GF/W 2.1 GF/W 2.1 GF/W 0.83GF/W 0.01GF/W 37
スーパーコンピュータを使いこなす : 並列計算に対する期待と現実 プログラマ : CPU を 4 台使うんだから, 並列計算で 4 倍速くなって欲しい 計算機製作者 : CPU 4 台で 3 倍くらい速くなれば十分だろう Why? アムダールの法則 負荷のバランス 通信のコスト 38
アムダールの法則 プログラム中の高速化した部分しか高速化されない 並列化にあてはめて考えると : 並列化による性能向上率の理論的な限界 =1/((1-P)+P/N) P: プログラム中の並列化対象部分が全処理時間に占める割合 N: プロセス数 例 ) N=4 で 3.5 倍以上高速化するためには 95% 以上の部分の並列化が必要 39
分担する計算量のバランス 並列プログラムの処理時間は 最も遅いプロセスの処理時間 である Execution time of this program Execution time of this program Rank 0 Rank 1 Rank 2 Rank 3 計算量が不均等な場合 Rank 0 Rank 1 Rank 2 Rank 3 計算量が均等な場合 40
通信時間 並列化前は不要だった時間 = 並列化によるオーバーヘッド 並列化前 並列化後 Rank 0 Rank 1 Rank 2 Rank 3 41
スーパーコンピュータの計算時間と通信時間 計算時間 : 基本的に プロセス数に応じて短縮 通信時間 : 基本的に プロセス数に応じて増加 所要時間 1 2 4 8 通信時間計算時間 プロセス数 プロセス数に応じて通信時間の比率が増大 42
スーパーコンピュータのネットワークへの要求 通信性能 遅延時間を短く 高速なネットワークコントローラ 短い接続経路 経路の帯域幅を大きく 高い伝送速度のネットワーク 経路長い 帯域幅細い 経路短い 帯域幅太い 経路の競合を少なく 経路数増加 高度な経路制御 競合 競合 経路数少ない 経路数多い 費用 なるべく安く : ネットワークコントローラ 経路数やスイッチ数 経路の帯域幅に依存 43
Bus / Ring Topology 一本の Bus を全ノードで共有 両端をつなげたものが Ring 長所 : 構成が簡単なので 1 本あたりの帯域幅を太く出来る 経路とスイッチの数はノード数と同じなので費用は低い 短所 : 同時に利用可能な通信経路は 1 本だけ 双方向の場合 2 本 プロセッサ内部のコア間ネットワーク (8 コア ) のような小規模なネットワークで利用 44
Full Direct Connection 全ノード間で 一対一に接続 長所 : 遅延時間 ( 通信距離 ) 最小 短所 : 高価 ノード数の 2 乗に応じた経路数 各ノードでノード数分の接続が可能な大規模スイッチ 小規模の CPU 間ネットワーク (4CPU 程度 ) で利用 45
Crossbar Switch 行列上の switch を介して全ノードを接続 長所 : 遅延時間 ( 通信距離 ) はほぼ最小 ノード数に比例した同時通信帯域幅 短所 : 高価 ノード数の 2 乗に比例した結線数とスイッチ数 最大で 地球シミュレータ (640 ノード ) 程度まで利用 通常は数十ノード程度まで 46
Fat Tree 多段の crossbar switch による木構造で構成 長所 : 比較的 遅延時間が低い 通信距離はスイッチの段数 x 2 比較的 同時通信帯域幅が高い 上位層のスイッチ数と経路数による 比較的 費用が安価 短所 : 数万ノード以上のシステムでは まだ高価 大規模なシステムでは上位層の経路数を削減 通常 数千ノード規模まで Tianhe-2 は特別 47
多次元メッシュ / トーラス 多次元の格子状にノードを配置し 隣接ノード間を直接接続 両端を接続したものがトーラス 長所 : 費用が安価 ノード数 N に比例した経路数 リングやバスより格段に高速 特に隣接ノードとの通信 短所 : 通信パターンによっては 通信衝突が多発 プログラムの高度なチューニングが必要 主に数万ノード規模で利用 48
さらなる大規模化に向けて High-Radix switch( ポート数の多いスイッチ ) の利用 段数小 通信遅延の低減 同時通信帯域幅の維持 例 ) 多段全対全結合 出典 : http://www.unixer.de/publications/img/ibm-percs-network.pdf Dragonfly 出典 : http://research.google.com/pubs/archive/35154.pdf 49
スーパーコンピュータ開発の今後 膨大な開発費 : 京の場合,7 年間で約 1,200 億円 事業仕分けでの指摘 2 番じゃダメなんですか? 次の目標 : 2018 年 ~2020 年に 1 Exa FLOPS を達成 (1 Exa = 1,000 Peta) 予算は??? 50
今後の開発計画 富士通 : 京の商用機発表 http://www.hpcwire.com/hpcwire/2011-11-07/fujitsu_unveils_postk_supercomputer.html NEC: SX-9 後継のベクトル計算機開発計画を発表 http://www.perfect-abs.info/news/vector-processor.html IBM: BlueGene/Q で 100PFLOPS を狙う http://www.theregister.co.uk/2011/11/16/ibm_bluegene_q_power_775/ Cray: Blue Water http://wjbc.com/cray-replaces-ibm-on-u-of-illinois-supercomputer/ Barcelona Supercomputing Center: Tegra + GPGPU でスーパーコンピュータ開発 http://latimesblogs.latimes.com/technology/2011/11/nvidiasupercomputer.html 中国 : 自国製 CPU ShenWey SW1600 http://www.hpcwire.com/hpcwire/2011-11- 01/china_s_indigenous_supercomputing_strategy_bears_first_fruit.html 51
米国の変化 PCAST (President s Council of Advaisors on Science and Technology) の指摘 http://insidehpc.com/2010/12/22/pcast-report-supercomputing-arms-race-may-be-the-wrong-path-forward/ "an arms race that is very expensive and may not be a good use of funds." TOP500 創設者が LINPACK ベンチマークの限界を指摘 http://www.top500.org/blog/top500-founder-erich-strohmaier-on-the-lists-evolution/ "It is expected to debut this November in tandem with SC13." "you will need to keep learning, changing and adapting to the rapidly changing hardware and software environments of HPC." 今後 ゲームのルールが変わる可能性 52
Top500 に代わる指標 HPC Challenge http://icl.cs.utk.edu/hpcc/ 複数の部門でそれぞれ順位づけ Linpack, Matrix Multiply, Memory Bandwidth, Matrix Transpose, Random Access, Fast Fourier Trans, Communication Bandwidth and Latency 京は HPC Challenge の 5 部門でも 1 位 Graph500 http://www.graph500.org 組み合わせ最適化問題の計算性能比較 Green500 http://www.green500.org Top500 の性能を消費電力で割った電力対性能比を比較 53
次のスーパーコンピュータ開発に向けた議論 米国 http://www.exascale.org ヨーロッパ http://www.prace-project.eu 日本 http://www.open-supercomputer.org/workshop/purpose.html 予算が問題 http://sankei.jp.msn.com/politics/news/111116/plc11111611240003-n1.htm 54