応用数理工学特論 線形計算と ハイパフォーマンスコンピューティング 第3回 計算理工学専攻 張研究室 山本有作 典型的なマイクロプロセッサのメモリ階層 データ転送速度 非常に大 レジスタ 演算器 8~128 ワード データ転送速度大 キャッシュ 数100Kバイト ~ 数Mバイト データ転送速度小 主メモリ 数100Mバイト ~ 数Gバイト • 演算器に近い記憶装置ほど高速だが,容量は小さい。 • 演算器と主メモリの速度差は,年々大きくなっている。 ATLASの性能 • n=1000のとき,ピーク性能の95%以上を達成している。 3500 3000 2500 hand-coded ATLAS peak performance 2000 1500 1000 500 0 100 200 300 400 500 600 700 800 900 1000 共有メモリ型並列計算機向けの高性能化手法 • PU間の負荷分散均等化 – 各PUの処理量が均等になるよう 処理を分割 キャッシュ PU0 PU1 PU2 PU3 バス メモリ • PU間同期の削減 – 同期には通常,数百サイクルの時間が必要 – 並列粒度の増大による同期回数の削減が性能向上の鍵 • キャッシュメモリの有効利用 – 演算順序の変更等により,キャッシュ中のデータの再利用性を向上 – 同時にPU間でのアクセス競合を削減し,メモリアクセスを高速化 BLASの利用による高性能化 • BLASとは – Basic Linear Algebra Subprograms の略 – 個々のマシン向けにチューニングした基本行列演算のライブラリ • BLASの種類 – BLAS1: ベクトルとベクトルの演算 • 内積 c := x t y • AXPY演算 y: = ax + y など – BLAS2: 行列とベクトルの演算 • 行列ベクトル積 y := Ax • 行列のrank-1更新 A := A + xyt – BLAS3: 行列と行列の演算 • 行列乗算 C := AB など = A × A = A + × C = A × B BLASにおけるデータ再利用性と並列粒度 • BLAS1 – 演算量: O(N), データ量: O(N) – データ再利用性: なし – 並列粒度: O(N/p) (N: ベクトルの次元,p: プロセッサ台数) • BLAS2 – 演算量: O(N2), データ量: O(N2) – ベクトルデータのみ再利用性あり – 並列粒度: O(N2/p) = A × A = A + × • BLAS3 – 演算量: O(N3), データ量: O(N2) – O(N)回のデータ再利用が可能 – 並列粒度: O(N3/p) C = A × B 演算をできる限り BLAS2,3で行うことが高性能化のポイント 現在利用可能な最適化BLAS • プロセッサメーカーの提供するBLAS – Intel MKL,AMD ACML,IBM ESSL など – メーカーによっては共有メモリ向け並列化版もあり。 • ATLAS(Automatically Tuned Linear Algebra Subprograms) – 対象プロセッサに合わせて自動的に性能を最適化するBLAS – http://math-atlas.sourceforge.net/ より入手可能 – 共有メモリ向け並列化版もあり。 • GOTO BLAS – – – – テキサス大学オースチン校の後藤和茂氏によるBLAS http://www.cs.utexas.edu/users/flame/goto/ より入手可能 この3種のBLASの中では,多くの場合最高速 共有メモリ向け並列化版も(一部)あり。 行列乗算を用いたガウスの消去法の性能 • n=1000のとき,ピークの65%以上の性能を達成 3500 3000 2500 2000 1500 Gaussian elimination peak performance 1000 500 0 100 200 300 400 500 600 700 800 900 1000
© Copyright 2024 ExpyDoc