Graphic Card を使った 高性能計算

Slides:



Advertisements
Similar presentations
1 広島大学 理学研究科 尾崎 裕介 石川 健一. 1. Graphic Processing Unit (GPU) とは? 2. Nvidia CUDA programming model 3. GPU の高速化 4. QCD with CUDA 5. 結果 6. まとめ 2.
Advertisements

G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
偏微分方程式シミュレーショ ンのための並列 DSL 「 Paraiso 」 計画 宇宙物理学者 京都大学白眉センター 特定助教.
第 5 章 2 次元モデル Chapter 5 2-dimensional model. Contents 1.2 次元モデル 2-dimensional model 2. 弱形式 Weak form 3.FEM 近似 FEM approximation 4. まとめ Summary.
CPU/GPUを協調利用する ソフトウェア開発環境
在庫管理問題の動的計画法による 解法とCUDA を用いた高速化
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
※ 対称密行列の固有値分解は特異値分解と共通点が多い
Fill-in LevelつきIC分解による 前処理について
GPU上の大規模格子QCDシミュレーション に向けて
Chapter 11 Queues 行列.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
2010年7月9日 統計数理研究所 オープンハウス 確率モデル推定パラメータ値を用いた市場木材価格の期間構造変化の探求 Searching for Structural Change in Market-Based Log Price with Regard to the Estimated Parameters.
高性能コンピューティング論2 第12回 アクセラレータ
What did you do, mate? Plain-Past
シミュレーション物理5 運動方程式の方法: サブルーチンの使い方.
はじめてのCUDA 〜CUDA事始め〜 はるにゃん Lv1くまー.
P,Q比が変更可能なScaLAPACKの コスト見積もり関数の開発
PCクラスタ上での 連立一次方程式の解の精度保証
格子QCDのための線形計算 (連立一次方程式、固有値問題)について
半正定値計画問題に対する 行列補完理論の高速実装
理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠
画像処理ボード上での 高速テンプレートマッチングの 実装と検証
スパコンとJLDG HEPの計算環境 HEPnet-J
十年生の 日本語 Year 10 Writing Portfolio
CRLA Project Assisting the Project of
VTA 02 What do you do on a weekend? しゅうまつ、何をしますか。
応用数理工学特論 第5回 計算理工学専攻 張研究室 山本有作.
正方行列向け特異値分解の CUDAによる高速化
What is the English Lounge?
京都大学大学院医学研究科 画像応用治療学・放射線腫瘍学 石原 佳知
アクセラレータを用いた 大規模へテロ環境における Linpack
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
Kalman Filter Finite Element Method Applied to Dynamic Motion of Ground Yusuke KATO Department of Civil Engineering, Chuo University.
ストップウォッチの カード ストップウォッチの カード
ステンシル計算を対象とした 大規模GPUクラスタ向け 自動並列化フレームワーク
P4-21 ネットワーク上の経路に対する 回帰問題について
芝野耕司 ISO/IEC JTC1/SC2 (Coded Character Sets)委員長 東京外国語大学
格子QCDにおけるGPU計算 広大理 尾崎裕介 共同研究者 石川健一.
格子QCD計算のGPUを用いた加速の可能性について
第三世代NVIDIA GPUを用いた高性能固有値ソルバの開発
PGIコンパイラーによる ディレクティブベースのGPGPU
AMR法フレームワークの様々なアーキテクチャへ向けた発展 研究背景と研究目的 Xeon Phi対応に向けた拡張
MPIとOpenMPを用いた Nクイーン問題の並列化
はじめてのCUDA 〜CUDA事始め〜 はるにゃん Lv1くまー.
東京海洋大産学官連携研究員/技術コンサルタント 高須 知二 Tomoji TAKASU
リモートホストの異常を検知するための GPUとの直接通信機構
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
Relativistic Simulations and Numerical Cherenkov
My Dance Circle December 13, 2018  表紙 my dance circle.
AdaPrec (提案手法) の初回の通信精度選択
GPGPUによる 飽和高価値 アイテム集合マイニング
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
目的:高速QR分解ルーチンのGPUクラスタ実装
東北大 情報科学 田中和之,吉池紀子 山口大 工 庄野逸 理化学研究所 岡田真人
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
大強度ビームにふさわしい実験装置をつくろう Kenichi Imai (JAEA)
全体ミーティング (5/23) 村田雅之.
計画研究代表者 京都大学基礎物理学研究所 大野木 哲也
非等方格子上での クォーク作用の非摂動繰り込み
川島 朋尚 (国立天文台)、朝比奈 雄太 (国立天文台)、工藤祐己 (千葉大) supervised by 松本 洋介 (千葉大)
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
【GeoAFM】 Rhodopsin のAFM 像
分散メモリ型並列計算機上での行列演算の並列化
? リー・ヤンの零点 これまでの格子QCD計算の結果 今年度の計画 リー・ヤンの零点分布から探る有限密度QCDにおける相構造の研究
アノテーションガイドラインの管理を行う アノテーションシステムの提案
Improving Strategic Play in Shogi by Using Move Sequence Trees
8.数値微分・積分・微分方程式 工学的問題においては 解析的に微分値や積分値を求めたり, 微分方程式を解くことが難しいケースも多い。
Presentation transcript:

