• No results found

研究概要

N/A
N/A
Protected

Academic year: 2021

Share "研究概要"

Copied!
4
0
0

Bezig met laden.... (Bekijk nu de volledige tekst)

Hele tekst

(1)

1 GPUのPTXコードを用いた

ランダムアドレスシフトの厳密評価

広島大学 藤田 徹

研究概要

GPUのアセンブリ言語であるPTXコードを用いて,メモリアクセスの高速 化手法であるランダムアドレスシフトの厳密な性能評価を実施

命令をPTXコードで記述することによって,ランダムアドレスシフトの実行ク ロックサイクル数を計測

GPU(Graphics Processing Unit)

グラフィックス処理に適したハードウェア

内部に多数のコアを搭載し,並列演算能力に優れる

NVIDIA社が提供するGPUの統合開発環境CUDAを利用

NVIDIA社のGPUには複数のストリーミングマルチプロセッサ(SM)が 搭載されている

• 複数のコアとシェアードメモリから構成

• シェアードメモリは同じSM内のコアのみアクセス可能 GPU

SM

グローバルメモリ

シェアードメモリ

コア コア

SM シェアードメモリ

SM シェアードメモリ

・・・・

コア コア

コア コア

コア コア

コア コア

コア コア

GPUアーキテクチャ

各コアにはスレッドが割り当てられる

 処理はスレッドを32個毎にまとめたワープ単位で実行される

今回は1つのSMのみに注目して計測を行う

シェアードメモリとバンクコンフリクト

(例)バンク数4の場合

バンクコンフリクト シェアードメモリは1ワードずつ32個のバンクによって構成されている 複数のスレッドが同じバンクの異なるアドレスに同時にアクセス

アクセスが逐次化され,スループットが低下

バンク0 バンク1 バンク2 バンク3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

スレッド0 スレッド1 スレッド2 スレッド3

衝突は発生しない

同時にアクセス

シェアードメモリとバンクコンフリクト

(例)バンク数4の場合

シェアードメモリは1ワードずつ32個のバンクから構成されている 複数のスレッドが同じバンクの異なるアドレスに同時にアクセス

アクセスが逐次化され,スループットが低下

バンク0 バンク1 バンク2 バンク3

0] 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

衝突が発生

アクセスが逐次化 バンクコンフリクト

スレッド0 スレッド1 スレッド2 スレッド3

ランダムアドレスシフト

シェアードメモリに格納する要素をシフト数にしたがって行方向にサイ クリックシフト

論文名:The Random Address Shift to Reduce the Memory Access Congestion on the Discrete Memory Machine 著者:Koji Nakano, Susumu Matsumae, and Yasuaki Ito

出典:International Symposium on Computing and Networking, pp. 95–103, Dec. 2013

3 1 3 2 バンク0 バンク1 バンク2 バンク3 シフト数

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

バンク0 バンク1 バンク2 バンク3

1 2 3 0

7 4 5 6

9 10 11 8

14 15 12 13

アクセスの衝突回数:4 アクセスの衝突回数:2

アドレスシフトを行うことによってバンクコンフリクトが低減

スレッド0 スレッド1 スレッド2 スレッド3 スレッド0 スレッド1 スレッド2 スレッド3

(2)

2 シフト数の決定方法

Random Address Shift

各行のシフト数は独立した乱数に

よって決定される

Random Address Permute-Shift

ランダムに置換した数列に従って

シフトする

各行のシフト数はすべて異なる

3 1 3 2

バンク0 バンク1 バンク2 バンク3

1 2 3 0

7 4 5 6

9 10 11 8

14 15 12 13

シフト数

2 1 3 0

バンク0 バンク1 バンク2 バンク3

2 3 0 1

7 4 5 6

9 10 11 8

12 13 14 15

シフト数

アクセス時間の計測

GPU:GeForce GTX 680

1SM当たりのコア数:192

動作クロック: 1006MHz

次の4つのアクセスパターンについてワープ数を1から32まで変化させて 1000回計測を行い,平均時間を算出

Contiguous

Stride

Diagonal

Random

アクセスに必要な実行クロックサイクル数を計測することで 厳密な性能評価を実施

