1日目は諸手続のみで、2日目の今日はチュートリアル
S02: Application Supercomputing and the Many-Core Paradigm Shift
Presenters:
Alice Koniges (Lawrence Livermore National Laboratory)
William Gropp (University of Illinois at Urbana-Champaign)
Ewing (Rusty) Lusk (Argonne National Laboratory)
David Eder (Lawrence Livermore National Laboratory)
Rolf Rabenseifner (High Performance Computing Center Stuttgart)
を受けました。
その内容を以下に簡単にまとめます。
・並列計算アーキテクチャおよびリソースについて
-
Top500に入っているコンピュータのアーキテクチャは、大きなくくりでいうと収束してきている。特にクラスター+クワッドコアが多い
- とはいっても、詳細を見ると各マシンごとに特色がある
- マルチコアでパフォーマンスを出すにはメモリバスのバンド幅が重要
- TotalViewなどを使うとビジュアルなチューニングができる
- パフォーマンスチューニングについてもビジュアルなツールがあり便利
・並列計算のプログラミングモデルについて
- a)複雑な計算ができること、b)並列でよいパフォーマンスがでること、c)実装しやすいこと、のすべてを同時に満たすプログラミングモデルは難しい
- HPF, OpenMPは実装しやすい面でのメリットが大きい
- よくチューンされたMPIプログラムに対しハイブリッドモデル(OpenMP+MPI)を導入しても、パフォーマンスの向上は難しい。
- MPIには、OpenMPと一緒に使うための命令群がある
- パフォーマンスチューニングには、タイムチャートを可視化するツールがあるので便利
・MPIについて
- Grid(ノードの接続が格子状になっている)の場合に特化してよいパフォーマンスを出すためのMPIのAPIがある
- その場合、send, receiveともに非同期にすることで、通信遅延が少なくなる
- PETScなどのライブラリをうまく利用すると、パフォーマンスが得やすい
・並列計算アプリケーションの設計について
- まず問題の分割の仕方が大事。これはアプリケーションに依存する部分
- その上で採用する並列アーキテクチャに応じた設計が必要
- シングルプロセッサ(またはシングルノード)でのチューニングも重要
- 最高のパフォーマンスを出すには、それなりに大きな開発チームが必要
・ハイブリッドプログラミング(OpenMP+MPIによるプログラミング)について
- ハイブリッドに向く問題とそうでないものがあり、見極めが必要。MPI単独のほうが速いということもよくある。
- 問題のサイズがダイナミックに変わるような場合、MPI単独だとロードバランシングが苦手で、ハイブリッドが有効
- ノード間の通信を減らすべきなのはもちろんだが、同一ノード内の複数チップ間の通信も大きくパフォーマンスを落とす原因になる
- ノード間通信による遅延を減らすには、通信中にオーバーラップして計算することが重要。そのための仕組みがOpenMPにproposalとして出ている。
この分野、私は新参者で、だからこそ勉強しに来たわけですが、今日のチュートリアルはとてもわかりやすく興味深かったです。8:30~17:00という長丁場であるにかかわらず一度も寝ませんでした:-)
新参者っていうことで、間違って理解しているところや、専門用語の使い方がおかしいところがあるかもしれません。ご了承ください。