Slide 20
Slide 20 text
20 |
[Public]
効率的な畳み込み演算の検討
• 行列積API(INT8)のアセンブリを調査
• どのようにデータ並び替えているか
• xbuffはレーン内にデータを順に並べることができないが
zbuffはできることを利用していた
• 行列乗算の左に入力データ、右に重みデータ
• 入力データはタイル化されていればよい
• 重みデータは事前にタイル化しておく
lanes=16
xstart=0, xoffs=[0,0,0,0,0,0,0,0], xstep=8, xsquare=[0,2,1,3]
zstart=0, zoffs=[0,0,4,4,8,8,12,12], zstep=2
[xbuff]
0 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
0 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
0 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
0 4 8 12 16 20 24 28
1 5 9 13 17 21 25 29
2 6 10 14 18 22 26 30
3 7 11 15 19 23 27 31
[zbuff]
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
8 9 10 11 12 13 14 15
8 9 10 11 12 13 14 15
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
16 17 18 19 20 21 22 23
16 17 18 19 20 21 22 23
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
24 25 26 27 28 29 30 31
24 25 26 27 28 29 30 31
24 25 26 27 28 29 30 31
mmul (4x8x8)のmul/mac configuration
重みデータ
入力データ
重みデータ
入力データ
Lane
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Lane
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15