2011年7月6日水曜日

CCS HPC SS 一日目

CCS HPC サマースクールの一日目。

今日の内容は

1、並列処理の基礎
2、並列システム
3、MPI
4、連立一次方程式の解法

まず、並列処理の基礎では、演算性能FLOPSと通信性能B/s、ムーアの法則から昨今の計算性能の向上についての話から始まった。

どうもプロセッサのクロックはもうこれ以上(4GHz以上?)上がらないらしい。理由は今の状態でのチップ単位の発熱量が限界の域(発電所の熱密度と同じレベル)だからとのこと。冷却性能を上げても電気を食うから好ましくなく、これからはコア数を増やしたり、省電力なプロセッサの開発に寄っていくようだ。

次に、並列処理の形式(EP、データ並列、パイプライン並列、master/worker型並列処理)を学び、message passingにおける通信と同期のオーバヘッドによるコストの話があった。

あとは、アムダールの法則を考慮した場合の並列処理の効率評価(s(p)あるいはe(p))について、並列処理システムあるいは問題規模の拡張性(scalability)と並列処理における粒度(granularity)、計算プロセスの負荷バランスについて。ちなみにアムダールの法則は並列計算だけじゃなくても適応できる。

曰く「ある作業の全体としての処理効率は、作業員全員の平均的な作業効率ではなく、一部の非効率な人間によって律速される」まあ人間の場合は、マスターノードが優秀なら、負荷バランスや通信頻度の(自己判断的な)調整によって全体の効率をそこまで下げないようにする工夫はできるんじゃなかろうか。

ちなみにこの法則が正しいとすると、プロセッサ台数をいくら増やしても、処理する問題に並列処理不可能部分Tsがある限り、並列処理の効率は極限には0に近づく(つまり超並列は無駄)。これを解決するには、問題の規模を大きくし、Tsが無視できるほど並列処理可能部分Tpを大きくしてやればいいが、そうすると全体としての計算時間も増えてしまうというジレンマもある。結構繊細で難しい問題のようだ。

並列システムの講義では、並列計算機アーキテクチャとネットワーク構成についての話が主だった。アーキテクチャとしては分散メモリ型と共有メモリ型、あるいは分散・共有メモリ・ハイブリッド型が詳解された。共有メモリ型ではプロセッサとメモリの配置についてSMP,NUMAなどの解説もあった。ネットワーク構成としてはstaticなものとdynamicなもの、特にdynamic型でのFat Tree形式を代表的に取り扱った。実際に殆どの超並列計算機ではFat Tree形式が採用されているらしい。あとは並列処理ネットワークの性能メトリックとして、スループットとレイテンシの定義を再確認した。

ちなみに、理化学研究所の京スパコンの話題もあったが、TOP500で採用されている性能評価メトリックは、ネットワーク性能がある程度低くても高得点を稼げるようなものらしい。HPCCとかもっと現実的なベンチマークはあるが、採用されてないとのこと。

ここら辺までは十分理解できたが、やっぱMPIの話からは難しくなっていった。

MPIの講義では集団通信(バリア通信、大域データ通信、リダクション)までは分かりやすかったが、1対1通信でのブロック・非ブロック型通信らへんから雲行きが怪しくなってきた。それぞれの型における通信モードとか、ブロック型ではMPI_Sendしたときにメッセージがバッファリングされるかどうかで実行可能になるかどうかとか、非ブロック型通信でプロセス間の送信・受信の完了を確認する仕組みとか。それで出遅れてしまったので、MPIの実装例も理解が曖昧になってしまった。単純な例なら理解できたが、ラプラス方程式の差分法による解法(とても基本的な解法で学部生のときにもやったが、記憶が錆び付いてた)になると今回の講義ではカバーできなかった。復習の必要有り。

続く連立一次方程式も難しかった。

はじめは単純な連立一次方程式に対する反復解法について、Krylov部分空間反復法(ヤコビ法とかガウス・ザイデル法よりは並列処理がしやすいらしい)を用い、Hermite行列(共益勾配法)、非Hermite行列(双共役勾配法とか)、複素対称行列に対する計算方式、それぞれの収束特性の話があった。あとは、疎行列の格納形式(CRS,CCS)を使った行列ベクトル積など。ここまではまだ何とかなった(と思えた)が、前処理法とか複数右辺ベクトルをもつ方程式に対するBlock Krylov部分空間反復法らへんでドロップアウト。しかもそれを並列化するとかの話にはついていけなかった。行列計算とか微分・偏微分方程式の解法もちゃんとやり直す必要が大いにあるな・・・

とりあえず、ラプラス方程式の解法と単純な連立一次方程式の解法くらいのプログラムは一度Cで書いておこうと思う。

明日は初っぱなから高速フーリエ変換の話があるし、OpenMPの講義もある。このサマースクールは凄く楽しいけど内容濃いしやはり自分にとってはハードルも高めだ(特にレポート課題が)。

0 件のコメント: