Closed yukarinoki closed 1 year ago
9 関連研究 並列アーキテクチャにコードを適応させるための多数のプログラミングモデルと最先端の技術、特にGPUに対するものが紹介されています[13, 33, 37, 38, 42]。 ディレクティブベースのプログラミングモデル[3, 35]は順次言語を拡張し、複雑な科学的アプリケーションがその構造を維持しながらループの反復をアクセラレータにオフロードすることを可能にします。しかし、そのようなコンパイラはしばしば順次コード生成の基礎に依存し、最適化の機会を一般的な計算に限定してしまいます[4, 28]。
いくつかのプロジェクトでは、ディレクティブベースのコードに対するドメイン固有やアーキテクチャ固有のアプローチを探求しています。CLAW DSL[10]はグリッドベースのアルゴリズムのためのディレクティブを提供し、OpenACC/OpenMPコード生成をサポートしながら、空間ブロッキングのようなターゲット固有の最適化を可能にします。JACC[28]は動的定数拡張を伴うジャストインタイムカーネルコンパイレーションを提供するOpenACCランタイムフレームワークです。OptACC[30]はOpenACCの並列性を最適化するために、ランタイムパラメータの探索を実行します。CCAMP[27]はOpenACCとOpenMPを交換し、モデルとアーキテクチャの各組み合わせに対する並列化を最適化します。Baruaら[4]は、ループ展開を通じてILPを最大化するための自動OpenACCカーネルオプティマイザを開発します。SAFARA[46]は、OpenACCカーネルで配列参照の再利用を容易にするために、レジスタリソースを完全に活用します。
私たちのACC Saturatorは3つの点で異なります:
(1)書き換えルールとコストモデルに基づいた最適なコード選択を通じた最適化の自動化、
(2)GPUメモリスループットの大幅な改善を実現するバルクロード最適化技術の統合、
3)ドメイン固有の情報を必要とせずにOpenACCとOpenMPの両方に適用可能である一方で、元のコード構造を維持します。
等価飽和ライブラリのegg[53]の導入以来、特にGPUコンピューティングの文脈で、深層学習アプリケーションの加速のためにそれを活用した多数の研究が行われています[16, 40, 41, 52, 57]。これらの研究は、算術式、抽象演算、テンソルグラフの書き換えルールを用いて、畳み込み、疎テンソル代数、全テンソル操作を最適化します。
Diospyros[49]は、等価飽和を用いてCコードから効率的なDSP操作を合成し、一方、Gowdaら[19]はeggを用いて自動並列性割り当てのための記号代数システムを実装します。
多くの最適化技術がGPU計算[22]のために開発されています。Rawatら[39]は、レジスタプレッシャーを軽減し、SM占有率を増加させるために、ヒューリスティックアルゴリズムを用いてステンシル計算を並べ替えます。
ソフトウェアシスティックアレイ[9]は、グローバルデータをGPUスレッドに割り当て、重複ブロックを通じて部分結果を伝播し、累積することで結果を計算し、共有メモリの使用なしにデータの局在性を向上させます。
Hongら[23]は、軽量カーネルエミュレーションを利用して、自動チューナーにパフォーマンスボトルネックのフィードバックを提供します。
対照的に、ACC Saturatorは直接的な書き換えメカニズムを採用し、複雑なプログラムにその応用を可能にします。さらに、私たちの方法は他のコード最適化に補完的です。
References [4] Prithayan Barua, Jun Shirako, and Vivek Sarkar. 2018. Cost-driven thread coarsening for GPU kernels. In Proceedings of the 27th International Conference on Parallel Architectures and Compilation Techniques (PACT). Association for Computing Machinery, New York, NY, USA, Article 32, 14 pages. https://doi.org/10.1145/3243176.3243196
[9] Peng Chen, Mohamed Wahib, Shinichiro Takizawa, Ryousei Takano, and Satoshi Matsuoka. 2019. A versatile software systolic execution model for GPU memory-bound kernels. In Proceedings of the International Conference for High Performance Computing, Networking, Storage and Analysis (SC ’19). Association for Computing Machinery, New York, NY, USA, Article 53, 81 pages. https://doi.org/10.1145/ 3295500.3356162
[10] Valentin Clement, Sylvaine Ferrachat, Oliver Fuhrer, Xavier Lapillonne, Carlos E. Osuna, Robert Pincus, Jon Rood, and William Sawyer. 2018. The CLAW DSL: Abstractions for performance portable weather and climate models. In Proceedings of the Platform for Advanced Scientific Computing Conference (PASC ’18). Association for Computing Machinery, New York, NY, USA, Article 2, 10 pages. https://doi.org/ 10.1145/3218176.3218226
[13] H. Carter Edwards and Daniel Sunderland. 2012. Kokkos array performance-portable manycore programming model. In Proceedings of the 2012 International Workshop on Programming Models and Applications for Multicores and Manycores (PMAM ’12). Association for Computing Machinery, New York, NY, USA, 1–10. https://doi.org/10. 1145/2141702.2141703 [14] Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi, Eli Barzilay, Jay McCarthy, and Sam Tobin-Hochstadt.
Equality SatuationでGPUの最適化コードを提供しようとしている。
https://arxiv.org/abs/2306.13002