EXA2CTプロジェクト事例

NAGとインテル®が、ハイパフォーマンスコンピューティングコードの性能向上を目的としたプロトタイプ・アプリケーションの開発で協力


NAGが関与する多くのEU共同プロジェクトの1つに、EXascale Algorithms and Advanced Computational Techniques (EXA2CT)があります。プロジェクトの研究開発作業の主な目的は、数値計算コードを大規模コアへ適用して性能向上を行うことをサポートすることでした。このプロジェクトには、大規模計算コード部分を模擬するプロトタイプ・アプリケーションの開発が含まれていました。この作業は、NAGとIntel社の共同作業で実施されました。

このプロジェクトは、大規模なコードの所有者に一連の質問を行い、コア数の増加に伴いスケールせずコード全体のスケール性を制限するコードセクションを見い出すことから開始されました。コード所有者がコードにアクセスしてプロファイリングできることが理想的です。得られた知見を使用して、元のコードからボトルネックを再現/抽出する新しいスタンドアロンコードであプロトタイプ・アプリケーションを作成しました。これは、元のコードを必要とせずにボトルネックのパフォーマンスを調査し改善するために使用されます。場合によっては、ボトルネックが他のコードの広い範囲にも存在することがあるため、その改善にはこうした他のコードも考慮すべき可能性があります。この改善作業の後、その変更は元のコードに再統合され、プロトタイプ・アプリケーションは彼ら自身の開発作業のためにより広いユーザーコミュニティに提供されました。

NAGは、exaFarm、exaIO、exaMDという3種のプロトタイプ・アプリケーションを開発しました。最初のexaFarmは、二相流燃焼解析コード"Yales2"の負荷バランス改善のために開発されました。

このケースでは、NAGはオリジナルコードにアクセスをせずに彼らから供給された手法のフローチャートから開発を行うことが必要でした。このプロトタイプ・アプリケーションには次の3種の異なる手法が実装されました:@負荷バランスを行わない、AYales2の負荷バランサーを用いる、Bより優れた手法としてタスクファーミング法を用いる。プロトタイプ・アプリケーションの作業結果から、この最後の新しい手法がオリジナルの方法よりも格段に優れていることが示されました。

次のプロトタイプ・アプリケーションexaIOは、気候モデリング結合コードOASIS3-MCT内の初期化処理の改善のために開発されました。これは、独立した気候モデリングコード間の通信レイヤーとして動作します。

問題は、1つのプロセスがファイルから全てのデータを読み込み、それを他の全てのプロセスにブロードキャストしていたことです。これはコア数の増加と共にますます高価になります。プロトタイプ・アプリケーションには、複数の改良された選択肢と共に新しい方法が実装されました。ここでは、要求があったプロセスにのみにデータが送信されます。プロトタイプ・アプリケーションで開発された改良された手法は、現在OASIS3-MCTのメインコードに実装されています。

最後のプロトタイプ・アプリケーションexaMDは、別の分子動力学での粒子間相互作用の計算方式としてmidpoint法が実装されました。プロトタイプ・アプリケーションのスケール性は非常に優れ、開発者はこれをメインコードに統合する作業を行っています。

このようなプロトタイプ・アプリケーションを作成する方法は、大規模なコード内の潜在的に低性能なセクションに注力するのに便利な方法であり、実際のコードのテストと比較のための方法となり得る可能性があることが示されました。

関連情報
MENU
Privacy Policy  /  Trademarks