分散メモリ型スパースソルバの開発と評価

応用数理工学特論
線形計算と
ハイパフォーマンスコンピューティング
第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