エクサスケール・アプリケーションの4つの課題
John Russell

エクサスケール・コンピューティングに向けたHPCアプリケーションの準備に関する懸念は、新しいものではなく、様々な努力が進行中です。それらが十分であるかどうかは議論の有る所です。一番の障害は誰にもエクサスケールアーキテクチャの詳細がどのようなものになるか判らない点にあります。IBMの研究者およびヨーロッパの学術研究者によるarXiv.orgの最近の論文(6月9日)はこれらの問題に取り組むためのアプローチを提案しています。
「Challenges and Recommendations for Preparing HPC Applications for Exascale[i]」というタイトルの論文は、四つの重要な課題を提示し、HPCアプリケーションのエクサスケールマシンへの移行準備にどのように概念的フレームワーク使用できるのかについて議論しています。
論文の著者らは、2008年にはペタフロップス・コンピューティングの世界に到達したが、現在でもペタフロップスの性能を活用するアプリケーションまだごく少数だと指摘しています。現在のTOP500のコンピュータのトータル性能は約0.3 exaFLOPSに過ぎません。
論文では以下のように記されています。「HPCアプリケーションの移行は、エクサスケールシステムに関する現在入手可能な仮定やデータに基づいた段階的な改善を継続的に行う必要のあることを、我々は提案する。このアプローチでは、将来エクサスケールシステムについて新たな情報が判明した時点で常に、アプリケーションが改善される必要がある。もちろん具体的なエクサスケールシステム上でアプリケーションが実際に配備され実行される時を含めてである。」
「抽象的マシンモデルと連動して鍵となる機能特性や非機能特性を捕捉することが出来るアプリケーションのハイレベル表現を採用する事により、プログラマーやツールがアプリケーションの性能向上の推論や実行を行えるようになるだろう。さらにそのハイレベル表現は、性能向上、エネルギー最適化処理さらに自覚的障害管理を扱うためのランタイムシステムへの入力情報を提供する事になるだろう。」
論文の著者リストは、次の通りです。
Erika Abraham(アーヘン工科大学);Costas Bekas(IBMチューリッヒ研究所);Ivona Brandic(ウィーン工科大学);Samir Genaim(マドリード・コンプルテンセ大学 );Einar Broch Johnson(オスロ大学、情報学専攻);Ivan Kondovk(カールスルーエ工科大学);Sabri Pllana(リンネ大学、コンピュータサイエンス学科);Achim Streitk(カールスルーエ工科大学)
「通常のアプリケーションのチューニングと同様に、エクサスケールマシンに関する現在の仮定をカプセル化する機能を有するチューニング可能な抽象的なマシンモデルにより、具体的な実行 プラットフォームが判明する以前でもアプリケーションを改善する事を可能にするであろう。」と著者達は考えています。
著者らは、このようなフレームワークが対処する必要のある次の四つの領域を示します。
- 形式モデル化
- 静的解析と最適化
- 実行時分析および最適化
- 自律型コンピューティング
以下にそのフレームワークの概略図を示します。
簡潔な論文を実際に読んで頂くのベストですが、大きな課題の一つを解決しようとする著者達のアプローチに関するレビューとして彼らの見解をまとめてみましょう。大きな課題の一番目、形式モデル化は基本的な要件です。著者らは「そのモデル化とは何をすべきか?それにはどんなアプローチが必要か?」と自問自答しています。
「ここでの関連する情報とは、コードが直接目指すもの(計算結果)ではなく、コードの実行に付随するリソースの振る舞いに関する足跡である。即ち、計算処理のなかで行われる通信や同期の方法、必要なリソースの使用量(メモリやCPU時間)、そしてデータのアクセスと転送の形態などである。」
「特定のアーキテクチャにHPCコードを適応させるためには、様々なレベルの粒度(例えば、ステートメントレベル、ブロックレベル、手続き全体のレベル)でソフトウェアモジュールにおけるリソースの振る舞いを捕捉する必要がある。そうすれば、組み立て方の異なるタスクとの比較も可能となる。そのためには、このモデリング言語はタスクレベルのリソースの振る舞いに対する大規模な並列演算子を備えることとなる[5]。同じようにリソースの振る舞いや組み立てという概念により、マシンモデルにおけるアーキテクチャの特性を表現することができ、そのアーキテクチャがコードに対して提供するリソースの振る舞いを捕捉することができるようになる。」
「リソースの振る舞いを扱うには、抽象的な動作仕様言語が必要であり[6]、その中ではタスクと配備がモデル化されている。これらのモデルは、それが配備される前に、コードの非機能的行動を予測し、形式な手法により様々な配備を比較することができるようになる。」
ドメイン固有エクサスケール言語(DSEL)も有効なツールです。それはプログラマーが「スケーラブルな並列HPCコード実行の非機能的な側面(必要時間、耐久度、エネルギー効率)を表現すること」を可能にします。
著者達は謝辞と共に、EXA2GREENプロジェクト、Autotune[ii]、DEEPプロジェクトおよびCRESTAプロジェクトなどの関連する研究に触れ、結論として、次の様に述べています。
「エクサスケールの将来はエネルギー効率、スケーラビリティ、信頼性、およびプログラム可能性といった、一連の課題に直面している。我々の提案は、体系的にこれらの問題に根幹から対処するために、総合的かつ統一化された数学ベースのフレームワークを開発することである。即ち、個別にこれらの問題を解くのでは無く、マルチパラメトリック問題としてそれらを研究する総合的なアプローチを提案する。そのアプローチにより我々は課題の相互作用を理解し、この複雑な風景の中をナビゲートするための適切な意思決定を行うことができるようになる。」
この論文は簡潔で、一読の価値があります。 2020年にはエクサスケールが期待出来る現在、HPCアプリケーションのエクサスケールへの移行を準備する努力は重要な課題です。
[i] http://arxiv.org/pdf/1503.06974v2.pdf
[ii] R. Miceli, G. Civario, A. Sikora, E. Ce ́sar, M. Gerndt, H. Haitof, C. Navarrete, S. Benkner, M. Sandrieser, L. Morin, and F. Bodin, “Autotune: A plugin-driven approach to the automatic tuning of parallel applications,” in Applied Parallel and Scientific Computing, ser. Lecture Notes in Computer Science. Springer, 2013, vol. 7782, pp. 328–342.