Skip to main content
QUICK REVIEW

[論文レビュー] Hybrid Monte Carlo with Wilson Dirac operator on the Fermi GPU

Abhijit Chakrabarty, Pushan Majumdar|arXiv (Cornell University)|Jul 10, 2012
Theoretical and Computational Physics被引用数 3
ひとこと要約

この論文は、NVIDIA Fermi GPU上で2つのデゲネレートなウィルソン・ディラックフェルミオンを伴う格子QCDのハイブリッドモンテカルロシミュレーションを、コード生成を用いて配列変数をレジスタにマッピングすることで高度に最適化し、1つのCPUスレッドと比較して10倍以上の高速化を達成した。この手法はグローバルメモリアクセスを最小限に抑え、GPUのレジスタファイルを活用してほぼ即時のデータアクセスを実現し、ハイエンドクラスタ上の19〜26スレッドと同等の性能を発揮した。

ABSTRACT

In this article we present our implementation of a Hybrid Monte Carlo algorithm for Lattice Gauge Theory using two degenerate flavours of Wilson-Dirac fermions on a Fermi GPU. We find that using registers instead of global memory speeds up the code by almost an order of magnitude. To map the array variables to scalars, so that the compiler puts them in the registers, we use code generators. Our final program is more than 10 times faster than a generic single CPU.

研究の動機と目的

  • GPUアーキテクチャ上でダイナミカルフェルミオンを伴うハイブリッドモンテカルロシミュレーションの高速化を目的とする。
  • GPUベースの格子規範理論シミュレーションにおいて、遅いグローバルメモリアクセスが引き起こす性能ボトルネックを克服することを目的とする。
  • GPUカーネルにおけるランタイムデータとして、グローバルメモリの代わりにレジスタ変数を使用することの検討を目的とする。
  • 最適なパフォーマンスを実現するため、配列変数をスカラーレジスタにマッピングするコード生成技術の開発および応用を目的とする。
  • レジスタ最適化が、現実的な格子サイズにおいて、単一スレッドのCPUパフォーマンスを上回る10倍以上の高速化を達成できることを実証することを目的とする。

提案手法

  • CUDAを用いて、Fermi GPU上で2つのデゲネレートなウィルソン・ディラックフェルミオンのハイブリッドモンテカルロアルゴリズムを実装する。
  • ランタイム変数のグローバルメモリ使用を、レイテンシを約100〜150サイクルから1サイクルに削減するため、レジスタストレージに置き換える。
  • 配列要素をスカラービアリャブルにマッピングするコードジェネレータを用い、コンパイラがそれらをレジスタに割り当てられるようにする。
  • 共役勾配反転カーネルの最適化において、グローバルメモリトランザクションを最小限に抑え、レジスタ利用率を最大化する。
  • C2050およびX2090のFermi GPU上でパフォーマンスをテストし、IntelおよびCray Fortranコンパイラーを用いたCPUクラスタ(Opteron、Cray XE6)と比較する。
  • CGイテレーション全体のタイミングを測定し、カーネル起動オーバーヘッドおよびスケーリング特性を推定する。

実験結果

リサーチクエスチョン

  • RQ1GPUベースのHMCシミュレーションにおいて、レジスタベースのストレージがグローバルメモリアクセスを著しく上回る可能性があるか?
  • RQ2コード生成技術を用いることで、配列変数をレジスタにどれほど効果的にマッピングできるか?
  • RQ3最新のクラスタ上で、レジスタ最適化されたGPUカーネルのパフォーマンスは、マルチスレッドCPU実装と比べてどの程度の差があるか?
  • RQ4現実的な格子サイズにおいて、GPU最適化されたHMC実装が単一CPUスレッドと比較してどの程度の高速化が達成できるか?
  • RQ5レジスタ最適化によるパフォーマンス向上は、格子体積およびイテレーション回数の増加に伴いスケーリングするか?

主な発見

  • グローバルメモリの代わりにレジスタを使用することで、コードの実行速度がほぼ10倍に向上し、単一CPUスレッドと比較して10倍以上の高速化を達成した。
  • C2050 GPUのパフォーマンスは、Cray XE6ノードの約19スレッドに相当し、X2090は約26スレッドに相当する。
  • 共役勾配ルーチンのカーネル起動オーバーヘッドは、C2050およびX2090の両方で約0.5秒であった。
  • インバーターのタイミングはCGイテレーション数に比例して線形に増加しており、イテレーション間での一貫性あるパフォーマンスが確認された。
  • レジスタマッピングを実施しない場合、パフォーマンス向上は約2倍にとどまったが、完全なレジスタ最適化により10倍を超える向上が達成された。
  • 配列をレジスタに効果的にマッピングするためにはコード生成が不可欠であり、これによりコンパイラが変数を高速なレジスタファイルに配置できるようになった。

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

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

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

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