asm volatile (

"mov.u32%%a0, %3;¥n¥t"

"mov.u32 %%a1, sh_mem;¥n¥t"

"bar.sync0;¥n¥t"

"mov.u32%0, %%clock;¥n¥t"

"shl.b32%%a2, %%a0, 3;¥n¥t"

"add.u32%%a2, %%a1, %%a2;¥n¥t"

"ld.volatile.shared.u64%2, [%%a2];¥n¥t"

"mov.u32%1, %%clock;¥n¥t"

:"=r"(begin), "=r"(end), "=l"(temp) :"r"(AID[threadIdx.x]) );

PTXコードを用いたクロックサイクル 数の計測方法

GPUのアセンブリ言語

インラインアセンブラを用いてソースコード内に記述できる

測定したい命令をクロックカウンタの取得命令で挟み,その差分を 求めることで命令の実行クロックサイクル数が計測できる

クロックレジスタの値を取得

 クロックカウンタの値が 格納されている この範囲のクロック

サイクル数を計測

z

計測範囲

アドレスシフトなし

シェアードメモリアクセス アクセスアドレスに対応したシフト数の取得

開始クロック取得

終了クロック取得

開始クロック取得

終了クロック取得 アドレスシフトあり

𝑥 ← 𝑀[𝑎]

𝑥 ← 𝑀[𝑠𝑎]

𝑠𝑎 ← 𝑠ℎ𝑖𝑓𝑡(𝑎)

計測するアクセスパターン

1.

Contiguous Access

各スレッドは行方向にアクセス

バンク0 バンク1 バンク2 バンク3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

• Random Shift

• Permute Shift 3 1 3 2

バンク0 バンク1 バンク2 バンク3

1 2 3 0

7 4 5 6

9 10 11 8

14 15 12 13

2 1 3 0

バンク0 バンク1 バンク2 バンク3

2 3 0 1

7 4 5 6

9 10 11 8

12 13 14 15

アクセスは衝突しない

アクセスは衝突しない アクセスは衝突しない

計測するアクセスパターン

2.

Stride Access

各スレッドは列方向にアクセス

バンク0 バンク1 バンク2 バンク3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

• Random Shift

• Permute Shift 3 1 3 2

バンク0 バンク1 バンク2 バンク3

1 2 3 0

7 4 5 6

9 10 11 8

14 15 12 13

2 1 3 0

バンク0 バンク1 バンク2 バンク3

2 3 0 1

7 4 5 6

9 10 11 8

12 13 14 15

一部のスレッドでアクセスが衝突

アクセスは衝突しない 全てのスレッドでアクセスが衝突

(3)

3 計測するアクセスパターン

3.

Diagonal Access

各スレッドは斜め方向にアクセス

バンク0 バンク1 バンク2 バンク3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

• Random Shift

• Permute Shift 3 1 3 2

バンク0 バンク1 バンク2 バンク3

1 2 3 0

7 4 5 6

9 10 11 8

14 15 12 13

2 1 3 0

バンク0 バンク1 バンク2 バンク3

2 3 0 1

7 4 5 6

9 10 11 8

12 13 14 15

一部のスレッドでアクセスが衝突

アクセスは衝突しない

一部のスレッドでアクセスが衝突

計測するアクセスパターン

4.

Random Access

各スレッドはランダムにアクセス

バンク0 バンク1 バンク2 バンク3

0 1 2 3

4 5 6 7

8 9 10 11

12 13 14 15

• Random Shift

• Permute Shift 3 1 3 2

バンク0 バンク1 バンク2 バンク3

1 2 3 0

7 4 5 6

9 10 11 8

14 15 12 13

2 1 3 0

バンク0 バンク1 バンク2 バンク3

2 3 0 1

7 4 5 6

9 10 11 8

12 13 14 15

一部のスレッドでアクセスが衝突

一部のスレッドでアクセスが衝突

一部のスレッドでアクセスが衝突

0 200 400 600 800 1000 1200 1400 1600 1800 2000

1 35 7 911 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Random Read

計測結果(read命令)

0 200 400 600 800 1000 1200 1400 1600 1800 2000

13 57 911 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Contiguous Read

