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

Slides:



Advertisements
Similar presentations
G ゼミ 2010/5/14 渡辺健人. パフォーマンスの測定 CUDA Visual Profiler CUDA の SDK に標準でついているパフォーマン ス測定用のツール 使い方: exe ファイルのパスと作業ディレクトリ指定して実 行するだけ 注意点 : GPU のコード実行後にプログラム終了前に,
Advertisements

Multicore Programming Contest GPU Challenge 2009 ツールキット解説書 ver.1.0 対応版 GPU Challenge 2009 実行委員会 Cell Challenge 2009 併設企画 GPU Challenge 2009.
大規模な三角 Toeplitz 線形方 程式の高速解法とその応用 ○ 安村 修一(法政大学 4 年) 李 磊(法政大学) 日本応用数理学会「行列・固有値の解法とその応用」研究部会 第6回研究会.
偏微分方程式シミュレーショ ンのための並列 DSL 「 Paraiso 」 計画 宇宙物理学者 京都大学白眉センター 特定助教.
CPU/GPUを協調利用する ソフトウェア開発環境
在庫管理問題の動的計画法による 解法とCUDA を用いた高速化
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
CPUとGPUの 性能比較 -行列計算およびN体問題を用いて-
計算理工学基礎 「ハイパフォーマンスコンピューティングの基礎」
※ 対称密行列の固有値分解は特異値分解と共通点が多い
Intel AVX命令を用いた並列FFTの実現と評価
Fill-in LevelつきIC分解による 前処理について
GPU上の大規模格子QCDシミュレーション に向けて
A Q R QR分解とは? → × ◆QR分解 QTQ = I (単位行列) ◆応用例 ◆主な計算方法 n m 今回はこの方法に注目
全体ミーティング (4/25) 村田雅之.
Finger patternのブロック化による 陰的wavelet近似逆行列前処理の 高速化
高性能コンピューティング論2 第12回 アクセラレータ
対角マトリックスを用いた3次元剛塑性有限要素法の並列計算 対角マトリックスを用いた剛塑性有限要素法
時空間データからのオブジェクトベース知識発見
コンピュータの主役はCPU(Central Processing Unit)
はじめてのCUDA 〜CUDA事始め〜 はるにゃん Lv1くまー.
多数の遊休PC上での 分散ゲーム木探索 導入 ゲーム木探索 ⇒遊休PCを利用して高速化 例)コンピュータ将棋における次手の計算
整数計画法を用いた ペグソリティアの解法 ver. 2.1
PCクラスタ上での 連立一次方程式の解の精度保証
格子QCDのための線形計算 (連立一次方程式、固有値問題)について
理学部情報科学科 金田研究室 指導教官 金田 康正 工藤 誠
スパコンとJLDG HEPの計算環境 HEPnet-J
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
組み込み向けCPU 小型デバイスに搭載されるCPU 特徴 携帯電話,デジタルカメラ,PDA,センサデバイスなど 小型 低消費電力 多機能
正方行列向け特異値分解の CUDAによる高速化
京都大学大学院医学研究科 画像応用治療学・放射線腫瘍学 石原 佳知
文献名 “Performance Tuning of a CFD Code on the Earth Simulator”
現実の有限密度QCDの定性的な振る舞いに
ステンシル計算を対象とした 大規模GPUクラスタ向け 自動並列化フレームワーク
Graphic Card を使った 高性能計算
Expression Templateを使った ベクトル演算のCUDAによる 実装と評価
格子QCDにおけるGPU計算 広大理 尾崎裕介 共同研究者 石川健一.
格子QCD計算のGPUを用いた加速の可能性について
Intel Technology Provider Platinum 2016 の認証済み 全シリーズ累計50万台突破!
PGIコンパイラーによる ディレクティブベースのGPGPU
AMR法フレームワークの様々なアーキテクチャへ向けた発展 研究背景と研究目的 Xeon Phi対応に向けた拡張
MPIとOpenMPを用いた Nクイーン問題の並列化
梅澤威志 隣の芝は茶色いか 梅澤威志
はじめてのCUDA 〜CUDA事始め〜 はるにゃん Lv1くまー.
リモートホストの異常を検知するための GPUとの直接通信機構
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(NlogN)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似法
実行時情報に基づく OSカーネルのコンフィグ最小化
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
アルゴリズムとデータ構造 補足資料5-1 「メモリとポインタ」
通信機構合わせた最適化をおこなう並列化ンパイラ
参照の空間局所性を最大化する ボリューム・レンダリング・ アルゴリズム
導電性高分子材料の電子状態計算に現れる連立一次方程式に対する 並列直接解法の高性能化
AdaPrec (提案手法) の初回の通信精度選択
航空エンジンの翼列周り流れ解析のメニーコアシステム向け最適化
先進的計算基盤システムシンポジウム SACSIS2007併設企画 マルチコアプログラミングコンテスト 「Cellスピードチャレンジ2007」
GPGPUによる 飽和高価値 アイテム集合マイニング
階層的境界ボリュームを用いた 陰関数曲面の高速なレイトレーシング法
GPUを用いた疎行列の格納形式による行列ベクトル積の評価
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
第4回 メモリ管理 主記憶(メインメモリ)の管理 固定区画方式と可変区画方式 空き領域の管理 スワッピング.
高精細計算を実現するAMR法フレームワークの高度化 研究背景と研究目的 複数GPU間での袖領域の交換と効率化
Cell/B.E. のSPE上で動作する 安全なOS監視システム
Jh NAHI 横田 理央 (東京工業大学) Hierarchical low-rank approximation methods on distributed memory and GPUs 背景  H行列、H2行列、HSS行列などの階層的低ランク近似法はO(N2)の要素を持つ密行列をO(N)の要素を持つ行列に圧縮することができる。圧縮された行列を用いることで、行列積、LU分解、固有値計算をO(Nlog2N)で行うことができるため、従来密行列の解法が用いられてきた分野では階層的低ランク近似
メモリ使用量の少ないGCR法の提案 東京大学理学部情報科学科 工藤 誠 東京大学情報基盤センター 黒田 久泰
長方行列向け特異値分解の 浮動小数点コプロセッサによる 高速化
目次 はじめに 収束性理論解析 数値実験 まとめ 特異値計算のための dqds 法 シフトによる収束の加速
分散メモリ型並列計算機上での行列演算の並列化
Presentation transcript:

