
反復ステンシルループ(ISL)またはステンシル計算は、ステンシルと呼ばれる固定パターンに従って配列要素を 更新する数値データ処理ソリューション[1]の一種です。 [2]これらは、科学技術アプリケーションのコンテキストでの数値流体力学などのコンピュータシミュレーション で最も一般的に使用されています 。その他の注目すべき例としては、偏微分方程式の解法[1]、ヤコビカーネル、ガウス-ザイデル法[2]、画像処理[1]、セルオートマトン[3]などがあります。配列の規則的な構造により、ステンシル手法は有限要素法 などの他のモデリング手法とは一線を画しています。規則的なグリッドで動作するほとんどの有限差分コードは、ISLとして定式化できます。
意味
ISLは、与えられた配列に対して一連のスイープ(タイムステップと呼ばれる)を実行します。[2]一般的に、これは2次元または3次元の規則的なグリッドです。[3]配列の要素は、多くの場合セルと呼ばれます。各タイムステップで、すべての配列要素が更新されます。[2]固定パターン(ステンシル)内の隣接する配列要素を使用して、各セルの新しい値が計算されます。ほとんどの場合、境界値は変更されませんが、場合によっては(LBMコードなど)、計算中に境界値を調整する必要があります。ステンシルは各要素に対して同じであるため、データアクセスのパターンが繰り返されます。[4]
より正式には、ISLを次の意味を持つ5つの要素から構成される集合として定義することができる。 [3]
- インデックス セットです。配列のトポロジを定義します。
- 状態のセット(必ずしも有限ではない)であり、各セルは任意のタイムステップでその状態のいずれかを取る可能性があります。
- 時刻 0 におけるシステムの初期状態を定義します。
- ステンシル自体であり、近隣地域の実際の形状を記述します。ステンシルには要素があります。
- セルの隣接セルに応じてセルの新しい状態を決定するために使用される遷移関数です。
I はk次元の整数区間なので、配列は常に有限の規則的なグリッドのトポロジを持ちます。配列はシミュレーション空間とも呼ばれ、個々のセルはインデックスによって識別されます。ステンシルは相対座標の順序付きセットです。各セルについて、隣接するインデックスの組を取得できます。
それらの状態は、タプルを対応する状態のタプルにマッピングすることによって与えられます。ここで、は次のように定義されます。
これは、次の時間ステップにおけるシステムの状態を定義するために必要なすべてです。
境界条件も設定する必要があるため、 は上で定義され、 上だけでは定義されないことに注意してください。 の要素は、トロイダルトポロジーを実現するために、シミュレーション空間の次元を法とするベクトルの加算によって定義されることがあります。
これは、特定の物理モデルを簡素化する周期境界条件を実装するのに役立つ場合があります。
例: 2Dヤコビ反復法