Graphic Card を使った 高性能計算 石川健一 (広島大学) 共同研究者 尾崎裕介 A04班 ワークショップ「計算科学による素粒子・原子核・宇宙の融合」 2008年12月1日ー2日

1.とりあえず背景 格子QCD 計算でしんどい所 一階の差分方程式=大規模疎行列連立一次方程式を大量に解く必要がある。 ホッピング行列(係数 (U とかγ)付一階差分) 解く連立方程式 (Wilson型) Dw =1-κM  (Overlap型) Dov = m – Dw / sqrt( Dw^+ Dw ) D x = b ホッピング行列は倍精度計算で格子点あたり ~ 3 Byte/Flop 要求

2. GPUの動向 GPU (AMD-ATI, Nvidia) すでに“Lattice QCD as a video game”, リアルタイムでのグラフィック処理を要求するため高いスループットで計算ができる。 高い並列度、高いメモリバンド幅 グラフィック以外の用途にこの計算リソースを使う               => GPGPU すでに“Lattice QCD as a video game”, [G.I.Egri, Z.Fodor, S.D.Katz, D.Nogradi, K.K.Szabo, hep-lat/0611022]. NVIDIA G80 arch. > 300 GFlops(SP) Lattice Wilson kernel > 30 GFlops Graphic API (OpenGL) 30GFlops