1 広島大学 理学研究科 尾崎 裕介 石川 健一

1. Graphic Processing Unit (GPU) とは? 2. Nvidia CUDA programming model 3. GPU の高速化 4. QCD with CUDA 5. 結果 6. まとめ 2

3 GPU を搭載した Graphic Card  価格: 5 ~ 10 万円  性能: 数百 GFLOPS ( 単精度 )  主に画像処理を行う PC パーツ  滑らかな描画  リアルタイム表示  100 ~ 200 基の processer による 超並列高速計算 O(a) 改良した Wilson-Dirac quark の solver を CUDA によって作成し、 GPU でどのくらい加速されたか見てみた Gyözö I. Egri, hep-lat/ “Lattice QCD as a video game” 先行研究 : → 単精度 本研究では倍精度 手軽に高性能

CPU の倍精度 solver CPU の単精度 solver GPU の単精度 solver 単精度 solver を用いて倍精度 の結果を得る手法 反復改良法、 連立方程式 (Wilson-Dirac) Dx = b を倍精度で 解く 単精度で Dx=b を複数回解 く と倍精度の解が得られるように した方法 GPU :単精度計算が非常に高 速 ( GFlops) 単精度で解くところを GPU に 担当させると全体が スピード アップ!

L 次元ベクトルの和の計算例 (L=N×M) c = a + b //=== host から呼び出される GPU code ==== _global_ void vadd_kernel(float *a, float *b, float *c) { int idx = threadIdx.x+blockIdx.x*blockDim.x; c[idx] = a[idx] + b[idx]; } //==== host 側 code === void main() { …… // GPU 上にメモリ確保 cudaMalloc((void**)&a,….); ….. // c = a+b カーネルを GPU へ投げる // thread 数 /block = N, block 数 =M で並列実行 vadd_kernel >>(a,b,c); } 高い並列度をうまく利用する必要がある 5  thread : 最小の実行単位 (max 512/block)  thread block : 同一の multiprocessor 上で 実行される thread の集まり (max 65535)  grid : thread block の集まり 並列化されたカーネルの全体 thread 1 thread 2 thread 3 thread 4 ⋮ thread N block 1 block 2 block 3 block 4 ⋮ block M grid block

