スーパーコンピュータの
ネットワーク
情報ネットワーク特論 南里 豪志
今日の講義内容
• スーパーコンピュータとは
• どうやって計算機を速くするか
スーパーコンピュータとは?
• "スーパー"な計算機 = その時点で、一般的な計算機の性能をはるかに 超える性能を持つ計算機 • スーパーコンピュータの用途 • 主に科学技術分野 • 創薬 • 分子構造シミュレーション • 車、飛行機等の設計 • 構造シミュレーション • 気象予測 • 熱力学シミュレーション 等 • 近年、他の分野でも利用拡大 • 株価変動予測 • 交通量解析 • ソーシャルネットワーク上のデータ解析 出典: 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計算機の「理論的な」最大性能
• 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 で、
実際の計算機の性能
• 例えば CPUは、以下を待つ間、計算が出来ない • 計算すべきデータが、ディスク、メモリ、ネットワークから CPUに届く • 他の CPUとの同期が完了する • なので、実際の計算機の性能は、プログラムに依存する 例) • 多数の仕事に分けて、分担させることができるプログラム ⇒ 低速の CPUを多数持つ計算機で高い性能が得られる • 仕事の分割や分担が難しいプログラム ⇒ 非常に高速な CPUを持つ計算機でなければ、高い性能が得られない同じプログラムを各計算機で実行して実行時間を比較
⇒ ベンチマークプログラム
Top500 List
http://www.top500.org
• 最も有名な、スーパーコンピュータ性能比較リスト • 稼働中のスーパーコンピュータの 1位~500位を掲載 • 毎年 6月と 11月に更新 • LINPACKベンチマークプログラムの性能で順位付け • 連立一次方程式の解を求める計算 • 比較的、理論的な最大性能に近い性能が出る • 他の計算機との比較や傾向の分析などが容易 • 1993年からほとんど同じ条件で更新を継続 • 世界中のほぼ全てのスーパーコンピュータが登録スーパーコンピュータの例:
地球シミュレータ
• 2002年 3月に稼働を開始 • 主に NECが開発 • 開発目標: 10km四方(赤道近辺)の精度で地球全体の大気循環をシミュレート • それまでは 100km四方 • 例えば台風の発生過程:100km四方だと台風が台風に見えない • 地球シミュレータの成果 • 台風進路予測 • 5.5km四方で地球全体をシミュレート(日本近辺は 2.78km四方) • 海底探査船「ちきゅう」に、正確な台風進路の予測結果を、 到達予定の3日前までに提供 • 台風発生予測 • 過去10年間についてシミュレーションによる台風発生回数が実際の値とほぼ一致 7Top500における
地球シミュレータの性能
• Linpack 性能 35.8TFLOPS (理論最大性能 41.0TFLOPS) = 1秒あたりの 35兆回の実数計算
• 断トツの 1位
• 2位から10位までの計算機の演算性能の合計を上回る性能(2002年6月時点)
• “Computenik”
= 「計算機分野での Sputnik だ!」 (in New York Times)
• by Jack Dongarra教授
テネシー大学教授、Top500サイトの創始者
USAの逆襲(2004年)
• IBM Blue Gene/L (2004年11月~)
http://www.research.ibm.com/bluegene/ • 70.7TFLOPS (理論最大性能 91.8TF) • ちなみに地球シミュレータ(35TFLOPS)は3位に後退 • 「まだ完成形ではない」: 2005年前半に、さらに4倍高速化する計画
日本のすべてのスーパーコンピュータを
かき集めても追いつかない規模になる
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%
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
最新情報: 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, ...
どうやって計算機を速くするか?
• CPUを速くする • クロック周波数の向上 • 命令レベル並列処理の向上 • プロセッサコア数の増加 • アクセラレータの利用 電力、熱の限界 命令レベル並列性の限界プロセッサを増やす
• 現在の計算機
= 複数のプロセッサを搭載した並列計算機
• スーパーコンピュータだけでなく、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
並列計算機
• 仕事を複数のプロセッサに分担させて高速化 = 並列処理 • • 並列処理をするには? ⇒ 並列プログラムが必要 仕事1 仕事2 仕事3 仕事1 仕事2 仕事3 普通の処理 並列処理うまく分担できればプロセッサの数に応じて性能向上
並列プログラム
• 並列処理に必要な事項を含むプログラム • 各CPUコアへの仕事の分担のさせ方、 • 相互の情報交換、 • CPUコアの間の同期 等普通のプログラム
(=並列じゃないプログラム)とどう違う
?
普通のプログラムの例:
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];並列プログラムの例:
複数の「
スレッド
」で並列処理
• スレッド: 同じ記憶空間を共有しながら進行する流れ A B C = + = + = + = + = + = + = + = + = + = + = + = + = + = + = + = + = + = + = + = +...
0 24 25...
49 50...
74 75...
99 double A[100],B[100],C[100]; ... double A[100],B[100],C[100]; スレッド0 スレッド1 スレッド2 スレッド3 全スレッドが 同じ配列を 共有スレッドによる並列化の
利点と欠点
• 利点: 比較的簡単に並列化 • 自動並列化コンパイラ等も利用可能 • 欠点: 基本的に「共有メモリ型並列計算機」向け ⇒ 「分散メモリ型並列計算機」では使えない = 大規模な計算機で利用できない共有メモリ型並列計算機
• 1つのメインメモリを複数のCPUコアで共有 • マルチCPUコアのPC等 CPU コアメインメモリ
CPU コア CPU コア CPU コア CPU コア CPU コア分散メモリ型並列計算機
• 複数の独立したメインメモリで構成 CPU コア メイン メモリ CPU コア CPU コア メイン メモリ CPU コア CPU コア メイン メモリ CPU コア CPU コア メイン メモリ CPU コア ネットワーク規模に応じて経路の数も増加
⇒ 大規模化が比較的容易
プロセス並列プログラム
• 分散メモリ型並列計算機における並列処理に必要 • プロセス並列
独立した記憶空間をもつ「プロセス」を 単位とした並列処理
「プロセス並列」プログラムの
特徴 (1)
• 処理だけでなくデータも分割 double A[25],B[25],C[25]; ... for (i=0;i<25;i++) A[i] = B[i] + C[i]; プロセス0 A B C = + = + = + = + = +...
0 24 プロセス0 A B = + = + = + = + = +...
0 24 プロセス1 A B = + = + = + = + = +...
0 24 プロセス2 A B = + = + = + = + = +...
0 24 プロセス3 double A[25],B[25],C[25]; ... for (i=0;i<25;i++) A[i] = B[i] + C[i];double A[25],B[25],C[25]; ... for (i=0;i<25;i++) double A[25],B[25],C[25]; ... C C C 各プロセスが 別の配列を 利用
「プロセス並列」プログラムの
特徴 (2)
• 他のプロセスのデータは直接参照できない • 必要に応じてプロセス間通信 A プロセス0 A プロセス1 A プロセス2 A プロセス3 送信 受信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から受信
分散メモリ型並列計算機の利点と欠点
• 利点: 理論的な性能は、比較的容易に向上 • 極端な話,単純に数を増やせば向上する • 欠点: 実質的な性能向上には工夫が必要 • 並列プログラムの作成 • 計算の分担 • データの分割 • 計算結果の通信 • 並列処理のための時間増加 • 他のCPUとの同期待ちや通信並列化手段と並列計算機
• 利用可能な並列化手段共有メモリ型 分散メモリ型
自動並列化、
OpenMP
○
×
MPI
○
○
MPIプログラムは、
作るのに苦労するがどこでも実行できる
アクセラレータ
• 背景: 今後のスーパーコンピュータ高速化に向けた最大の課題は電力 • アクセラレータの基本的な考え方: 低性能、低機能だが、電力効率の高いコアを 多数並べて並列計算する • Top500 に登場する主なアクセラレータ: • NVIDIA Tesla• Intel Xeon Phi 例) 半分の性能を
1/8 の電力で達成
電力
NVIDIA Tesla
• GPGPU (General Purpose Graphic Processing Unit)
• グラフィック用の GPU を汎用計算にも使用する • 高い電力効率 • メモリ量を制限して高速メモリアクセスを実現 • 1〜6GB程度 • 演算の種類を制限して回路を単純化 • 主に加算,乗算の性能重視 • 複雑な処理は制限
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
Intel Xeon Phi
• 古い Pentium のアーキテクチャ+ベクトル演算器 を最新の回路技術で実装 • ベクトル演算器: 1度に8個の実数計算を実行可能 • 高い電力効率 • 小さい実装面積 • 最新CPUとアーキテクチャ互換 • 将来は CPUとメモリを共有高密度実装が可能
(Intel Xeon Phi 5110Pで 60コア)
既存のプログラムが動く
データのコピーが不要
性能比較
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
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
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
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
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) • 消費電力: 0.83GFLOPS / W • ネットワーク: 出典: http://www.aics.riken.jp/jp/k/facility.html
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
スーパーコンピュータを使いこなす:
並列計算に対する期待と現実
• プログラマ: 「CPUを 4台使うんだから,並列計算で 4倍速くなって欲しい」 • 計算機製作者: 「CPU 4台で 3倍くらい速くなれば十分だろう」 • Why? • アムダールの法則 • 負荷のバランス • 通信のコストアムダールの法則
• プログラム中の高速化した部分しか高速化されない • 並列化にあてはめて考えると: 並列化による性能向上率の理論的な限界 =1/((1-P)+P/N) • P: プログラム中の並列化対象部分が全処理時間に占める割合 • N: プロセス数 • 例) N=4 で 3.5倍以上高速化する ためには 95%以上の部分の並列化が 必要分担する計算量のバランス
• 並列プログラムの処理時間は 「最も遅いプロセスの処理時間」 である Rank 0 Rank 1 Rank 2 Rank 0 Rank 1 Rank 2 Execution time of this program Execution time of this program通信時間
• 並列化前は不要だった時間 = 並列化によるオーバーヘッド Rank 0 Rank 1 Rank 2 並列化前 並列化後スーパーコンピュータの
計算時間と通信時間
• 計算時間: 基本的に、プロセス数に応じて短縮 • 通信時間: 基本的に、プロセス数に応じて増加 所要時間 計算時間 通信時間スーパーコンピュータのネットワーク
への要求
• 通信性能 • 遅延時間を短く • 高速なネットワークコントローラ • 短い接続経路 • 経路の帯域幅を大きく • 高い伝送速度のネットワーク • 経路の競合を少なく • 経路数増加 • 高度な経路制御 • 費用 • なるべく安く: 経路長い 経路短い 帯域幅細い 帯域幅太い 競合 競合 経路数少ない 経路数多いBus / Ring Topology
• 一本の Busを全ノードで共有 • 両端をつなげたものが Ring • 長所: • 構成が簡単なので 1本あたりの帯域幅を太く出来る • 経路とスイッチの数はノード数と同じなので費用は低い • 短所: • 同時に利用可能な通信経路は 1本だけ • 双方向の場合、2本 • プロセッサ内部のコア間ネットワーク(8コア)のような 小規模なネットワークで利用Full Direct Connection
• 全ノード間で、一対一に接続 • 長所: • 遅延時間(≒ 通信距離)最小 • 短所: • 高価 • ノード数の2乗に応じた 経路数 • 各ノードでノード数分の 接続が可能な大規模スイッチ • 小規模のCPU間ネットワーク (4CPU程度)で利用Crossbar Switch
• 行列上の switchを介して全ノードを接続 • 長所: • 遅延時間(≒通信距離)はほぼ最小 • ノード数に比例した同時通信帯域幅 • 短所: • 高価 • ノード数の2乗に比例した 結線数とスイッチ数 • 最大で、地球シミュレータ (640ノード)程度まで利用Fat Tree
• 多段の crossbar switch による木構造で構成 • 長所: • 比較的、遅延時間が低い • 通信距離はスイッチの段数 x 2 • 比較的、同時通信帯域幅が高い • 上位層のスイッチ数と経路数による • 比較的、費用が安価 • 短所: • 数万ノード以上のシステムでは、まだ高価 • 大規模なシステムでは上位層の経路数を削減 • 通常、数千ノード規模まで • Tianhe-2は特別多次元メッシュ/トーラス
• 多次元の格子状にノードを配置し、隣接ノード間を直接接続 • 両端を接続したものがトーラス • 長所: • 費用が安価 • ノード数 N に比例した経路数 • リングやバスより格段に高速 • 特に隣接ノードとの通信 • 短所: • 通信パターンによっては、 通信衝突が多発 ⇒ プログラムの高度な チューニングが必要 • 主に数万ノード規模で利用さらなる大規模化に向けて
• High-Radix switch(ポート数の多いスイッチ)の利用 • 段数小 ⇒ 通信遅延の低減 • 同時通信帯域幅の維持 • 例) 出典: http://www.unixer.de/publications/img/ibm-percs-network.pdf 多段全対全結合 Dragonflyスーパーコンピュータ開発の今後
• 膨大な開発費: 京の場合,7年間で約1,200億円 • 事業仕分けでの指摘 「2番じゃダメなんですか?」 • 次の目標: 2018年~2020年に 1 Exa FLOPS を達成 (1 Exa = 1,000 Peta) • 予算は???今後の開発計画
• 富士通: 京の商用機発表 http://www.hpcwire.com/hpcwire/2011-11-07/fujitsu_unveils_post-k_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/nvidia-supercomputer.html
• 中国: 自国製CPU ShenWey SW1600
http://www.hpcwire.com/hpcwire/2011-11-米国の変化
• 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."
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