Core Concepts
ノードレベルで最適化された、極めてスケーラブルなマトリックスフリー有限要素演算子を生成するコードジェネレータを紹介する。様々な最適化手法を適用し、キャッシュロカリティと演算強度を大幅に向上させ、メモリ帯域幅の制約を緩和する。
Abstract
このペーパーは、ノードレベルで最適化された、極めてスケーラブルなマトリックスフリー有限要素演算子を生成するコードジェネレータを紹介する。
まず、ハイブリッド四面体グリッドの概念を説明する。このグリッドは、非構造化な粗いメッシュを均一に細分化したものであり、各マイクロ要素は6つの参照四面体のいずれかに一致する。この局所的な構造を活用することで、インデックスの間接参照やコネクティビティの追加管理なしに、DoFsへの直接アクセスが可能となる。
次に、コードジェネレータの全体的なパイプラインを説明する。入力として、記号的に記述された弱形式、quadratureルール、有限要素空間などを受け取り、最適化された演算子をC++コードとして出力する。
最適化手法として以下のものを紹介する:
ループ不変量の特定と移動
要素間ベクトル化
quadratureループの融合
因子のテーブル化
対称性の活用
これらの最適化手法を適用することで、様々な微分演算子(-∆, -∇·(k(x) ∇), α(x) curl curl+β(x))に対して、最大58倍の高速化を達成できる。
さらに、詳細なノードレベルのパフォーマンス分析を行い、1.3 - 2.1 GDoF/sの処理スループットを達成し、36コアIntel Ice Lakeソケットの最大62%のピーク性能に到達することを示す。
最後に、1兆(10^12)以上のDoFsを持つcurl-curl問題を21,504プロセスで50秒未満で解くことで、生成された演算子の高パフォーマンスと極端なスケーラビリティを実証する。
Stats
1兆(10^12)以上のDoFsを持つ問題を21,504プロセスで50秒未満で解くことができる
36コアIntel Ice Lakeソケットで最大62%のピーク性能を達成
1.3 - 2.1 GDoF/sの処理スループットを達成