Skip to main content
QUICK REVIEW

[論文レビュー] Speeding up Madgraph5 aMC@NLO through CPU vectorization and GPU offloading: towards a first alpha release

A. Valassi, J. T. Childers|arXiv (Cornell University)|Mar 31, 2023
Advanced Data Storage Technologies被引用数 6
ひとこと要約

本論文は、CPUのベクトル化(AVX512)とGPUのオフロード(CUDA、SYCL)を活用して行列要素計算を高速化することで、Madgraph5_aMC@NLOの性能を大幅に改善し、ベクトルCPUでは最大16倍の高速化、GPUでは顕著な性能向上を達成した。この研究により、MadEventフレームワークへの完全統合が可能となり、2023年第二四半期に初のアルファリリースを予定しており、LHCレベルのQCDプロセスを完全な物理的忠実性と向上したスループットでサポートする。

ABSTRACT

The matrix element (ME) calculation in any Monte Carlo physics event generator is an ideal fit for implementing data parallelism with lockstep processing on GPUs and vector CPUs. For complex physics processes where the ME calculation is the computational bottleneck of event generation workflows, this can lead to large overall speedups by efficiently exploiting these hardware architectures, which are now largely underutilized in HEP. In this paper, we present the status of our work on the reengineering of the Madgraph5_aMC@NLO event generator at the time of the ACAT2022 conference. The progress achieved since our previous publication in the ICHEP2022 proceedings is discussed, for our implementations of the ME calculations in vectorized C++, in CUDA and in the SYCL framework, as well as in their integration into the existing MadEvent framework. The outlook towards a first alpha release of the software supporting QCD LO processes usable by the LHC experiments is also discussed.

研究の動機と目的

  • 高エネルギー物理学(HEP)ワークロード、特にモンテカルロイベント生成において、現代のHPCハードウェア(特にベクタCPUとGPU)が十分に活用されていない問題に対処すること。
  • Madgraph5_aMC@NLOにおける行列要素(ME)計算を再設計し、ベクタプロセッサとGPU上でデータ並列性とロックステップ実行を活用すること。
  • CUDA、SYCL、ベクタ化C++を用いた高性能ME実装を、Fortranベースの外側のシェルを変更せずに、既存のMadEventフレームワークに統合すること。
  • 未重み付きサンプルを含む、LHC互換の完全なイベント生成を生産環境で利用可能にするため、スティルスティックなヘリシティおよびカラーチョイスを実装すること。
  • 2023年第二四半期までに、QCD LOプロセスをサポートする加速フレームワークの初のアルファリリースを提供すること。物理的出力は同一であり、計算コストは著しく低減される。

提案手法

  • AVX512インストラクションを用いたベクタ化C++による行列要素計算の再実装により、現代のCPU上で単精度で最大x16、二精度でx8の理論的SIMD高速化を達成。
  • NVIDIA GPU向けにCUDAに移植し、100%のブランチ効率とロックステップ処理を実現することで、GPUの利用度を最大限に引き上げた。
  • SYCLとsycl::vec抽象化を用いたポータブルなMEカーネルを実装し、AMDおよびIntel GPUを含む異種アーキテクチャでも実行可能にした。
  • 新しいデータ並列MEカーネルを既存のMadEventフレームワークに統合し、スカラFortran MEモジュールのみを置き換え、残りのワークフローはそのままで保持した。
  • ME高速化後に顕在化する性能ボトルネック(例:乱数生成、アンウェイト、I/O)を最適化し、それらのシリアル部を緩和した。
  • 精度と性能のバランスを図るため、ME計算全体で単精度と二精度を適切に選択的に使用する混合精度モードを導入した。
Figure 1: Total combined throughput for the $gg\!\rightarrow\!t\bar{t}gg$ process using 1, 2, 4 or 8 copies of our standalone application (see Ref. [ 1 ] ), as a function of the CUDA grid size (number of blocks per grid times number of threads per block — ”gt00256” indicates that the latter is fixed
Figure 1: Total combined throughput for the $gg\!\rightarrow\!t\bar{t}gg$ process using 1, 2, 4 or 8 copies of our standalone application (see Ref. [ 1 ] ), as a function of the CUDA grid size (number of blocks per grid times number of threads per block — ”gt00256” indicates that the latter is fixed

実験結果

リサーチクエスチョン

  • RQ1Madgraph5_aMC@NLOにおける行列要素計算は、CPUのベクトル化とGPUのオフロードにより、物理的正確性とインターフェース互換性を保持したまま高速化可能か?
  • RQ2データ並列性とロックステップ実行は、ME計算においてどの程度達成可能であり、現代のベクタCPUおよびGPUでどの程度の性能向上が得られるか?
  • RQ3SYCLのようなパフォーマンスポータビリティフレームワークは、非効率を犠牲にせず、高性能MEカーネルを異種アーキテクチャに展開可能か?
  • RQ4GPUおよびベクタCPU実行におけるロックステップ処理と全体的なパフォーマンスに、ヘリシティおよびカラーステートの確率的選択が及える影響は何か?
  • RQ5ME高速化後のMadEventフレームワークにおける主なパフォーマンスボトルネックは何か?そして、それらをどのように緩和することで生産向けのアルファリリースを実現できるか?

主な発見

  • AVX512対応CPUコア1つで実装したベクタ化C++は、単精度で最大x16、二精度でx8の理論的高速化を達成した。
  • CUDA実装はNVIDIA GPUで100%のブランチ効率を達成し、ほぼ理想に近いロックステップ実行を実現し、スカラFortranよりも顕著な高速化を実現した。
  • SYCLベースのMEカーネルはMadEventに完全に統合され、AMDおよびIntel GPUへのME計算のオフロードに成功し、NVIDIA以外のハードウェアでも完全なLHC互換イベント生成が可能になった。
  • CPU向けのプロトタイプSYCL実装は、gccコンパイル済みCUDA/C++ビルドと同等またはそれ以上のパフォーマンスを示しており、Intel icxコンパイラによる積極的なインライン化とベクタ化がその要因と考えられる。
  • イベントごとの乱数的ヘリシティおよびカラーチョイスの統合—以前は最後の欠落要因であった—が完了し、正しい物理的出力を伴う完全な未重み付きイベント生成が可能になった。
  • パフォーマンス比較の結果、AVX512と積極的なインライン化を活用した場合、icxコンパイルビルドのCUDA/C++カーネルがgccビルドを2倍以上上回る性能を示した。
Figure 2: Total combined throughput for the $gg\!\rightarrow\!t\bar{t}gg$ process as a function of the number of copies of our single-threaded standalone application, in our five C++ vectorization scenarios. The y-axis represents the ratio of the achieved throughput to a reference with no vectorizat
Figure 2: Total combined throughput for the $gg\!\rightarrow\!t\bar{t}gg$ process as a function of the number of copies of our single-threaded standalone application, in our five C++ vectorization scenarios. The y-axis represents the ratio of the achieved throughput to a reference with no vectorizat

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。