正式な定義を説明するために、2 次元のヤコビ反復法がどのように定義されるかを見てみましょう。更新関数は、セルの 4 つの隣接セルの算術平均を計算します。この場合、初期解は 0 です。左と右の境界は 1 に固定され、上限と下限は 0 に設定されます。十分な回数の反復処理を実行すると、システムは鞍型に収束します。
ステンシル
更新中に使用される近傍の形状は、アプリケーション自体によって異なります。最も一般的なステンシルは、フォン ノイマン近傍とムーア近傍の 2D または 3D バージョンです。上記の例では 2D フォン ノイマン ステンシルを使用していますが、LBM コードでは通常 3D バリアントを使用します。コンウェイのライフ ゲームでは 2D ムーア近傍を使用しています。ただし、地震波伝播用の 25 ポイント ステンシル[5]など、他のステンシルも見つかります。
実装上の問題
多くのシミュレーションコードは、自然にISLとして定式化できます。計算時間とメモリ消費量は配列要素の数に比例して増加するため、ISLの並列実装は研究にとって極めて重要です。[6] 計算は密結合されており(セルの更新は隣接セルに依存するため)、ほとんどのISLはメモリに縛られている(つまり、計算に対するメモリアクセスの比率が高い)ため、これは困難です。[7] 事実上、現在のすべての並列アーキテクチャは、ISLを効率的に実行するために研究されてきました。[8] 現時点では、GPGPUが最も効率的であることが証明されています。[9]
図書館
コンピュータ シミュレーションにおける ISL の重要性と高い計算要件の両方から、ステンシル ベースの計算を実行する科学者をサポートする再利用可能なライブラリの作成を目指す取り組みが数多く行われています。ライブラリは主に並列化に関係していますが、IO、ステアリング、チェックポイントなどの他の課題にも取り組む場合があります。ライブラリは API によって分類できます。
パッチベースのライブラリ
これは伝統的な設計です。ライブラリはn次元のスカラー配列のセットを管理し、ユーザープログラムはこれにアクセスして更新を実行できます。ライブラリは境界 (ゴーストゾーンまたはハローと呼ばれる) の同期を処理します。このインターフェイスの利点は、ユーザープログラムが配列をループできるため、レガシーコード[10]を簡単に統合できることです。欠点は、ライブラリがキャッシュブロッキング (ループ内で実行する必要があるため[11] ) やアクセラレータの API 呼び出しのラッピング (CUDA または OpenCL 経由など) を 処理できないことです。実装には、物理学の問題解決環境である Cactus や waLBerla などがあります。
細胞ベースのライブラリ
これらのライブラリは、インターフェイスを単一のシミュレーションセルの更新に移動します。つまり、現在のセルとその隣接セルのみが公開されます (getter/setter メソッドなどを介して)。このアプローチの利点は、ライブラリがどのセルをどの順序で更新するかを厳密に制御できることです。これは、キャッシュブロッキングを実装するだけでなく、[9] 同じコードをマルチコアと GPU で実行する場合にも役立ちます。[12]このアプローチでは、ユーザーはライブラリと一緒にソースコードを再コンパイルする必要があります。そうしないと、セルの更新ごとに関数呼び出しが必要になり、パフォーマンスが大幅に低下します。これは、クラステンプレートやメタプログラミングなどの手法でのみ実現可能であり、この設計が新しいライブラリにのみ見られるのもこのためです。例としては、Physis や LibGeoDecomp があります。
参照
参考文献
- ^ abc Roth, Gerald et al. (1997) Proceedings of SC'97: High Performance Networking and Computing. High Performance Fortran でのステンシルのコンパイル。
- ^ abcd Sloot, Peter MA 他 (2002 年 5 月 28 日) 計算科学 - ICCS 2002: 国際会議、アムステルダム、オランダ、2002 年 4 月 21 ~ 24 日。議事録、パート I。843ページ 。出版社: Springer。ISBN 3-540-43591-3 。
- ^ abc フェイ、ディートマー他。 (2010) グリッド コンピューティング: 計算科学のための基礎技術。ページ 439。出版社: Springer。ISBN 3-540-79746-7
- ^ Yang, Laurence T.; Guo, Minyi. (2005 年 8 月 12 日) High-Performance Computing: Paradigm and Infrastructure. 221 ページ。出版社: Wiley-Interscience。ISBN 0-471-65471 -X
- ^ Micikevicius、Paulius 他 (2009) CUDA を使用した GPU での 3D 差分計算 グラフィックス プロセッシング ユニットでの汎用処理に関する第 2 回ワークショップの議事録 ISBN 978-1-60558-517-8
- ^ Datta, Kaushik (2009) キャッシュベースのマルチコアプラットフォーム向けステンシルコードの自動チューニング Archived 2012-10-08 at the Wayback Machine、博士論文
- ^ Wellein, G 他 (2009) マルチコア対応ウェーブフロント並列化によるステンシル計算の効率的な時間的ブロッキング、第 33 回 IEEE 国際コンピュータソフトウェアおよびアプリケーション会議、COMPSAC 2009
- ^ Datta, Kaushik 他 (2008) 最先端のマルチコア アーキテクチャにおけるステンシル計算の最適化と自動チューニング、 SC '08 Proceedings of the 2008 ACM/IEEE conference on Supercomputing
- ^ ab Schäfer, Andreas および Fey, Dietmar (2011) GPGPU 向け高性能ステンシル コード アルゴリズム、国際計算科学会議議事録、ICCS 2011
- ^ S. Donath、J. Götz、C. Feichtinger、K. Iglberger、U. Rüde (2010) waLBerla: 数千のプロセッサを搭載した Itanium ベース システムの最適化、科学と工学における高性能コンピューティング、ガルヒング/ミュンヘン 2009
- ^ Nguyen, Anthony 他 (2010) 最新の CPU および GPU でのステンシル計算のための 3.5-D ブロッキング最適化、SC '10 Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis
- ^ 丸山直也、野村達夫、佐藤健人、松岡聡 (2011) Physis: 大規模 GPU 高速スーパーコンピュータにおけるステンシル計算のための暗黙的並列プログラミング モデル、SC '11 Proceedings of the 2011 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis
外部リンク
- フィシス
- LibGeoDecomp は 2022-06-25 にWayback Machineにアーカイブされました
- ワルベルラ