0 200 400 600 800 1000 1200 1400 1600 1800 2000

1 35 7911 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Stride Read

0 200 400 600 800 1000 1200 1400 1600 1800 2000

1 35 7911 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Diagonal Read

アドレスシフトなし Random Shift Permute Shift x2.29

x0.36

x0.18 x0.29

アドレスシフトを行わない場合に 対する高速化率

0 500 1000 1500 2000 2500

1357 9 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Random Write

計測結果(write命令)

アドレスシフトなし Random Shift Permute Shift

0 500 1000 1500 2000 2500

135 79 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Contiguous Write

0 500 1000 1500 2000 2500

1357 9 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Stride Write

0 500 1000 1500 2000 2500

13 579 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Diagonal Write

x0.51

x2.32

x0.25 x0.43

アドレスシフトを行わない場合に 対する高速化率

計測範囲の変更

アドレスシフトありの場合の計測範囲をメモリアクセスのみに変更する

開始クロック取得

終了クロック取得

アドレスシフトあり アドレスシフトあり

開始クロック取得

終了クロック取得

アドレスシフトがハードウェア化された場合を想定

 アドレスシフトの計算時間を無視できる 𝑥 ← 𝑀[𝑠𝑎]

𝑠𝑎 ← 𝑠ℎ𝑖𝑓𝑡(𝑎)

𝑠𝑎 ← 𝑠ℎ𝑖𝑓𝑡(𝑎)

𝑥 ← 𝑀[𝑠𝑎]

計測結果(read命令)

アドレスシフトなし Random Shift Permute Shift

0 10 20 30 40 50 60 70 80 90

13579 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Contiguous Read

0 500 1000 1500 2000

13579 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Stride Read

0 50 100 150 200 250

135 7911 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Diagonal Read

x22.94

x0.36

アドレスシフトを行わない場合に 対する高速化率

x1

0 50 100 150 200 250

13579 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Random Read

x1

(4)

4 計測結果(write命令)

アドレスシフトなし Random Shift Permute Shift

0 20 40 60 80 100

13579 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Contiguous Write

0 500 1000 1500 2000

13579 11 13 15 17 19 21 23 25 27 29 31

ワープ数

Stride Write

0 50 100 150 200 250

13579 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Diagonal Write

x22

x0.37

アドレスシフトを行わない場合に 対する高速化率

x1

0 50 100 150 200 250

135 79 11 13 15 17 19 21 23 25 27 29 31

サイ

ワープ数

Random Write

x1

まとめ

GPUのアセンブリ言語であるPTXコードを用いて,ランダムアドレスシフトの 厳密な性能評価を行った

アドレスシフトを求める時間を含めた場合

strideアクセスで約2.3倍の高速化となり,その他のアクセスパターンで はアドレスシフトを行わない場合が高速となった

アドレスシフトを求める時間を含めない場合

strideアクセスで約23倍の高速化となり,Contiguous,Randomアクセス

ではアドレスシフトを行わない場合と大きな差は見られなかった

Referenties

GERELATEERDE DOCUMENTEN

“ What is the influence of modality on the effect of product placements in terms of explicit and implicit memory measures in televisions shows and what is the effect on implicit

By varying the shape of the field around artificial flowers that had the same charge, they showed that bees preferred visiting flowers with fields in concentric rings like

I don't have time, in the middle of a conversation, for them to search their memory bank for what a protein is made of or for them to go off and look up the answer and come back

In that regard, the enhancement of memory processes during the early stages of responding to a stressor can be viewed as logical and salutary.” However, one of the

As expected, the results from the study in Chapter 3 showed that social stress impaired WM at high loads, and that this impairment was related to cortisol levels.. Retrieval

De resultaten uit Hoofdstuk 3, waarin stress het werkgeheugen juist verslechterde, en hoge cortisol niveaus samenhingen met slechtere prestatie, kunnen daarom

In order to provide a starting point for this discussion, this chapter provides a critical consideration of the motives states may have for prohibiting denial or acknowledgment

摘要 摘要 pkuthss 文档模版最常见问题: \cite、\parencite 和 \supercite 三个命令分别产生未格式化的、带方括号的