2. GPUの動向 GPGPU開発言語 性能: CUDA (Nvidia) (C extension) すでに単精度で~1TFlops My experience with CUDA (GeForce 8800 GTX) [NO WARRANTY CUDA code:http://theo.phys.sci.hiroshima-u.ac.jp/~ishikawa/CUDA/CudaQCDSolver_0.06.tar.gz] Hopping matrix mult (16^4) can also achieve > 40 GFlops. (13% sustained speed) 性能: すでに単精度で~1TFlops 倍精度計算も可能~100GFlops オンボードメモリは 1GByte オンボードメモリ-GPU間バンド幅 100GByte/s ボトルネックはホストーカード間データ転送 PCI-E G2(x16) 2~4GByte/s? 単精度の場合     要求1.5Byte/Flop GPUカードは (100GByte/s)/(1000GFlop/s)=0.1Byte/Flop メモリバンド幅で制限されるので性能は 100/1.5=67GFlops予想

2. GPUの動向 性能: [C.Rebbi et. al., PoS(LATTICE 2008)045] GFix してバンド幅を節約しているけど 70-90GFlops でる!(単精度)

3.CUDA Programming My experience with CUDA (GeForce 8800 GTX) Cuda code example: Link variable times 2-Spinor code Almost C language

3.CUDA Programming My experience with CUDA (GeForce 8800 GTX) CUDA Programming model Single Program Multiple Data (SPMD) Single Thread Multiple Stream? Nested threading. Grid / Block / Thread Thread ID + Block ID (Corresponds to MPI RANK) Block has local memory shared by threads in a block. Grid for 16^3x32 lattice Block for 4^3x2 lattice Spinor data are vector loaded [100GFlop/sec] on the shared memory on each block. They are reused by (max 8 times/ min 4 times). Link fields are loaded via Texture Fetching mechanism (Cached). Thread for single site

4. 単精度計算で倍精度計算を行う Mixed precision / Inner-Outer solver 4.  単精度計算で倍精度計算を行う Mixed precision / Inner-Outer solver Flexible Preconditioner 可能な反復法で計算 Richardson 反復(Iterative refinement)法を基に作る 単精度で解ききっていれば、倍精度の解を得るのにRefinment 反復は3-5回。 演算量はすべて倍精度で計算するときより増えるが単精度計算の効率や速さが良いときは全体で速くなる。 Intel 系は確かに SSE2などを使うとキャッシュやメモリバンド幅、レジスタの利用率があがり全体で2倍の速度上昇があった。 GPU計算をここに使うことで更なるスピードアップ

4. 単精度計算で倍精度計算を行う GPUを使って実験してみた Nested BiCGStab (Sakurai, Tadano) 4.  単精度計算で倍精度計算を行う GPUを使って実験してみた (GeForce 8800GTX, Core2Duo2.66GHz, PCI-E G1.1x16[peak 4GB/s], H⇒D:1.36GB/s, H←D:1.53GB/s, D⇔G:70.8GB/s) Nested BiCGStab (Sakurai, Tadano) 外側反復 BiCGStab 倍精度で CPUで計算 内側反復 BiCGStab 単精度 CPUで計算した場合とGPUで計算した場合の比較 Even-Odd site preconditioned O(a)-Wilson quark [広大M2学生 尾崎裕介君 coding/exp.] GPUを使うと計算時間は 1/8に短縮される!(当社比) CPUコードはもう少し改良する 余地(SSEの使用)がある。 1/4から1/5の短縮かもしれない。

4.  単精度計算で倍精度計算を行う GPUを使って実験してみた GPUを使うと計算時間は 1/7に短縮される!(当社比) CPUコードはもう少し改良する 余地(SSEの使用)がある。 1/4から1/5の短縮かもしれない。 全計算時間のほとんどは内部反復に費やされているが、GPU版は内部反復がとても早いので外部反復の遅さが目立つかも。

4.  単精度計算で倍精度計算を行う GPUを使って実験してみた CPU(Fortran) only GPU(CUDA)+CPU(C)

5. 今後の方針とまとめ 並列化無しの単体のコードの書き方は分かってきた。それなりに速度向上はできそうである。 5. 今後の方針とまとめ 並列化無しの単体のコードの書き方は分かってきた。それなりに速度向上はできそうである。 問題は大規模並列のときどうするか? リンク変数は一度GPUに送ってしまえばGPU上に取っておける。 クォークベクトルをHost(CPU)-GPU間でやり取りしつつ、並列計算のため Host-Host 間でデータの交換が必要。 GPUで計算しているとき CPUは遊んでいる。 Host-Host通信中は GPU,CPUは遊んでいる。 遊ばせないアルゴリズムはあるか? Overlap fermion のときはどうするか? 5D表現で行えば Wilsonのときと同様だが、、、どうか?

5. 今後の方針とまとめ 並列化の方針、とりあえずWilson型 領域分割法の前処理としてブロック部分の逆を取るところを GPUに任せる 5. 今後の方針とまとめ 並列化の方針、とりあえずWilson型 領域分割法の前処理としてブロック部分の逆を取るところを GPUに任せる ブロック内の        の計算をGPUに任せてはどうか?

5. 今後の方針とまとめ

空白 空白

Nested Domain Decomposition +Some Improvement technology. u/d/s Small block p n p/n ( L > 6 fm?, 1/a=2GeV, 64^4 lattice) Nested Domain Decomposition +Some Improvement technology. [Luscher, JHEP 0305 (2003) 052 ]

Communication with Surface data only. or GPGPU Accelerator Communication with Surface data only. Bandwidth can be properly treated by this blocking. But Latency is limited by speed of light.

GPGPU This year NVIDA and AMD/ATI provide DP enabled architecture NVIDIA GT200 (Tesla 10series) 240 SP (SP cores), 30 DP cores ~1,000(or 600)Glops(SP), ~90GFlops(DP) We expect > 60 GFlops(SP) for QCD kernel. (assuming 10% efficiency) AMD/ATI RV770 (Firestream 9250) 640 SP units, (160 DP units?) 1.2TFlops (SP), 200 GFlops (DP) AMD Stream SDK For QCD No ECC, check the result on the host side. O(1000) thread programming/SIMD programming is required. (1site=1thread) Make use of the Local memories attached each core for good efficiency. Host device communication is limited by PCI-E x16 G2 speed (8GB/sec (sustained at 2GB/sec))