この記事は、インテル® デベロッパー・ゾーンに公開されている「3X Performance Boost Using Intel Advisor and Intel Trace Analyzer in Astrophysics Simulations」の日本語参考訳です。
天体物理学の磁気流体力学 (MHD) シミュレーションは、計算負荷が最も高い問題の 1 つです。最高のアルゴリズムとハードウェアをもってしても、一部の計算には数週間かかります。
シミュレーション (数学モデリング) により、宇宙を創造し形成している進化のプロセスを調査します。地球上の研究所で実験を行うことが不可能なのは明らかです。しかし、複雑な宇宙でのプロセスを高解像度でシミュレーションすることは可能で、それには非常に強力なスーパーコンピューターが必要です。
シベリアにある主要研究教育センターのノヴォシビルスク大学 (NSU) では、インテル® Xeon Phi™ プロセッサー・ベースのハードウェア向けに開発中の AstroPhi プロジェクトのコードを最適化する必要がありました。このプロジェクトは、学生たちが超並列スーパーコンピューター向け数値シミュレーション・コードの作成方法を学ぶのを支援します。
AstroPhi プロジェクトの重要な課題は、インテル® Xeon Phi™ プロセッサー上でパフォーマンスを最大限に引き出せるようにコードを最適化することでした。最適化する前、NSU チームはベクトル依存性と最適なベクトルサイズの特定に苦戦していました。最適化の目標は、最適化の妨げとなるベクトル依存性を排除し、インテル® Xeon Phi™ アーキテクチャー向けに効率良いベクトル処理および配列サイズを使用することでメモリーロード操作を最適化することでした。これらの目標を達成するため、インテル® Parallel Studio XE に含まれるインテル® Advisor とインテル® Trace Analyzer & Collector を利用することになりました。
NSU チームは、インテル® Xeon Phi™ プロセッサー・ベースの超並列アーキテクチャー向けに、インテル® アドバンスト・ベクトル・エクステンション 512 (インテル® AVX-512) 命令を利用する新しいソルバーを共同設計しました。インテル® AVX-512 命令は 512 ビット SIMD に対応しており、プログラムで 512 ビット・ベクトル内に 8 個の倍精度浮動小数点数、16 個の単精度浮動小数点数、8 個の 64 ビット整数、または 16 個の 32 ビット整数をパックすることができます。そのため、1 命令で処理可能なデータ要素数は、インテル® AVX/インテル® AVX2 の 2 倍、あるいはインテル® ストリーミング SIMD 拡張命令 (インテル® SSE) の 4 倍になります。
最近のプロセッサーにおいて潜在的なパフォーマンスを最大限に引き出すためには、ソフトウェアのベクトル化 (インテル® AVX や SIMD 命令を利用) と並列化の両方を行うことが重要です。インテル® Parallel Studio XE に含まれるインテル® Advisor のルーフライン解析により、チームはパフォーマンスの悪いループをハイライト表示し、各ループのパフォーマンス向上の可能性 (ヘッドルーム) を把握し、改善可能なループと改善する価値のあるループを特定することができました。
インテル® Advisor のおかげで、ボトルネックを簡単に特定でき、さまざまなシナリオにおけるパフォーマンス・ゲインの予測を基に最良の最適化方法を決定し、実装時間を大幅に短縮できました、とチームは報告しています。インテル® Advisor は、チームが効率良く安全にベクトル化できるように、効果的にベクトル化するためのヒント、そしてトリップカウント、データ依存性、メモリー・アクセス・パターンなどの主要データを提供しました。
さらに、インテル® Trace Analyzer & Collector を利用することで、チームはノード全体におけるアプリケーションの MPI 通信の動作について視覚的に理解を深めることができました。ここでも、ボトルネックを素早く見つけ、正当性を向上し、インテル® アーキテクチャー上でアプリケーションのパフォーマンスを最大化することができました。MPI 通信のプロファイルと解析機能は、アプリケーションのスケーリングを向上するのに役立ちました。
インテル® Parallel Studio XE のツールを利用してアプリケーションを最適化し、最新のインテル® ハードウェアで実行することで、NSU チームはパフォーマンスを 3 倍スピードアップし、1 つの問題の計算にかかる標準時間を 1 週間からたった 2 日に短縮することに成功しました。
インテル® Parallel Studio XE は、増え続けるプロセッサー・コア数とベクトルレジスターの幅を利用して、現在および将来のプロセッサーでアプリケーションのパフォーマンスを最大限に引き出せるように開発者を支援するコンパイラーと各種ツールを含む統合ソフトウェア開発スイートです。