Skip to content

Commit 1031989

Browse files
committed
Add the overview of RDNA4 archtecture.
1 parent aca0917 commit 1031989

File tree

4 files changed

+54
-11
lines changed

4 files changed

+54
-11
lines changed
-334 KB
Binary file not shown.
179 KB
Loading
Lines changed: 35 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,43 @@
11
# AMD RDNA4のハードウェアの概要
22

3-
この記事は[AMD "RDNA4" Instruction Set Architecture Reference Guide](https://www.amd.com/content/dam/amd/en/documents/radeon-tech-docs/instruction-set-architectures/rdna4-instruction-set-architecture.pdf)の1章1.2節「ハードウェアの概要」の自分用のメモ書きです
3+
この記事は[AMD "RDNA4" Instruction Set Architecture Reference Guide](https://www.amd.com/content/dam/amd/en/documents/radeon-tech-docs/instruction-set-architectures/rdna4-instruction-set-architecture.pdf)の1章1.2節「ハードウェアの概要」に基づいて自分が理解できるように書き直した
44

5-
## 用語
6-
| 用語 | 説明 |
7-
|--|--|
8-
| Work-group Processor(WGP) | スカラーまたはベクターALU、メモリ、LDS、スカラーキャッシュを含む、シェーダー計算ハードウェアの最小単位。ある文脈では、"Double Compute Unit"や"Compute Unit Pair"と呼ばれる |
9-
10-
##
5+
GPGPUに必要な事柄に絞って解説する。
6+
RDNA4ではプロセッサーはWork-Group Processor(WGP)と呼ばれる、メモリや演算装置を含んだハードウェアからなる。
7+
各WGPは互いに独立に動作する。
8+
WGPの内部について詳しく見ていく。
119

1210
<figure markdown="span">
13-
![AMD RDNA4のブロック図](img/overview_of_RDNA4_hardware/overview.png){ width="auto" }
14-
<figcaption>AMD RDNA4のブロック図</figcaption>
11+
![共有メモリ階層](img/overview_of_RDNA4_hardware/shared_memory_hierarchy.png){ width="auto" }
12+
<figcaption>共有メモリ階層</figcaption>
1513
</figure>
1614

17-
## Work-Group Processor
15+
## タスクの単位
16+
AMDとNVIDIAでは、用語が異なるため整理する。
17+
AMDでは仕事の最小分割単位をwork-itemと呼び、CUDAでのthreadに相当する。
18+
また、単一のRDNA4プロセッサー上で並列に実行できる32個または64個のwork-itemの集まりをWaveと呼ぶ。
19+
20+
## Compute Unit(CU)
21+
WGPの内部には2つのCompute Unit(CU)があり、1つのCUには2つのSIMDがある。
22+
SIMDには以下のハードウェアがある:
23+
- 1 x Scalar ALU (SALU): wave毎に1つの値を操作し、すべての制御フロー(if/else、ループ)を管理する。
24+
- 32 x Vector ALU (VALU): 各work-item上で同じ算術操作を行う
25+
26+
さらに、これらのALUにはデータとアドレスを保存できるGeneral Purpose Register(GPR)があり、機能が異なる。
27+
- SALU: 各wave内のwork-itemに共有される、32ビットのレジスター(Scalar GPR, SGPR)が128バイト x 32個ある。
28+
- VALU: wave内の各work-itemが持つ32ビットのレジスター(Vector GPR, VGPR)が1536バイト x 32個ある。
29+
30+
また、条件分岐をサポートするために、各waveは各work-itemがアクティブか眠っているかを示すEXECuteマスクを持っている。
31+
アクティブなwork-itemはベクター命令をを実行し、眠っているものはNOPとして命令を実行する。
32+
EXECマスクはSALUまたはVALUの比較によって、いつでも書き換えられる。
33+
34+
## Local Data Share(LDS)
35+
2つのCU間でデータを共有できるメモリがあり、これをLocal Data Share(LDS)という。
36+
LDSはWGP毎に1つあり、大きさが128kBで低レイテンシーでアクセスできる。
37+
LDSは4バイトの512エントリーを持つ、64個のバンクに分割されていて、順不同なアトミック命令を速くするために64個の整数アトミックユニットを含んでいる。
38+
39+
## Work-group
40+
キャッシュまたはLDSを通してデータを共有したり、バリアで同期できるwaveの集まりをWork-groupと呼ぶ。
41+
work-group内のwaveはすべて同じWGP上で動く。
1842

43+
work-groupは1つあたり最大64kBのLDSのメモリを確保できる。

mkdocs.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ nav:
1616
- 'Eigenで行優先の行列を行優先のベクトルに変換する時、ベクトルのイテレータを`std::contiguous_iterator`にする方法': ./articles/make-reshaped-matrix-iterator-contiguous.md
1717
- 'oneTBBの使い方': ./articles/how_to_use_onetbb.md
1818
- 'Ubuntu 25.04上のRadeonでRusticlを使う方法': ./articles/how_to_use_rusticl_with_radeon_on_ubuntu.md
19-
# - 'AMD RDNA4のハードウェアの概要': ./articles/overview_of_RDNA4_hardware.md
19+
- 'AMD RDNA4のハードウェアの概要': ./articles/overview_of_RDNA4_hardware.md
2020
- 'CUDAプログラミングガイド 日本語解説': /cuda_programming_guide_jp/
2121
not_in_nav: |
2222
thrust.md
@@ -32,6 +32,24 @@ theme:
3232
- toc.integrate
3333
- navigation.top
3434
- navigation.indexes
35+
palette:
36+
# Palette toggle for automatic mode
37+
- media: "(prefers-color-scheme)"
38+
toggle:
39+
icon: material/brightness-auto
40+
name: Switch to light mode
41+
# Palette toggle for light mode
42+
- media: "(prefers-color-scheme: light)"
43+
scheme: default
44+
toggle:
45+
icon: material/brightness-7
46+
name: Switch to dark mode
47+
# Palette toggle for dark mode
48+
- media: "(prefers-color-scheme: dark)"
49+
scheme: slate
50+
toggle:
51+
icon: material/brightness-4
52+
name: Switch to system preference
3553
markdown_extensions:
3654
- admonition
3755
- attr_list

0 commit comments

Comments
 (0)