EUのHPCコード事情 Vol.2: "FORTRANとMPIだけがHPCコードではない"

 Computing Insight UKカンファレンス(2017年12月12日?13日、マンチェスター)において、nAGがパートナーであるEUのPerformance Optimisation Productivity project(POPの詳細を学ぶ)プロジェクトは、欧州のHPCソフトウェアの開発者と利用者の概要について発表しました。以下に紹介する通り、POPで扱われるのはMPIで並列化されたFortranコードだけではありません。

 POPプロジェクト開始から2年以上の間に、幅広い科学分野から抽出された150のコードの調査を実施しました。ユーザーに最初に質問する質問の1つは、「コード性能に十分なコア数は最大いくつですか?」ということです。これは、POPのパフォーマンスアナリストにとって役に立つ情報です。我々は、改善できる箇所を特定するために、コードを実際に並列実行するためです。回答をまとめてみると、欧州において人々がHPCリソースをどのように使用しているかについてのいくつかの洞察が得られます。



このように、POPプロジェクトにおいては、大方の8割の研究は10コア以上1000コア未満が最適であることが見て取れます。


言語と並列モデル

以前の報告でも見た通り、最も多いのがFortranコードで、純粋なFortranまたはFortranとCおよび/またはC ++との組み合わせで記述されたものが半分以上(82/151)です。C ++はCよりも普及しているようですが、CはFortranと組み合わされる場合が多くあります。



(ベン図の円の面積は、そこに含まれる研究の数に比例します)。"Other"のカテゴリは、約10%(17/151)の研究を構成します。これらのうち、13はPythonを含み、スタンドアローン(3)または1つ以上のコンパイル言語と関連しています。その他は、C / Fortran / Octaveコード、Javaコード、Matlabコード、Perlコードを組み合わせたものです。POPコードの10%がC / C ++ / Fortran以外の言語で書かれているという事実は、通常のものだけでなく幅広い言語を扱うことができるツールと方法論を持つことが重要であることを示しています。

 また、我々が研究したコードで使用される並列モデルも見てみましょう。純粋なMPIまたはMPI + OpenMPのいずれかを使用するコードはほぼ80%(119/151)で、最も一般的な並列モデルであることが分かります。POPで扱われるコードの1/3以上がハイブリッドMPI + OpenMPです。



ここでも"Other"のカテゴリがありますが、言語のカテゴリとは異なりこの組のメンバーはすべて別のものです。これら他の並列処理の例としてIntel Threading Building Blocks(TBB)やCoarray Fortranなどがあります。


低効率の原因

 POP効率指標(https://pop-coe.eu/node/69)は、並列コードの性能を特徴付ける指標で、最も重要な問題がどこにあるかという課題に対する洞察を得ることが出来ます。すべてのPOPの研究を考慮すると、この指標を使用すれば様々な性能のトレンドを判断できます。

 分析されたコードの66%が並列効率が80%未満でした。よって効率的に並列実行するには改善が必要です。実際に、コードの22%は並列効率が50%以下です。つまり、ランタイムの半分以下だけが計算のみで消費されています。これら分析は一般的に初期化とファイナライズを省略しているので、実際には効率はさらに悪化します。

 研究で報告された実際の数値を見ると、負荷バランス効率は多くの場合非常に良いか悪いかがわかります。これは、負荷バランスが積極的に正しいことに注意を払わなければならないものか、それとも非常に悪化している可能性があることを示唆しています。

 また、指標の階層的な性質を利用して、効率の低い一般的な原因を調べることもできます。低い通信効率は、主に通信のシリアル化ではなく、データ転送(大量のデータまたは多数の通信)によって引き起こされます。低い計算効率は、しばしば、IPC値の低減よりもむしろ命令スケーラビリティの低さによって引き起こされます。強スケーリングの場合、実行される命令の総数の増加は、しばしば望ましくないコードの複製により生じます。

 プログラミング方法論と実際の問題のタイプとの間に関連があるかどうかを調べるために、問題の種類をさらに調べることができます。言語と非効率性との間には明らかな相関はありませんでしたが(例えば、「Cプログラマはロードバランスの悪いコードを書く可能性が高い」というような結論を導くことはできませんでした)、ここではコードが採用した並列モデルに基づいて描かれる興味深い差異がありました。

各調査では、特定された非効率性の主な原因(負荷分散、計算または通信)を記録し、これが3つの主要な並列モデルでどのような違いがあるかを調べました。



グラフから、ハイブリッド・コードでは、純粋なMPIまたは純粋なOpenMPコードの調査よりも負荷バランスの問題が報告される可能性が高いことがわかります。これはおそらく次のように理解できます:ハイブリッドコードを書くときには、MPIランクでの作業の分割方法と、ランク上の参加スレッド間での分割方法の両方を考慮する必要があります。


まとめ

  1. " 最大のスーパーコンピュータの10,000コアで稼働することよりもHPCには多くの重要なことがあります。POP研究の80%は10から1,000コアを対象としたコードで行われました。
  2. FortranとMPIは最も一般的な言語/パラダイムですが、他の多くの言語も使用されています。したがって、性能最適化ツールと方法論もそれらに対応する必要があります。
  3. 使用されたコア数と達成された効率との間に明確な相関関係はありませんでした。効率はコードの特徴であり、特にコードがどのように並列化されているかです。ハイブリッドコードは負荷バランスの問題を抱える可能性が高くなりますが、純粋なMPI/OpenMPコードは通常、計算またはプロセス間/スレッド間の通信に問題を持ちます。


EUのHPCプロジェクトPerformance Optimisation and Productivity (POP)は、科学技術研究に対するHPC技術の利用を促進を目的として欧州委員会によって推進されているHPC領域の8つのセンターオブエクセレンスの1つです。POPは2015年に開始され、バルセロナ・スーパーコンピューティングセンターに設置されました。POPプロジェクトには、nAG、ユリッヒおよびシュツットガルト・スーパーコンピューティングセンター、アーヘン大学、Teratecがパートナーとして選ばれました。
POPは、EU内の組織に無料でサービスを提供しており、並列ソフトウェアのパフォーマンスを分析かつ問題を特定してパフォーマンスの改善を提案するプロジェクトです。性能分析ツールとして、バルセロナ・スーパーコンピューティングセンターで開発されたExtraeとParaverが主に用いられています。



関連情報
MENU
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks