diff --git a/docs/articles/overview_of_RDNA4_hardware.md b/docs/articles/overview_of_RDNA4_hardware.md index 8d5a791..8d314f2 100644 --- a/docs/articles/overview_of_RDNA4_hardware.md +++ b/docs/articles/overview_of_RDNA4_hardware.md @@ -27,8 +27,8 @@ SIMDには以下のハードウェアがある: さらに、これらのALUにはデータとアドレスを保存できるGeneral Purpose Register(GPR)があり、機能が異なる。 -- SALU: 各wave内のwork-itemに共有される、4バイト単位のレジスター(Scalar GPR, SGPR)が128バイト x 32個ある。 -- VALU: wave内の各work-itemが持つ、4バイト単位のレジスター(Vector GPR, VGPR)が1536バイト x 32個ある。waveが32個なら16ブロック、64個なら8ブロック毎に確保される(つまり512 x 4バイト単位で確保される)。 +- VALU: 1536本のVGPRを持ち、各VGPRはwave内の各lane(work-item)に対応する32bit値を保持する。そのため、Wave32なら1VGPR=128バイト、Wave64なら論理的には256バイト相当になる。 +- SALU: wave全体で共有される32bitスカラレジスタ(SGPR)を使用する。SGPRはVGPRと異なりlaneごとの値を持たず、1 SGPR = 4バイトである。 VGPRはWaveの各work-itemに必要な分だけレジスターを確保する。 また、条件分岐をサポートするために、各waveは各work-itemがアクティブか眠っているかを示すEXECuteマスクを持っている。 diff --git a/zensical.toml b/zensical.toml index e2a7e5c..211d95c 100644 --- a/zensical.toml +++ b/zensical.toml @@ -22,8 +22,6 @@ nav = [ { "Eigenで行優先の行列を行優先のベクトルに変換する時、ベクトルのイテレータを`std::contiguous_iterator`にする方法" = "articles/make-reshaped-matrix-iterator-contiguous.md" }, { "oneTBBの使い方" = "articles/how_to_use_onetbb.md" }, { "Ubuntu 25.04上のRadeonでRusticlを使う方法" = "articles/how_to_use_rusticl_with_radeon_on_ubuntu.md" }, - { "AMD RDNA4のハードウェアの概要" = "articles/overview_of_RDNA4_hardware.md" }, - { "AMD HIP" = "articles/hip/intro/intro.md" }, { "Address sanitizerとEigenを一緒に使うとき" = "articles/eigen_with_asan.md" }, { "Expression templatesのダングリング対策について" = "articles/expression_templates.md" } ] },