Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Amazon Web ServicesのHPCシステムとしての活用

114393e0a020811998294bc45931324b?s=47 HPC WORLD
January 25, 2021

Amazon Web ServicesのHPCシステムとしての活用

114393e0a020811998294bc45931324b?s=128

HPC WORLD

January 25, 2021
Tweet

Transcript

  1. © Prometech Software, Inc. 1 Amazon Web Servicesの HPC (High

    Performance Computing) システムとしての活用 プロメテック・ソフトウェア株式会社 HPCエバンジェリスト兼テクニカルサポート 廣川 祐太 (Hirokawa Yuta, Ph.D.)
  2. © Prometech Software, Inc. 会社概要 2 ▪会社名 プロメテック・ソフトウェア株式会社 2004年10月29日 ▪設立年月日

    ▪所在地 [本社] 東京都文京区本郷三丁目34番3号 本郷第一ビル8階 [名古屋支社] / [大阪支社] グループ企業 GDEPソリューションズ株式会社 CAD/CAEなどをターゲットとしたNVIDIA 社GPU製品を 活用したITソリューションの提供 大学との共同研究開発協力体制 東京大学・東北大学・京都大学・東京理科大 学・ 東洋大学・琉球大学・横浜国立大学 など ▪事業 科学技術計算用ソフトウエア開発・販売とコンサルティングサービス
  3. © Prometech Software, Inc. 事業内容 3 ▪ 流体・粉体解析ソフトウェアの開発・販売・サポート ▪ 解析コンサルティングサービス

    カスタマイズ・受託解析・物理モデル開発など技術サービス ▪ 可視化・映像制作サービス 解析結果にもとづいたリアリティのある可視化・映像制作サービス ▪ NVIDIA HPC Compiler Professional Support Serviceの展開 ソフテック社より継承したPGIコンパイラ応用技術を活かしたNVIDIA HPC Compilerの取り扱いと技術サポート 粒子法(MPS法)理論に基づく流体解析ソフトウェア 離散要素法(DEM)理論に基づく粉体解析ソフトウェア
  4. © Prometech Software, Inc. NVIDIA HPC SDKとサポートサービスについて 4 NVIDIA HPC

    SDK • コンパイラ、数学ライブラリ、通信ライブラリ等のパッケージ • nvc, nvc++, nvfortran = 旧PGIコンパイラ • OpenACCをサポートする商用コンパイラでほぼ唯一 様々なPCクラスタにインストール可能 • 無償利用可能 Professional Support Service HPC Compilers Support Services (HCSS, NVIDIAによる技術サポート) 弊社による日本語の技術サポート
  5. © Prometech Software, Inc. 本発表について 5 1. AWS P4dインスタンスの基礎体力(ベンチマーク)についての評価 •

    計算ノードの特性を知り、性能チューニングのアプローチを考えることができる 2. HPCシステムの観点から、スーパーコンピュータやオンプレミスシステムと比較 • メリットとデメリットを考えることで、どのシステムを使うべきか見えてくる ⇛ ユーザーにとってベストな選択を!
  6. © Prometech Software, Inc. 自己紹介: 廣川 祐太 (Hirokawa Yuta, Ph.D.)

    6 2011年末 ~2014年3月 東京工科大学 コンピュータサイエンス学部在籍中 OpenMP, MPI, CUDAにふれHPCに興味を持つ メッシュフリー電磁界解析計算と任意高精度Krylov 反復法のGPU実装と評価 2014年4月 ~2018年9月 筑波大学大学院 システム情報工学研究科 コンピュータサイエンス専攻修了 博士(工学) シミュレーション分野との共同研究、電子動力学シミュ レーションソフトウェアのOSS展開と整備、スーパーコン ピュータ「富岳」などの大規模メニーコアシステムに向け た性能チューニング 2018年10月 ~2020年10月 筑波大学計算科学研究センター 量子物性研究部門 研究員 2020年11月~ プロメテック・ソフトウェア株式会社 新規事業開発部 HPCエバンジェリスト兼テクニカルサポート HCSS等テクニカルサポート、ソフトウェアポーティング・ コンサルティング、その他弊社HPC業務全般を担当 今までのメイン研究テーマ: HPCにおける性能チューニング 先端プロセッサやシステムでの実計算ソフトウェアの性能チューニングと評価 • 筑波大CCS HA-PACS (NVIDIA GPUクラスタ), SC13 poster • 筑波大CCS COMA (Intel Xeon Phiクラスタ), PDSEC16 paper • JCAHPC Oakforest-PACS全系 (国内4位), ISC2018 paper • 理研R-CCS「富岳」共用前評価環境 (世界1位, ~27,648ノード) , submitted ソフトウェアの協調開発 • 実際の性能はどの程度? • コードの可搬性・保守性は? (本来の開発者はついてこれる?) • 実性能と実装コストのバランスは? • プロセッサやシステムの取捨選択
  7. © Prometech Software, Inc. AWS P4dインスタンスのベンチマーク 7

  8. © Prometech Software, Inc. 理論性能と実性能の乖離について 8 理論ピーク性能 HPL性能 HPCG性能 vs.

    Peak 富岳@理研 537.2 PFLOPS 442.0 PFLOPS 16.0 PFLOPS 82.2%, 3.0% Summit@ORNL 200.8 PFLOPS 148.6 PFLOPS 2.9 PFLOPS 74.0%, 1.4% Selene@NVIDIA 79.2 PFLOPS 63.5 PFLOPS 1.6 PFLOPS 80.2%, 2.0% 達成可能な実性能のレンジ • どちらも連立一次方程式の求解性能のベンチマーク • HPL: High Performance Linpack • 係数行列が密な場合(計算律速) • HPCG: High Performance Conjugate Gradient • 係数行列が疎な場合(通信律速) • 計算性能 >>> 通信バンド幅 • 多くのシミュレーションは疎行列を解く • HPCGの方がより実性能に近い • 密行列的な計算をしていない、という ことではない • 問題はこのギャップをどう埋めるか ➢ ハード・ソフトの知識を持って最適化
  9. © Prometech Software, Inc. P4d instance: architecture overview 9 AWS

    P4d DGX A100 備考 CPU Intel 8275CL x2 48 cores AMD EPYC 7742 x2 128 cores プロセス数に対しコア数が不足する場合有り CPU/GPU間の接続 PCIe gen3 x16 片方向15.75 GB/s PCIe gen4 x16 片方向31.51 GB/s ファイルへの書き出しといったCPUへのデータ移 動が多い場合に不利 ノード間通信性能 100 Gbps x4 links = 400 Gbps 200 Gbps x8 links = 1600 Gbps 通信が頻繁に起きる、大容量データ通信がある 場合に不利 https://aws.amazon.com/jp/blogs/compute/amazon-ec2-p4d-instances-deep-dive/
  10. © Prometech Software, Inc. 予備評価 10 NVIDIA A100 (p4d.24xlarge) bandwidthTest-H2D-Pinned,

    Bandwidth = 12.3 GB/s, Time = 0.00260 s, Size = 32000000 bytes, NumDevsUsed = 1 bandwidthTest-D2H-Pinned, Bandwidth = 13.2 GB/s, Time = 0.00243 s, Size = 32000000 bytes, NumDevsUsed = 1 NVIDIA V100 (p3dn.24xlarge) bandwidthTest-H2D-Pinned, Bandwidth = 11.2 GB/s, Time = 0.00286 s, Size = 32000000 bytes, NumDevsUsed = 1 bandwidthTest-D2H-Pinned, Bandwidth = 12.5 GB/s, Time = 0.00255 s, Size = 32000000 bytes, NumDevsUsed = 1 Max 15.75 GB/s 0 2 4 6 8 10 12 14 1 4 16 64 256 1K 4K 16K 64K 256K 1M 4M Bandwidth [GB/s] Message size [Byte] osu_bibw (inter-node CPU) 100 Gbps • CPU-GPU間のデータ転送性能はPCIe gen3に律速 • CPU間はEFA 1リンクの通信性能が得られる • 複数リンクを束ねた通信はInfiniBandでもうまく動 かない事がある • P4dはEFA GDR (GPU Direct RDMA) が提供され るが、Open MPI内部エラーで停止(原因要調査)
  11. © Prometech Software, Inc. メモリ・通信性能がボトルネックとなるベンチマーク 11 1. 姫野ベンチマーク • 単精度の3次元拡散方程式をJacobi法で解く

    • Strong scalingの性能評価(全体の問題サイズは固定) • OpenACC版を実装(次ページ) 2. HPCG • 幾何的マルチグリッド法を前処理にしたCG法の求解性能を評価 • HPLに比べればまだ実用に近い(現状はアルゴリズムに性能が依存) • Weak scalingの性能評価(各プロセスの問題サイズは固定) • HPCG提供元のNVIDIA GPU用の実装を利用 • https://www.hpcg-benchmark.org/software/index.html
  12. © Prometech Software, Inc. 姫野ベンチマークのGPU実装 12 #pragma acc data copyin(a,b,c,wrk1,wrk2,bnd)

    copy(p) for(n=0 ; n<nn ; ++n){ gosa = 0.0; #pragma acc kernels loop gang for(i=1 ; i<imax-1 ; i++) for(j=1 ; j<jmax-1 ; j++) #pragma acc loop vector(256) reduction(+:gosa) for(k=1 ; k<kmax-1 ; k++){ s0 = a[0][i][j][k] * p[i+1][j ][k ] ... ; ...; } #pragma acc kernels loop gang for(i=1 ; i<imax-1 ; ++i) for(j=1 ; j<jmax-1 ; ++j) #pragma acc loop vector(256) for(k=1 ; k<kmax-1 ; ++k) p[i][j][k] = wrk2[i][j][k]; } • static(スタックメモリ版)の実装にOpenACCのディレク ティブを追加 • dynamic(malloc版)も基本的に同じ • ただし依存関係解析のためにディレクティブを足す必要 がある • MPI版は通信がある以外シングルプロセス実装と同じ • とても簡単にGPU化できる • 特にメモリ管理はシンプルにできる • ただし万能でもない
  13. © Prometech Software, Inc. dynamic版の場合 13 int matlen = a->mrows

    * a->mcols * a->mdeps; #pragma acc data copyin(a,b,c,wrk1,wrk2,bnd,p) ¥ copyin( a->m[0:matlen * a->mnums]) ¥ copyin( b->m[0:matlen * b->mnums]) ¥ copyin( c->m[0:matlen * c->mnums]) ¥ copyin(wrk1->m[0:matlen * wrk1->mnums]) ¥ copyin(wrk2->m[0:matlen * wrk2->mnums]) ¥ copyin( bnd->m[0:matlen * bnd->mnums]) ¥ copy ( p->m[0:matlen * p->mnums]) for(n=0 ; n<nn ; ++n){ gosa = 0.0; #pragma acc kernels loop gang #pragma acc loop gang independent for(i=1 ; i<imax-1 ; i++) #pragma acc loop worker independent for(j=1 ; j<jmax-1 ; j++) #pragma acc loop vector(256) reduction(+:gosa) ¥ independent for(k=1 ; k<kmax-1 ; k++){ s0= MR(a,0,i,j,k)*MR(p,0,i+1,j, k); ...; • static版と異なり、構造体 (SoA) で管理されてい るためデータコピーが複雑 1. 構造体変数をコピー 2. 構造体メンバー変数である配列をコピー • i, jループと最内ループのkループ間で依存関係があ ると認識されてしまう • 実際は存在しない(並列化可能) • loop independentを指定する • 依存関係がないことを明示して並列化を促進
  14. © Prometech Software, Inc. 1 GPU: 姫野ベンチマーク (Strong scaling) 14

    ※問題サイズL (256x256x512), 1000反復の実行時間を5回測定し最良値を記載 0 100 200 300 400 500 600 700 static dynamic static dynamic V100 (P3d) A100 (P4d) Performance [GFLOPS] Better • static • スタックメモリを使用したバージョン • dynamic • Managed memory使用 • Explicitにデータコピーを行った場合の方が (なぜか)遅い • OpenACCの並列化(スレッドブロックの割当) は全く同じ • 計算開始と終了時のデータ転送時間を含む • メモリバンド幅の差よりも高速化 • 900 GB/s ⇒ 1600 GB/s (x1.78) x 1.94
  15. © Prometech Software, Inc. 1 node, 8 GPUs: 姫野ベンチマーク (Strong

    scaling) 15 ※問題サイズXL (512x512x1024), 1000反復の実行時間を5回測定し最良値を記載 1400 1600 1800 2000 2200 2400 2600 2800 MPS off MPS on MPS off MPS on 1 PPG 2 PPG 4 PPG Performance [GFLOPS] PPG = Process / GPU p3dn.24xlarge Better 1400 1600 1800 2000 2200 2400 2600 2800 MPS off MPS on MPS off MPS on 1 PPG 2 PPG 4 PPG Performance [GFLOPS] PPG = Process / GPU p4d.24xlarge x 1.49
  16. © Prometech Software, Inc. マルチノード性能: HPCG 3.1 benchmark (Weak scaling)

    16 ※問題サイズはプロセスあたり (256, 256, 256) でV100の推奨サイズ、データがないのはGPUメモリ不足 0 10 20 30 40 50 1 2 4 1 2 4 1 2 4 1 node 2 node 4 node Total Bandwidth [TB/s] PPG (Process / GPU) p3dn.24xlarge 0 10 20 30 40 50 1 2 4 1 2 4 1 2 4 1 node 2 node 4 node Total Bandwidth [TB/s] PPG (Process / GPU) p4d.24xlarge Better x1.59 V100: 0.9 TB/s → A100: 1.555 TB/s (x1.73) A100 x32 = 49.76 TB/s V100 x32 = 28.8 TB/s
  17. © Prometech Software, Inc. Summary 17 • P3dn vs. P4d:

    単体GPUで1.94倍、複数GPUで1.5倍以上の性能向上 • 計算、メモリバンド幅、ネットワークといったハードウェア性能の向上だけで実現 • V100:A100 = $31.21/h:$32.77/hで金額差以上の性能向上が得られる • CUDA MPSを使い、複数プロセスで共有を図ったほうが効率的な場合もある • A100ではデバイスレベルで分割するMulti-Instance GPU (MIG) 機能が追加 • 大きな計算リソースを細かく分割して使う、というのが今後の使い方? • GPUの合計メモリバンド幅に近い性能が得られているがネットワークの影響は受けている • NVIDIA Selene : 1.6 PFLOPS (2.55%), 4340 node • AWS P4d : 6.2 TFLOPS (2.00%), 4 node • Seleneは通信性能が高い上にシステムベンダーの最適化実装であることは注意
  18. © Prometech Software, Inc. HPCシステムとしての比較・検討 18

  19. © Prometech Software, Inc. HPCの観点から、各サービスについて 19 • クラウドサービス (AWS, Microsoft

    Azure, GCP) • HPCクラスター管理ツール (AWS ParallelCluster, Azure CycleCloud) を提供 • HPCシステムと同様のジョブスケジューラーを用いたリソース確保・ジョブ実行が可能 • スーパーコンピュータ(ここでは各機関が運用するシステムを指す) • 国内ではHPCIを通じ、富岳と国内9大学のシステム+αを計算資源として提供 • HPCIでは無償利用できるが成果公開が必須、有償利用は対象システムが限られる • より柔軟にはFOCUSスパコンが産業利用向けとして別提供 • オンプレミス • 従来手法、サーバーの購入・設置・環境設定・保守等を組織内で完結
  20. © Prometech Software, Inc. クラウド、スーパーコンピュータ、オンプレミスの比較 20 クラウドサービス (AWS, Azure, GCP)

    スーパーコンピュータ (HPCI, FOCUS) オンプレミス 価格 △HPCインスタンスは高め ◦無償 “も” 可能 ✕高額 課金対象 △インフラの利用時間 ◦計算ノードの利用時間 ✕保守・電気代 システムの自由度 ◦IaaSなので自由度は高い △各システムの提供環境に対応 する必要がある ◦ハード・ソフトウェアすべてゼロか ら組み上げられる 導入コスト ◦基本的にはウェブで完結 ✕利用申請が非常に手間 (内容審査、本人確認等) ✕稟議など内部申請が最も大変 環境構築の有無 △自分たち or ベンダーへ依頼 ◦運用機関が提供 △自分たち or ベンダーへ依頼 保守コスト △自分たち or ベンダーへ依頼 (ハードウェアはサービス対応) ◦運用機関により実施 (機関のスケジュールに依存) △自分たち or ベンダーへ依頼 利用の容易さ ◦一般的なHPCシステムと同じ使 い方が可能 → ParallelCluster ◦PaaSとして確立 ◦ある意味で最も容易 (運用方法を決められる) 総保有コスト ◦どちらもオンプレミスよりは低い ✕導入から実行・保守すべて 留意事項等 常用はコスト高になる場合もある (買った方が安いかも) 無償利用は成果公開が必要 (有償利用は非公開も可) 数年毎のリプレースが必要
  21. © Prometech Software, Inc. 結局、HPCシステムとしてはどれが良い? 21 クラウドサービス • HPCリソースを無駄なくずっと使える、という人に向いている? スーパーコンピュータ

    • 環境構築や保守をせずに、HPCリソースを使いたい人に向いている? オンプレミス • すべてを自分たちで管理したい人に向いている? • ひとつ言えるのは、「何がしたいか」で選択が必要であるということ • 環境構築や保守は「本来したかったこと」ではない
  22. © Prometech Software, Inc. 時期による選択もあり 22 • スーパーコンピュータは数年ごとにリプレース • 発売されたばかり最新プロセッサは使えない場合も多い

    • クラウドサービス (IaaS) は積極的に最新プロセッサを導入していく傾向にある • スーパーコンピュータよりは早期にアクセスできる • 「まずは最新GPUを試してみたい」 ⇒ クラウドサービス (IaaS) • 「安定環境で実業務を行いたい」 ⇒ スーパーコンピュータ (PaaS) • 試しにという場合、クラウドは安い上にすぐ利用できる • 移行の手間はあるが、1つのサービスにこだわる合理的な理由はない
  23. © Prometech Software, Inc. 最後に 23

  24. © Prometech Software, Inc. まとめ 24 • A100の基礎体力の評価 • V100と同一ソース、バイナリでも1.5ー2倍の性能向上が得られた

    • OpenACCはシンプルだが強力な開発ツール • 通信バンド幅の要求が厳しい実計算ソフトウェアへの影響はよく考える必要がある • クラウドサービスのHPCシステムとしての活用の考えはあくまでも一例 • TCOを考えればクラウドサービスでも十分に常用可能と考えられる • スーパーコンピュータは共用、クラウドとオンプレミスは専有 • 弊社では2021年1月よりHPCコンサルティング(ソリューション提案)を開始いたします • ハードウェアの選択からソフトウェアのポーティングまで、 各ユーザーにとってBetter or Bestな選択肢を中立に提案
  25. © Prometech Software, Inc. [PR] HPCコミュニティサイト “HPC WORLD” のオープン 25

    • 国内HPCコミュニティの活性化に資する活動 • HPC関連情報の展開が可能なHPCメーリングリストの運営 • 技術コラム(CPU/GPU, OpenMP/OpenACC, 変わり種等) • NVIDIA HPC SDK関係の技術情報 • ソフテック社の旧PGIコンパイラ技術情報のアーカイブ • NVIDIA HPC Compiler Support Service窓口 • 有償技術サポートの提供 https://hpcworld.jp/
  26. © Prometech Software, Inc. 以下、参考資料 26

  27. © Prometech Software, Inc. シングルノード性能: シングルGPU、複数MPIプロセス: 姫野ベンチマーク 27 ※問題サイズL (256x256x512),

    1000反復の実行時間を5回測定し最良値を記載 0 100 200 300 400 500 600 MPS off MPS on MPS off MPS on MPS off MPS on 1 PPG 2 PPG 4 PPG 8 PPG Performance [GFLOPS] p3dn.24xlarge Better 0 100 200 300 400 500 600 MPS off MPS on MPS off MPS on MPS off MPS on 1 PPG 2 PPG 4 PPG 8 PPG Performance [GFLOPS] p4d.24xlarge x 1.84
  28. © Prometech Software, Inc. 要素定義 28 価格 サービスの利用費、もしくはシステム導入費 課金対象 何に課金されている?

    システムの自由度 ユーザーにどれだけの自由度が与えられているか ハードウェアの選択、ソフトウェアのインストール・利用など 導入コスト 利用を始めるために必要なことは? 環境構築の有無 利用のための環境構築は? 保守コスト サービス利用中の保守作業はどうする? 利用の容易さ 実計算(Production run)は簡単に行える? 留意事項等 サービスを使う上での注意は? • ユーザーが計算機として使う場合、の視点から
  29. © Prometech Software, Inc. リソース準備時間 (初期化から) クラウドサービスとスーパーコンピュータの課金対象時間について 29 ※クラウドサービスではログインノード(ジョブを投入するノード)も課金対象 ジョブ実行時間

    リソース待機時間 (自動終了まで) ジョブ実行時間 計算ノード空き 待ち時間 ジョブ実行時間 計算ノード空き 待ち時間 ジョブ実行時間 課金対象 非課金対象 リソース空き待 ち時間 クラウドサービス(AWS Parallel Cluster) 一般的なスーパーコンピュータの運用方針