インテルのクラスターツールを利用したハイブリッド・アプリケーションのチューニング

HPCインテル® MPI ライブラリーインテル® Parallel Studio XEインテル® Trace Analyzer & Collector

この記事は、インテルの The Parallel Universe Magazine 24 号に収録されている、ハイブリッド・アプリケーションのチューニングに関する章を抜粋翻訳したものです。

インテル® Xeon Phi™ 製品のような現代のメニーコア・プロセッサーは、効率良いハイパフォーマンス・コンピューティング・システムの構築に必要なバランスのとれたワットあたりのパフォーマンスを実現します。しかし、コア数の増加 (メモリーサイズの増加は比較的少なくメモリー階層の複雑さは増加) は、純粋な MPI アプリケーションのスケーラビリティーを制限する要因となります。各 MPI ランクでのデータ複製の必要性と MPI バッファーの増加、さらに数百コアのノード内通信は、アプリケーションのパフォーマンスを制限します。MPI + X のハイブリッド・プログラミング・モデル (「 X」はノード内通信に共有メモリーモデルを使用) を行うことで、ボトルネックを減らしてアプリケーションのスケーラビリティーを向上することができます。

最も一般的なハイブリッド・プログラミング・モデルの 1 つは MPI + OpenMP* です。これは、プラグマベースの OpenMP* はスレッドレベルの並列化を比較的簡単に使用でき、業界標準規格に基づいているためです。一方で、プログラミング・モデルを追加するには、MPI と「X」のスケーラビリティー問題を理解できるパフォーマンス解析ツールが必要になります。

この記事では、インテル® Parallel Studio XE Cluster Edition のコンポーネントであるインテル® VTune™ Amplifier XE とインテル® Trace Analyzer & Collector (ITAC) の機能を利用して、MPI + OpenMP* アプリケーションをチューニングします。例として、Runge-Kutta 法および有限要素法を用いて電気生理学で心臓の様子をシミュレートする、生命科学アプリケーション heart_demo を取り上げます。

ハイブリッド・アプリケーションのチューニング: どこから始めるか

MPI と OpenMP* の両方を使用するアプリケーションを作成している開発者の目標は、ジョブに割り当てられたクラスター時間をできるだけ効率良く使用するアプリケーションを開発することです。インテル® Trace Analyzer & Collector の機能である MPI Performance Snapshot ユーティリティーは、そのためのエントリーポイントと見なすことができます。ここでは、最適なプロセス/スレッド比の識別は行わず、指定されたリソース量でアプリケーションの効率を高めることに専念します。この記事で使用しているクラスターには、2 つのソケットを持つ 4 つのノードがあり (ソケットごとに 36 CPU)、NUMA の影響を避けるためソケットごとに 1 つのプロセスを起動します。つまり、8 つの MPI プロセスと 36 の OpenMP* スレッドがあります。

MPI Performance Snapshot ユーティリティーは、アプリケーションのパフォーマンスの概要を示す軽量のユーティリティーです。MPI と OpenMP* に関連する非効率な部分を示し、アプリケーションが MPI 依存の場合は ITAC、アプリケーションに OpenMP* の利用について問題点がある場合はインテル® VTune™ Amplifier XE の解析機能を使用して詳細に調査する方法を推奨します。MPI Performance Snapshot ユーティリティーを使用した統計収集を有効にするには、mpirun 実行のコマンドラインに「-mps」オプションを追加します。

続きはこちら (PDF) からご覧いただけます。

タイトルとURLをコピーしました