倍精度bcrs形式疎行列と 倍々精度ベクトル積の による高速...
TRANSCRIPT
![Page 1: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/1.jpg)
Kogakuin University
倍精度BCRS形式疎行列と
倍々精度ベクトル積の
AVX2による高速計算
菱沼 利彰 (工学院大学)
田中 輝雄 (工学院大学)
長谷川 秀彦 (筑波大学)
![Page 2: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/2.jpg)
Kogakuin University
目次
1. 研究背景・目的
2. 倍々精度演算
3. AVX2の効果
4. BCRSの効果
5. まとめ
2
![Page 3: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/3.jpg)
Kogakuin University
背景
• 倍々精度(DD)演算をAVXを用いて高速化している†
• 倍精度疎行列と倍々精度ベクトルの積:DD-SpMV
DD-SpMVは演算器ネック
AVXを用いたCRS形式による実装では端数処理などが必要
1. Fused-Multiply-and-Add(FMA)命令の使用
DD乗算アルゴリズムの演算量を減らせる
2. 疎行列の格納形式BCRS形式
ブロックサイズAVXに合わせれば端数処理を無くせる
ランダムアクセスを削減できる
しかし,データ量,演算量が増える
3 †菱沼,他,AVXを用いた倍々精度疎行列ベクトル積の高速化,第3回多倍長フォーラム
さらなる性能向上のために
![Page 4: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/4.jpg)
Kogakuin University
0
5
10
15
20
25
30
35
40
45
50
0.125 0.25 0.5 1 2 4
Pe
rfo
rma
nc
e [
GF
LO
PS
]
size of matrix N (x105)
AVX
Scalar
AVX化の効果(帯行列,帯幅32)
4
x2.6 x2.8 L3 cache size
0.19
252%
238%
79% 75%
メモリ律速にならない
(メモリバンド幅:25.6GB/s)
![Page 5: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/5.jpg)
Kogakuin University
目的
1. AVX2を用いたDD-SpMVの高速化
4つの倍精度演算にFMA命令を同時実行できる
FMA命令を用いればDD乗算のアルゴリズムの命令数を削減可能
2. BCRS形式 DD-SpMVの評価
AVX2向けの最適なブロックサイズの評価
端数処理などの削減効果
演算量増加による効果
5
![Page 6: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/6.jpg)
Kogakuin University
目次
1. 研究背景・目的
2. 倍々精度演算
3. AVX2の効果
4. BCRSの効果
5. まとめ
6
![Page 7: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/7.jpg)
Kogakuin University
1. DD += D × DD (DD_ADD_MULT)
2. DD = DD + DD (DD_ADD)
• DD演算は倍精度演算の組み合わせから成る
• FMA命令は,DD乗算アルゴリズムの計算量を削減可能
FMA命令は積の結果を誤差なく加算に利用可能
DD-SpMVに必要な演算カーネル
7
add命令 mult命令 fma命令 合計
FMAなし 25 8 0 33 命令
FMAあり 14 1 2 17 命令
DD_ADD_MULTの命令数
add命令 mult命令 fma命令 合計
FMAあり,なし 11 0 0 11 命令
DD_ADDの命令数
![Page 8: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/8.jpg)
Kogakuin University
目次
1. 研究背景・目的
2. 倍々精度演算
3. AVX2の効果
4. BCRSの効果
5. まとめ
8
![Page 9: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/9.jpg)
Kogakuin University
DD-SpMVに用いるAVX2のロード・ストア命令
• set命令 : av = _mm256_set_pd(a, b, c, d)
結果 : レジスタ av = {a, b, c, d} 非連続データのロード
• load命令 : av = _mm256_set_pd(x)
結果 : レジスタ av = {x[1], x[2], x[3], x[4]} 連続データのロード
• broadcast命令 : _mm256_broadcast_pd(a)
結果 : レジスタ av = {a, a, a, a} 1データをブロードキャスト
• store命令 : 構文 : _mm256_store_pd(a, av)
結果 : avのデータをアドレスaから連続にストア
9
avはAVXレジスタ
a,b,c,dは倍精度の変数
xは倍精度の配列
![Page 10: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/10.jpg)
Kogakuin University
10
CRS形式の生成 (1-4行目)
・・・・・・・
・・・・・・・
・・・・・・・ double
int
int
double
double
double
double
![Page 11: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/11.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8
0 0 0 0 0 0 0 0
0 0 0 0
y.hi_v
av
x.hi_v
11
0 0 0 0
y.lo_v
x.lo_v
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
yの初期化 (i=1)
・・・・
・・・・
・・・・
x.hi
x.lo
y.hi
y.lo
value
index
ptr
![Page 12: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/12.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0
1 4 3 6
y.hi_v
av
x.hi_v
12
0 0 0 0
y.lo_v
x.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
Aのロード(j=1-4)
load
value
index
ptr ・・・・
・・・・
・・・・
![Page 13: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/13.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0
1 4 3 6
1 3 4 6
y.hi_v
av
x.hi_v
13
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
xのロード(j=1-4)
set
value
index
ptr ・・・・
・・・・
・・・・
![Page 14: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/14.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
1 12 12 36
1 4 3 6
1 3 4 6
y.hi_v
av
x.hi_v
14
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
倍々精度積和演算
+=
× DD_ADD_MULT
value
index
ptr ・・・・
・・・・
・・・・
![Page 15: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/15.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
1 12 12 36
5 2 3 5
1 3 4 6
y.hi_v
av
x.hi_v
15
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
Aのロード(j=5,端数処理)
load
value
index
ptr ・・・・
・・・・
・・・・
![Page 16: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/16.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0 5 2 3 5
8 0 0 0
av
x.hi_v
16
0 0 0 0
x.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
xのロード(j=5,端数処理)
set
(8,0,0,0)
1 12 12 36
y.hi_v
0 0 0 0
y.lo_v
value
index
ptr ・・・・
・・・・
・・・・
![Page 17: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/17.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
41 12 12 36
y.hi_v
av
17
0 0 0 0
y.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
倍々精度積和演算(端数処理)
+=
×
5 2 3 5
8 0 0 0
av
x.hi_v
0 0 0 0
x.lo_v
DD_ADD_MULT
value
index
ptr ・・・・
・・・・
・・・・
![Page 18: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/18.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6
1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
41 12 12 36
y.hi_v
av
18
0 0 0 0
y.lo_v
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
yへの足し込み(リダクション) (i=1)
5 2 3 5
8 0 0 0
av
x.hi_v
0 0 0 0
x.lo_v
53
0 DD_ADD
value
index
ptr ・・・・
・・・・
・・・・
48
0 DD_ADD
![Page 19: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/19.jpg)
Kogakuin University
1 4 3 6 5 2 3 5 1 4 3 6 value
index
ptr 1 6 7 11 13
1 3 4 6 8 2 1 3 5 6 1 4
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
41 12 12 36
y.hi_v
av
19
0 0 0 0
y.lo_v
101 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
yへの足し込み(リダクション) (i=1)
5 2 3 5
6 0 0 0
av
x.hi_v
0 0 0 0
x.lo_v
・・・・
・・・・
・・・・
53
0
48
0
DD_ADD
![Page 20: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/20.jpg)
Kogakuin University
AVXを用いたCRS形式のDD-SpMV (j loop)
for(j=A->ptr[i] ; j<A->ptr[i+1] - (4-1) ; j+=4){
av = _mm256_load_pd(&A->value[j]);
xv = _mm256_set_pd(x[A->index[j]],
x[A->index[j+1]], x[A->index[j+2]], x[A->index[j+3]]);
DD_ADD_MULT (av, xv, yv);
}
20
• set命令(ランダムアクセス)が必要
![Page 21: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/21.jpg)
Kogakuin University
AVXを用いたCRS形式のDD-SpMV (端数処理)
21
if (A->ptr[i+1] - j == 3){ // 端数3のとき
av = _mm256_load_pd(&A->value[j]);
xv = _mm256_set_pd(x[A->index[j]], 0, 0, 0);
DD_ADD_MULT (av, xv, yv);
}
• 各行で最大1回発生
• set命令(ランダムアクセス)が必要
• 同様に端数2, 1についても行う
![Page 22: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/22.jpg)
Kogakuin University
AVXを用いたCRS形式のDD-SpMV (リダクション)
double tmp[4] = {0,0,0,0};
double tmp1= 0, tmp2=0;
_mm256_store_pd(tmp, yv);
tmp1 = DD_ADD(tmp[1], tmp[2]);
tmp2 = DD_ADD(tmp[3], tmp[4]);
y[i] = DD_ADD(tmp1, tmp2);
22
• 各行で必ず1回発生
• DD_ADD3回(11命令×3)から成る
![Page 23: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/23.jpg)
Kogakuin University
実験環境
• CPU : intel Core i7 4770K 4core 3.4GHz (AVX2)
L3 キャッシュ : 8MB
• メモリ : 16GB (8GB×2 デュアルチャネル)
メモリバンド幅 : 12.8 [GB/s]×2 = 25.6 GB/s
• OS : CentOS 6.4
• コンパイラ : intel C/C++ Compiler 13.0.1
Scalar : –O3 –no-vec –openmp –fp-model precise (FMAなし)
FMAなし : –O3 –xAVX –openmp –fp-model precise
FMAあり : –O3 –xCORE-AVX2 –openmp –fp-model precise
• OpenMP スケジューリング方式 : guided (4threads)
23
![Page 24: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/24.jpg)
Kogakuin University
実験に用いる疎行列
• The Univ of Florida Sparse Matrix Collectionから
行列サイズ1000以上
非対称
を満たす100種の疎行列を選んだ
24
![Page 25: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/25.jpg)
Kogakuin University
AVX2の効果 (AVX2とScalarの時間の比)
25
![Page 26: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/26.jpg)
Kogakuin University
AVX2の効果 サイズの影響
26
104 105 106 107 108
![Page 27: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/27.jpg)
Kogakuin University
AVXとAVX2の比較
27
![Page 28: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/28.jpg)
Kogakuin University
AVX2の効果
• AVX2はScalarと比べ
計測時間の比は0.1-2.1倍
81/100問題がScalarより高速
• 大きい問題においてAVX2はScalarより高速
• nnz/rowが小さいときAVX2化の効果が小さい
各行でリダクション,端数処理を必要とするため
• AVX2はAVXと比べ,
実行時間の比は0.2-2.1倍,55/100問題で効果がある
28
![Page 29: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/29.jpg)
Kogakuin University
AVX,AVX2,Scalarの組み合わせ
最も性能が高い問題数 100問の合計時間 [秒]
Scalarのみ 14 2.57 (3.9)
AVXのみ 38 1.07 (1.6)
AVX2のみ 49 0.73 (1.1)
最適な組み合わせ 100 0.66 (1)
29
• AVX2が最も早いのは49/100問題
• AVX2は,最適な組み合わせと比べ1.1倍
AVX2は大きい問題において有効
使い分けの必要性は低い
• AVX2によるDD-SpMVは有効
()内は比率
![Page 30: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/30.jpg)
Kogakuin University
目次
1. 研究背景・目的
2. 倍々精度演算
3. AVX2の効果
4. BCRSの効果
5. まとめ
30
![Page 31: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/31.jpg)
Kogakuin University
BCRS形式DD-SpMV
• Block Compressed Row Storage形式
疎行列を長さr×cの小行列にブロック化
−小行列は0を含む密行列
• メリット
r, cをAVXのベクトル長に合わせれば端数処理がなくせる
ベクトルxに対するset命令をなくせる
• デメリット
演算数が増加
31
![Page 32: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/32.jpg)
Kogakuin University
BCRS1x4形式の生成(1-4行目のみ)
・・・・・・・
・・・・・・・
・・・・・・・
32
double
int
int
double
double
double
double
![Page 33: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/33.jpg)
Kogakuin University
1 2 1 1 2 1
value
index
ptr 1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
0 0 0 0
y.hi_v
av
x.hi_v
33
0 0 0 0
y.lo_v
x.lo_v
yの初期化(i=1)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
・・・・
・・・・
・・・・
![Page 34: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/34.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
0 0 0 0
1 0 4 3
y.hi_v
av
x.hi_v
34
0 0 0 0
y.lo_v
x.lo_v
Aのロード(ブロック列=1)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
load
value
index
ptr ・・・・
・・・・
・・・・
![Page 35: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/35.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
0 0 0 0
1 0 4 3
1 2 3 4
y.hi_v
av
x.hi_v
35
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
xのロード(ブロック列=1)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
load
value
index
ptr ・・・・
・・・・
・・・・
![Page 36: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/36.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
1 0 12 12
1 0 4 3
1 2 3 4
y.hi_v
av
x.hi_v
36
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
倍々精度積和演算(ブロック列=1)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
+=
× DD_ADD_MULT
value
index
ptr ・・・・
・・・・
・・・・
![Page 37: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/37.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
1 0 12 12
0 6 0 5
y.hi_v
av
x.hi_v
37
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
Aのロード(ブロック列=2)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
load
1 2 3 4
value
index
ptr ・・・・
・・・・
・・・・
![Page 38: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/38.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
1 0 12 12
0 6 0 5
5 6 7 8
y.hi_v
av
x.hi_v
38
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
xのロード(ブロック列=2)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
load
value
index
ptr ・・・・
・・・・
・・・・
![Page 39: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/39.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
1 36 12 52
0 6 0 5
5 6 7 8
y.hi_v
av
x.hi_v
39
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
倍々精度積和演算(ブロック列=2)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6
+=
× DD_ADD_MULT
value
index
ptr ・・・・
・・・・
・・・・
![Page 40: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/40.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
1 36 12 52
0 6 0 5
5 6 7 8
y.hi_v
av
x.hi_v
40
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
yのリダクション(i=1)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6 value
index
ptr ・・・・
・・・・
・・・・
37
0
64
0
DD_ADD
DD_ADD
![Page 41: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/41.jpg)
Kogakuin University
1 2 1 1 2 1
1 3 4 6 7
1 2 3 4 5 6 7 8 x.hi
x.lo 0 0 0 0 0 0 0 0
101 0 0 0 0 0 0 0 y.hi
y.lo 0 0 0 0 0 0 0 0
1 36 12 52
0 6 0 5
5 6 7 8
y.hi_v
x.hi_v
41
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
yのリダクション(i=1)
1 0 4 3 0 6 0 5 0 2 0 0 3 0 5 0 1 4 0 0 3 0 0 6 value
index
ptr ・・・・
・・・・
・・・・
37
0
64
0 DD_ADD
![Page 42: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/42.jpg)
Kogakuin University
AVXを用いたBCRS1x4 DD-SpMV
for(i=0;i<N;i++){
yv = _mm256_zero_sd(&y[i]);
for(j=A->ptr[i] ; j<A->ptr[i+1] – (4-1) ; j+=4){
av = _mm256_load_pd(&A->value[j*4]);
xv = _mm256_load_pd(&x[A->index[j]]);
DD_ADD_MULT (av, xv, yv);
}
reduction();
}
• set命令(ランダムアクセスが発生)なし
• 端数処理なし
42
![Page 43: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/43.jpg)
Kogakuin University
BCRS4x1形式の生成(1-4行目のみ)
・・・・
・・・・・
・・・・
43
double
int
int
double
double
double
double
![Page 44: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/44.jpg)
Kogakuin University
0 0 0 0
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
x.lo_v
yの初期化 (ブロック行=1)
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
44
・・・・
・・・・
・・・・
![Page 45: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/45.jpg)
Kogakuin University
0 0 0 0
1 0 3 3
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
x.lo_v
Aのロード(j=1)
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
45
load
・・・・
・・・・
![Page 46: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/46.jpg)
Kogakuin University
0 0 0 0
1 0 3 3
1 1 1 1
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
xのロード(j=1)
46
broadcast
・・・・
・・・・
![Page 47: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/47.jpg)
Kogakuin University
1 0 3 3
1 0 3 3
1 1 1 1
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
倍々精度積和演算(j=1)
47
+=
×
DD_ADD_MULT
・・・・
・・・・
![Page 48: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/48.jpg)
Kogakuin University
1 4 3 3
0 2 0 0
2 2 2 2
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
A,xのロード,倍々精度積和演算 (j=2)
48
+=
×
・・・・
・・・・
DD_ADD_MULT
![Page 49: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/49.jpg)
Kogakuin University
1 2 3 4 5 6 8
13 4 18 3
4 0 5 0
3 3 3 3
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
49
×
A,xのロード,倍々精度積和演算 (j=3)
・・・・
・・・・
DD_ADD_MULT
+=
![Page 50: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/50.jpg)
Kogakuin University
25 4 18 27
3 0 0 6
4 4 4 4
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
50
×
A,xのロード,倍々精度積和演算 (j=4)
・・・・
・・・・
DD_ADD_MULT
+=
![Page 51: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/51.jpg)
Kogakuin University
25 4 23 27
0 0 1 0
5 5 5 5
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
51
×
A,xのロード,倍々精度積和演算 (j=5)
・・・・
・・・・
DD_ADD_MULT
+=
![Page 52: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/52.jpg)
Kogakuin University
61 4 47 27
6 0 4 0
6 6 6 6
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
52
×
A,xのロード,倍々精度積和演算 (j=6)
・・・・
・・・・
DD_ADD_MULT
+=
![Page 53: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/53.jpg)
Kogakuin University
101 4 47 27
5 0 0 0
8 8 8 8
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
53
×
A,xのロード,倍々精度積和演算 (j=7)
・・・・
・・・・
DD_ADD_MULT
+=
![Page 54: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/54.jpg)
Kogakuin University
101 4 47 27
5 0 0 0
8 8 8 8
y.hi_v
av
x.hi_v
0 0 0 0
y.lo_v
0 0 0 0
x.lo_v
1 2 3 4 5 6 8
value
index
ptr
1 8 14
1 0 3 3 0 2 0 0 4 0 5 0 3 0 0 6 0 0 1 0 6 0 4 0 5 0 0 0
1 2 3 4 5 6 7 8
x.hi
x.lo
0 0 0 0 0 0 0 0
101 4 47 27 0 0 0 0
y.hi
y.lo
0 0 0 0 0 0 0 0
yのストア(ブロック行=1)
54
store
・・・・
・・・・
![Page 55: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/55.jpg)
Kogakuin University
AVXを用いたBCRS4x1 DD-SpMV
55
for(i=0 ; i<N ; i+=4){
yv = _mm256_zero_pd(&y[i*4]);
for(j=A->ptr[i] ; j<A->ptr[i+1] ; j++){
av = _mm256_load_pd(&A->value[j*4]);
xv = _mm256_broadcast_sd(&x[A->index[j]*4]);
DD_ADD_MULT(av, xv, yv);
}
_mm256_store_pd(&y[i*4], yv);
}
• set命令(ランダムアクセスが発生)なし
• 端数処理なし
• reductionなし
![Page 56: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/56.jpg)
Kogakuin University
考えられる実装
• 1x4, 2x2, 4x1は端数処理が不要 (4の倍数)
• 2x2は最も性能が悪いと予測 (実装しない)
set命令,リダクションが必要,yのストアにset命令が必要
• AVXにおいて4x1が最適であると予測
リダクションが不要, yのストアが4行おきにしか発生しない
• 4x1のアンローリング:(4x1)x4の実装も行った
xのロード リダクション 端数処理 yのストア 演算量の増加
CRS set あり あり 各行 x1
1x4 load あり なし 各行 最大4倍
2x2 set あり なし 2行おき(set命令 最大4倍
4x1 broadcast なし なし 4行おき 最大4倍
56
☓ ◎
![Page 57: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/57.jpg)
Kogakuin University
BCRS4x1の性能
57
最大 2.33
最小 0.27
平均 0.67
1以下 83/100
演算量の増加 最大3.9倍
![Page 58: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/58.jpg)
Kogakuin University
BCRS1x4の性能
最大 2.38
最小 0.43
平均 0.88
1以下 80/100
演算量の増加 最大3.9倍
58
![Page 59: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/59.jpg)
Kogakuin University
BCRS4x1と1x4の比較
59
104 105 106 107 108
![Page 60: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/60.jpg)
Kogakuin University
増加した演算量 (BCRS4x1, 1x4)
60
104 105 106 107 108
![Page 61: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/61.jpg)
Kogakuin University
BCRS(4x1)x4の性能
61
最大 2.33
最小 0.28
平均 0.68
1以下 83/100
演算量の増加 最大3.9倍
![Page 62: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/62.jpg)
Kogakuin University
BCRSの効果
• 4x1は効果的,最適な組み合わせとの比は1.01
• 1x4の効果は小さい
• アンロールの効果はない
(4x1)x4は4x1との差が小さく,最適な組み合わせとの比は1.03
• 問題ごとの4x1と1x4の増加した演算量の差は小さい
62
最も性能が高い問題数 100問の合計時間 [秒]
CRS 14 0.73 (1.37)
1x4 2 0.88 (1.33)
4x1 70 0.54 (1.01)
(4x1)x4 14 0.55 (1.03)
最適な組み合わせ 100 0.53 (1)
()内は比率
![Page 63: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/63.jpg)
Kogakuin University
目次
1. 研究背景・目的
2. 倍々精度演算
3. AVX2の効果
4. BCRSの効果
5. まとめ
63
![Page 64: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/64.jpg)
Kogakuin University
まとめ
• AVX2を用いてDD-SpMVを高速化した
Scalar, AVX, AVX2の最適な組み合わせと比べ1.1倍
AVX2は大きい問題の方が効果が高い
AVXと比べて小さい問題では遅いケースがあった
• BCRS形式を用いてDD-SpMVの高速化した
4x1が最も効果的.各形式の最適な組み合わせとの比は1.01
問題ごとの4x1と1x4の増加した演算量の差は小さい
1x4やアンロールの効果はない
64
![Page 65: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/65.jpg)
Kogakuin University
今後の課題
• 小さい問題でのAVX2の性能向上
• 様々なアンロールサイズの検討
8x1, (4x1)xN
• さらなる高データ並列環境,Xeon Phiへの適用
Xeon Phiはベクトル長が8
→ 8x1が最良と予想できるが,演算量も最大8倍
レジスタを32本もつため,アンロールの効果が異なると予想
65
![Page 66: 倍精度BCRS形式疎行列と 倍々精度ベクトル積の による高速 …hasegawa.hidehiko.ga/GYOSEKI/...Kogakuin University 背景 •倍々精度(DD)演算をAVXを用いて高速化している†](https://reader033.vdocuments.site/reader033/viewer/2022060100/60b05c7ab800ee56bd6b7053/html5/thumbnails/66.jpg)
Kogakuin University
参考文献
• Hasegawa, H.: Utilizing the Quadruple-Precision oating-Point
Arithmetic Operation for the Krylov Subspace Methods, The 8th
SIAM Conference on Applied Linear Algebra (2003).
菱沼 利彰,藤井 昭宏,田中 輝雄,長谷川 秀彦.AVXを用いた倍々精度疎行列ベクトル積の高速化,第3回多倍長精度計算フォーラム
• Hitoshi Kotakemori, et.al. Prefomance Evaluation of Parallel Sprase
Matrix-Vector Products on SGIAltix3700, Lecture Notes in Computer
Science 4315, pp. 153-163, Springer, 2008 at IWOMP 2005.
• E. Im, K. Yelick, and R. Vuduc.: SPARSITY: Optimization
Framework for Sparse Matrix Kernels, International Journal of High
Performance Computing Applications February 2004 18, pp. 135-
158 (2004)
66