6 Nvidia CUDA Programming Guide より  できる限り並列化 → 1thread で 1 格子点の計算  できる限り高速なメモリアクセス → GPU 上の様々なメモリ領域の最適な使い方

7  Shared Memory  global Memory 高速 なメモリアクセス (4 clock cycles) read-write アクセス 同一 block 内の thread 間で共有 16KB/block device memory 上のメモリ 低速なメモリアクセス (400 ~ 600 clock cycles) read-write アクセス 全 thread 間で共有 Shared Memory の有効活用

8  1 格子点あたりのデータ量とロード回数 fermion : 8 回 +(1 回 ) 3×4×2×4Byte=96Byte gauge link : 2 回 3×(3-1)×2×4Byte×4=48Byte×4 SU(3) reconstruction method. clover 項 : 1 回 21×2×2×4Byte=336Byte fermion を shared memory に乗せた 4×4×4×2×96Byte=12.3KB, (max 16KB/block) gauge link と clover は device memory からロード CUDA with QCD, programming strategy データの出入り: 1584 Byte 計算量: 1896 Flop Byte/Flop = 0.83 G80 バンド幅 : ~ 80GB/s 予想性能: 100 GFlops!! CUDA ブロックに 4 3 ×2 格子点をアサイン スレッド数 =128 スレッド

9 GPU ・・・ NVIDIA GeForce 8800 GTX CPU ・・・ Intel Core 354.6GFLOPS 21.3GFLOPS  O(a) 改良の Wilson-Dirac quark solver  Bi-CGStab 法  反復改良法  単精度部分を GPU が担当  even-odd preconditioning マシン構成 solver

10 GPU を用いた場合 さらに 1/7 に 格子サイズ 16 3 ×32 quench 0.15fm quark 質量 [MeV] 23 、 52 、 81 単精度 solver で 加速効果 倍精度 単精度 23MeV 52MeV 81MeV GPU

11 CPU GPU quark 質量 23MeV 格子サイズ 4 3 ×8 8 3 × ×32 最大性能 17GFLOPS 今回の結果 ただし、まだ速くなるはず → coalesced access

12 格子点 0 格子点 1 格子点 2 ⋮ 格子点 0 格子点 1 格子点 2 ⋮ 格子点 0 格子点 1 格子点 2 ⋮ 格子点 0 ⋮ thread 0 thread 1 thread 2 ⋮ thread 0 thread 1 thread 2 ⋮ 4,8,or 16Byte

13 Nvidia GeForce GTX 280 Core 2 Duo 3.0GHz (6MB) non coalesced access on shared memory 20GFLOPS 石川健一 solver coalesced access on texture cache 40 ~ 50GFLOPS hopping → 89GFLOPS clover → 100GFLOPS 倍精度 solver GPU solver 220 秒 ~ 10 秒 ×22

14  GPU を用いると気軽に高速計算が可能。 ← 格子 QCD でも  GPU は単精度計算が高速。  反復改良法を利用した GPU solver を作成した。 ← 倍精度の結果  作成した solver は O(a) の改良を行う clover 項を導入している。  GeForce 8800 GTX での結果  solver の計算性能は最大約 17GFOLPS 。  計算時間は Core 2 Duo 2.66GHz CPU の 1/7 。  GeForce GTX 280 での結果  coalesced access 導入後 40 ~ 50GFLOPS 。  Core 2 Duo 3.0GHz の 22 倍。  高速な計算には coalesced access が必要。  複数の GPU による計算。