インテル® Xeon® スケーラブル・プロセッサー上の並列 CFD と HiFUN ソルバー

同カテゴリーの次の記事

比較関数の罠

この記事は、インテルの The Parallel Universe Magazine 32 号 (英語) に収録されている、高速な数値シミュレーション向けに HPC プラットフォームの性能を最大化する方法を紹介した章を抜粋翻訳したものです。

FPGA が注目されている理由

計算流体力学 (CFD) は、高速なコンピューターを利用して、流体制御方程式の数値解を求める科学の一分野です。CFD の解は大量のデータを基に計算されるため、今日のハイパフォーマンス・コンピューティング (HPC) ハードウェア・プラットフォームを最大限に活用することが不可欠です。

CFD は、流体の質量、運動量、エネルギー保存を表す非線形偏微分方程式のナビエ- ストークス方程式を使用します。CFD において離散化は、ナビエ- ストークス方程式を一連の代数方程式に変換する手法です。

産業応用に関連する形状の複雑さと複雑な流体物理特性により、代数系のサイズはさまざまで、通常、数百万から数十億を超える式になります。つまり、設計サイクルに影響を及ぼすのに十分な短い期間内に設計データを取得するには、現実的な数値シミュレーションを大規模な HPC プラットフォームで実行する必要があります。

この記事では、超並列スーパーコンピューティング・プラットフォームのアーキテクチャーを最大限に活用できる CFD アプリケーションの例として S&I Engineering Solutions (SandI) Pvt. Ltd. (http://www.sandi.co.in/home/) の独自ソフトウェアである HiFUN (http://sandi.co.in/v2/home/products/hifun/) ソルバーを検証します。1,2

スケーラブルなパフォーマンスの達成

HPC アプリケーションのパフォーマンスに影響する要因は 3 つあります。

  1. 単一プロセスのパフォーマンス
  2. ロードバランス
  3. アルゴリズムのスケーラビリティー3

ロードバランスを達成するには、各プロセッサー・コアに割り当てられる計算作業がほぼ同じになるように、離散化された計算ドメイン (ワークロード、グリッド、またはメッシュとも呼ばれる) を分割すべきです。しかし、ロードバランスのために、分散プロセッサー間で過度なデータ通信を行うべきではありません。この 2 つの要件はしばしば競合するため、両者のバランスをとる必要があります。METIS を使用するドメイン分割は2、CFD シミュレーションでロードバランスを達成する一般的な方法です。アルゴリズムのスケーリングは、並列アプリケーションにおける別の重要なパフォーマンス要因です。2 理想的には、並列ソルバーのパフォーマンスは、プロセッサー数の増加に伴って低下すべきではありません。

HiFUN ソルバーのような CFD アプリケーションの並列パフォーマンスを制限する 3 つ目の要因は、高速なプロセッサーと低速なメモリーアクセスのギャップです。これは、単一プロセスのパフォーマンスの低下につながります。この問題に対応するため、多くのコンピューターはメモリー階層を採用しており、すぐに計算で必要となる少量のデータは、キャッシュと呼ばれる高速にアクセスできるメモリーに保持されます。つまり、キャッシュにあるデータを最大限活用することが重要です。そのためには、グリッドデータの空間的局所性を保証する適切なデータレイアウトが必要です。単一プロセスのパフォーマンスの問題は、カットヒル・マキー法のような順序付けアルゴリズムを使用してアプリケーション・レベルである程度対応できますが、CFD ソルバーに含まれる計算操作のさまざまな性質を考慮すると、プロセスのパフォーマンスを最大限に引き出すことは面倒な作業です。これに関連して、インテル® プロセッサー・テクノロジーの進化は、CFD アプリケーションの単一プロセスのパフォーマンスの大幅な向上をもたらしています。最新世代のインテル® Xeon® プロセッサーは、大容量キャッシュ、プロセッサーとメモリー間のデータチャネル数増加による高メモリー帯域幅、メモリー速度の向上を提供します。CFD アプリケーションでは、単一プロセスのパフォーマンスの向上により、当然ながら、シングルノードのパフォーマンスも向上します。

プロセッサー・テクノロジーの進化がどのようにしてソフトウェア・パフォーマンスの向上をもたらすのかを検証するため、インテル® Xeon® スケーラブル・プロセッサー上で HiFUN のシングルノードとマルチノードのパフォーマンスを評価し、前世代のプロセッサーと比較しました。

HiFUN CFD ソルバー

HiFUN は、ロバストかつ高速で正確な最先端の汎用 CFD ソルバーで、魅力的なターンアラウンド・タイムで空力設計データを提供します。典型的な産業環境において、複雑な形状と複雑な流体物理特性を処理する能力により、有用性を発揮します。任意の多面体の体積を処理可能な非構造化データを使用することで、HiFUN は複雑な形状を比較的容易にシミュレーションできます。さらに、行列を使用しない暗黙のプロシージャーの使用は、定常状態への迅速な収束をもたらし、ソルバーを効率良くロバストにします。

HiFUN の正確さは、AIAA Drag Prediction Workshop (英語) や AIAA High Lift Prediction Workshop (英語) など、さまざまな国際的 CFD コード評価で十分に実証されています。HiFUN は、低亜音速から極超音速まで、広範な流れ問題のシミュレーションでの使用実績があります。

並列パフォーマンスの評価

HiFUN ソルバーの並列パフォーマンスを評価するには、次のメトリックを考慮する必要があります。

  1. 理想的なスピードアップ: 特定の実行で使用されたコア数と参照コア数の比率 (評価では最小コア数を使用)
  2. 実際のスピードアップ: 指定した計算で参照コア数が使用された場合の反復ごとの時間と指定したコア数が使用された場合の反復ごとの時間の比率
  3. 並列処理の効率: 実際のスピードアップと理想的なスピードアップの比率
  4. マシン・パフォーマンス・パラメーター (MPP): 100 反復あたりの時間にスケーラビリティー実行で使用されたコア数を掛けた積とグリッドサイズ (100 万単位) の比率

最初の 3 つのパラメーターは、並列コンピューティングの文献でよく見かけます。4 つ目のパラメーターのMPP は、特定の CFD アプリケーションを異なるコンピューティング・プラットフォームで評価する方法を提供します。1 MPP 値が小さいコンピューティング・プラットフォームは、ほかのプラットフォームよりも優れたコンピューティング・パフォーマンスをもたらすと予想されます。

HiFUN ソルバーの重要な強みは、数千のプロセッサー・コアにスケールできることです。これは、HiFUN が NASA の Pleiades スーパーコンピューター (英語) 上の10,000 を超えるインテル® Xeon® プロセッサー・コアにスケールできることを示した SandI とインテルの共同研究 (http://sandi.co.in/v2/home/hifun1.pdf) で実証されています。評価には、NASA の Trap Wing が使用されました (図 1)。図 23 は、それぞれ 6350 万のグリッドを使用した場合のスピードアップと並列処理の効率を示すグラフです。図 2 から、HiFUN は 4,096 プロセッサー・コアで理想に近いスピードアップを示していることが分かります。また、Pleiades 上の 7,168 プロセッサー・コアでは、HiFUN の並列処理の効率は約 88% に達します。さらに、約 6,350 万のグリッドが控えめな大きさになる 10,248 プロセッサー・コアの場合でも HiFUN の並列処理の効率は約 75% と比較的良好です。この HiFUN のスケーラブルな並列パフォーマンスは、問題サイズに依存しないターンアラウンド・タイムが期待できることを示しているため、デザイナーにとって利点と言えます。

関連記事