← トップに戻る ← Back to index

gfx900 は、ROCm そのものについて何を明かしたか

What Did gfx900 Reveal About ROCm Itself?

Vega/gfx900 は単なる旧 GPU の延命事例ではなく、ROCm が layered support・capability-based selection・staged deprecation で動いていることを可視化しやすい観測点だった。

Vega/gfx900 is not just a legacy-GPU survival story. It is a useful observation point that exposes ROCm's layered support model, capability-based selection, and staged deprecation behavior.

GitHub-side verification ROCm-wide reading Updated: 2026-03-15
要点: gfx900 の出来事だけから一般論を言うのではなく、README・release block・TheRock issue・Tensile docs・rocBLAS runtime fallback・retired/deprecated repo の痕跡を合わせて読むと、ROCm は「単一の support policy」でなく「層ごと・component ごと・repo topology ごとにズレを持つ stack」として理解するのが自然になる。 Key point: Rather than generalizing from a single legacy GPU event, reading the README, release blocks, TheRock issues, Tensile docs, rocBLAS fallback logic, and traces left in retired/deprecated repos together suggests that ROCm is best understood as a stack with layer-specific, component-specific, and repository-topology-specific behavior, not a single binary policy.
Note / 注記
This document organizes observations from publicly available sources and local repository clones only. It does not assert the contents of private issues or internal decision-making processes.
本文書は、公開一次資料およびローカル clone から観測可能な設計傾向・保守構造を整理することを目的とする。AMD の意思決定を評価・批判するものではなく、非公開 issue や社内意思決定の内容を断定するものでもない。

検証した仮説

Verified hypotheses

以下は、内部ノートの仮説を GitHub 側の一次資料でどこまで支持できるかを整理した公開版要約です。

This page is a public-facing summary of how far the notebook's broader hypotheses can be supported using GitHub-side primary materials.

仮説1: ROCm は layered / modular stack として自己定義している supported(公開一次資料の範囲で)

Hypothesis 1: ROCm defines itself as a layered / modular stack supported (within the scope of public sources)

仮説2: support は binary ではなく、層ごと・component ごとに分離している strongly supported(公開一次資料の範囲で)

Hypothesis 2: support is not binary; it is split by layer and component strongly supported (within the scope of public sources)

含意: 「非対応」という語は build / runtime / driver / user space / component support を混ぜやすい。公開説明ではどの層の話かを毎回分けたほうがよい。 Implication: The word "unsupported" easily mixes build, runtime, driver, user space, and component support. Public explanations should name the layer explicitly.

新発見: gfx900 はプリコンパイル済み成果物付きで出荷されている shipped_artifact_verified

New finding: gfx900 ships with pre-compiled artifacts and tuning data shipped_artifact_verified

ROCm 7.2 パッケージ(/opt/rocm)に含まれる gfx900 向け成果物を定量確認した(2026-03-15)。

Quantitative verification of gfx900-targeted artifacts in the ROCm 7.2 package (/opt/rocm) was performed (2026-03-15).

指標Metric gfx900 gfx1100 (RDNA3) gfx1030 (RDNA2) gfx942 (MI300X)
MIOpen Perf DB 169,182 lines none 111,296 lines 470,080 lines
rocBLAS files 128 96 88 242
Fact: gfx900 の MIOpen Perf DB 行数は gfx1030 を上回り、gfx1100/gfx1200 には Perf DB 自体が存在しない。rocBLAS プリコンパイル済みカーネル数は gfx1100・gfx1030 双方を上回る。
Interpretation: これは「コードが残っている」レベルではなく、AMD のビルド・チューニング・パッケージングパイプラインに gfx900 が組み込まれていることを示す。ただし、これが意図的なサポート維持なのかビルドターゲットリストの慣性なのかは外部からは断定できない。
Open Question: gfx1100/1200 に Perf DB がない理由(別のチューニング方式か、MIOpen ターゲット外か)は未確認。gfx803(Fiji)にも Perf DB が存在する。
Fact: gfx900 MIOpen Perf DB line count exceeds gfx1030, and gfx1100/gfx1200 ship no Perf DB at all. rocBLAS pre-compiled kernel count exceeds both gfx1100 and gfx1030.
Interpretation: This goes beyond "code still in tree" — it shows gfx900 is integrated into AMD's build-tune-package pipeline. Whether this reflects intentional support or target-list inertia cannot be determined from outside.
Open Question: Why gfx1100/1200 lack Perf DB (different tuning mechanism? not a MIOpen target?) is not yet confirmed. gfx803 (Fiji) also has Perf DB.

rocBLAS Pre-compiled Files by Architecture (ROCm 7.2) rocBLAS プリコンパイル済みファイル数(ROCm 7.2)

Blue marks the gfx900 row, slate marks comparison architectures, and striped rows indicate zero shipped data. 青は gfx900 行、スレートは比較対象、ストライプは出荷データ 0 を示す。

gfx900 focusgfx900 注目行 comparison arch比較対象 zero shipped data出荷データ 0
gfx900 (Vega)
128
gfx906 (Vega20)
156
gfx1030 (RDNA2)
88
gfx1100 (RDNA3)
96
gfx942 (MI300X)
242
Scale: 0–260 files. Values are the shipped rocblas/library pre-compiled file counts observed in the ROCm 7.2 package. スケール: 0–260 ファイル。値は ROCm 7.2 パッケージ中の rocblas/library に観測されたプリコンパイル済みファイル数。

MIOpen Perf DB Lines by Architecture (ROCm 7.2) MIOpen Perf DB 行数(ROCm 7.2)

Same color convention: blue = gfx900 focus, stripe = zero shipped data. 同じ配色: 青 = gfx900 注目行、ストライプ = 出荷データ 0。

gfx900 focusgfx900 注目行 comparison arch比較対象 zero shipped data出荷データ 0
gfx900 (Vega)
169k
gfx906 (MI50)
235k
gfx1030 (RDNA2)
111k
gfx1100 (RDNA3)
0
gfx1200 (RDNA4)
0
gfx942 (MI300X)
470k
Scale: 0–500 thousand lines. Values are the top observed shipped Perf DB line counts per architecture in ROCm 7.2. スケール: 0–500 千行。値は ROCm 7.2 で観測したアーキテクチャごとの出荷 Perf DB 行数。

仮説3: capability-based selection と fallback は ROCm の中心設計である strongly supported(公開一次資料の範囲で)

Hypothesis 3: capability-based selection and fallback are central ROCm design patterns strongly supported (within the scope of public sources)

仮説4: ROCm は入口や build knob を統合する方向へ進んでいる supported(公開一次資料の範囲で)

Hypothesis 4: ROCm is moving toward unified front doors and build knobs supported (within the scope of public sources)

仮説5: legacy support は staged retreat で進む supported(公開一次資料の範囲で)

Hypothesis 5: legacy support retreats in stages rather than vanishing at once supported (within the scope of public sources)

仮説6: public product layer が private backend constraint を吸収することがある partially supported(事例1件のみ確認)

Hypothesis 6: the public product layer may absorb private backend constraints partially supported (one case confirmed)

(この issue は非公開であり、本文は外部から確認できない。公開側から確認できるのは参照関係と gating の痕跡のみ。) (This issue is not publicly accessible; its content cannot be verified from outside. What can be observed from the public side is limited to the reference relationship and gating traces in the codebase.)

仮説7: 「AMD 維持かコミュニティ維持か」の二択は粗すぎる framing supported

Hypothesis 7: “AMD-maintained or community-maintained” is too crude a binary framing supported

少なくとも次は分けて考える必要がある。

At minimum, the following should be separated.

主体問い
投入主体その分岐やコードを最初に入れたのは誰か
維持主体その後も壊れないように残し続けているのは誰か
運用主体見つけて、動かして、回避策を共有しているのは誰か
修正可能主体その層の問題を現実に直せるのは誰か
RoleQuestion
Insertion ownerWho introduced the branch or code?
Maintenance ownerWho keeps it from breaking over time?
Operational ownerWho discovers, runs, and shares workarounds?
Repair-capable ownerWho can realistically fix the issue at that layer?
重要: gfx900 の主要分岐の一部が AMD 社員コミットだったことは、投入主体の証拠である。そこからそのまま ROCm 全体の維持主体まで一般化するのは早い。 Important: The fact that some key gfx900 branches were introduced by AMD employees is evidence about insertion ownership, not automatically about long-term maintenance ownership across ROCm.
2026-03-15 追記 — Provenance Map 完成: 7つの gfx900 生存経路について git blame ベースで 4主体(投入・維持・運用・修正可能)を整理した。主な知見:
  • 新経路(MLIR 除外, rocMLIR gating)→ AMD(M) が投入
  • 旧経路(Winograd, ASM v4r1)→ @gmail.com 等の外部ドメイン contributor が目立つ(ただし AMD との関係を排除できない)
  • 維持: Winograd / MP_bidir は AMD 社員が 2021-2025 に補修。v4r1 / WORKAROUND_1204 は削除コスト由来残存と読める
  • 運用: Community(エンドユーザ)が -S solver 強制選択や HSA_OVERRIDE_GFX_VERSION 等の回避策を共有
  • Tensile fallback: 外部 contributor の補修が merge 後に revert されるケースも観測
2026-03-15 addendum — Provenance Map completed: For 7 gfx900 survival paths, git-blame-based mapping of 4 roles (insertion, maintenance, operation, repair-capability) was compiled. Key findings:
  • New paths (MLIR disable, rocMLIR gating) → inserted by AMD members
  • Legacy paths (Winograd, ASM v4r1) → @gmail.com / non-AMD-domain contributors stand out (though AMD affiliation cannot be ruled out)
  • Maintenance: Winograd / MP_bidir actively patched by AMD(M) staff through 2021-2025. v4r1 / WORKAROUND_1204 persist due to deletion cost
  • Operation: Community (end users) share workarounds such as -S solver forcing and HSA_OVERRIDE_GFX_VERSION
  • Tensile fallback: external contributor patches were merged then reverted in at least one case
flowchart LR A["投入主体 Insertion"] B["維持主体 Maintenance"] C["運用主体 Operation"] D["修正可能主体 Repair-capable"] A --> E["AMD(M): MLIR disable\nrocMLIR gating"] A --> F["ExtC/AMD(C):\nWinograd · ASM v4r1"] A --> F2["AMD(M) pipeline:\nShipped artifacts P8"] B --> G["AMD patches\nWinograd 2021–25"] B --> H["deletion-cost residual\nno active maintainer"] B --> G2["pipeline regenerated\nPerf DB · rocBLAS · FW"] C --> I["Community\n-S forcing · env vars"] D --> J["AMD(M) only\ncompiler / backend"] D --> K["ExtC: Python-level\nTensile logic"] style E fill:#ddeeff,stroke:#3366aa style F fill:#eeffee,stroke:#44aa44 style F2 fill:#e8f5e9,stroke:#1b5e20 style G fill:#ddeeff,stroke:#3366aa style H fill:#f5f5f5,stroke:#999 style G2 fill:#e8f5e9,stroke:#1b5e20 style I fill:#fff8dd,stroke:#aaaa44 style J fill:#ffeedd,stroke:#cc6600 style K fill:#eeffee,stroke:#44aa44

P1–P8 経路別主体一覧(git blame ベース、2026-03-15)

#経路投入主体維持状況修正可能主体
P1MLIR iGEMM 除外 AMD(M) — Zhuoran Yin
2407d2f, 2021-12-22
disable 済み(維持不要) AMD(M)(llvm-project-private#389 解消が前提)
P2ASM v4r1 dynamic (gfx900/gfx906 専用) AMD(C) — carlushuang, PR #166, 2020-06 削除コスト由来残存。近年の積極補修は少ない AMD(M)
P3Winograd (FP32) ExtC — Artem Tamazov
artem.tamazov@gmail.com, 2017-11〜
AMD 社員が 2021–2025 に補修継続
(Larochkin 2021-09, Averin 2025-03-11)
AMD(M)
P4WORKAROUND_ISSUE_1204 (sramecc 誤報) ExtC — Artem Tamazov, PR #1231, 2021-10-21 削除コスト由来残存 AMD(M)(ROCm runtime 修正が根本対応)
P5MP_bidir Winograd workspace 制限 ExtC — Kamil Nasyrov, PR #358, 2020-08-21 Averin が 2025-03-11 に gfx9 命令制限注記を追加 AMD(M)
P6Tensile fallback / arch parsing AMD(C) — Cory Bloor, PR #1595, 2022-09-17 外部補修 PR #1862 が merge 後に AMD 関連 contributor により PR #1879 で revert AMD(M) + ExtC(Python レベル)
P7rocMLIR gating (Miir C API) AMD(M) AMD(M) 積極維持 AMD(M)
P8Shipped artifacts(ROCm 7.2 パッケージ) AMD(M) build pipeline Perf DB 169K行 + rocBLAS 128ファイル + firmware 16 blob。RDNA3/2 を上回る AMD(M)

ラベル: AMD(M) = org member / @amd.com メール, AMD(C) = @amd.com だが contributor ラベルまたは後に AMD メールで活動, ExtC = 非 AMD ドメイン。雇用関係を断定するものではない。

P1–P8 per-path ownership table (git-blame basis, 2026-03-15)

#PathInsertion ownerMaintenance statusRepair-capable
P1MLIR iGEMM disable AMD(M) — Zhuoran Yin
2407d2f, 2021-12-22
Already disabled (no active maintenance needed) AMD(M) (requires resolving llvm-project-private#389)
P2ASM v4r1 dynamic (gfx900/gfx906 only) AMD(C) — carlushuang, PR #166, 2020-06 Survives via deletion cost; few recent AMD patches AMD(M)
P3Winograd (FP32) ExtC — Artem Tamazov
artem.tamazov@gmail.com, from 2017-11
AMD staff patches through 2021–2025
(Larochkin 2021-09, Averin 2025-03-11)
AMD(M)
P4WORKAROUND_ISSUE_1204 (sramecc false-report) ExtC — Artem Tamazov, PR #1231, 2021-10-21 Survives via deletion cost AMD(M) (ROCm runtime fix is the root fix)
P5MP_bidir Winograd workspace limit ExtC — Kamil Nasyrov, PR #358, 2020-08-21 Averin added gfx9 instruction-limit comment 2025-03-11 AMD(M)
P6Tensile fallback / arch parsing AMD(C) — Cory Bloor, PR #1595, 2022-09-17 External fix PR #1862 merged then reverted (PR #1879) by AMD-affiliated contributor AMD(M) + ExtC (Python-level)
P7rocMLIR gating (Miir C API) AMD(M) Actively maintained by AMD(M) AMD(M)
P8Shipped artifacts (ROCm 7.2 package) AMD(M) build pipeline Perf DB 169K lines + rocBLAS 128 files + firmware 16 blobs. Exceeds RDNA 3/2 AMD(M)

Labels: AMD(M) = org member / @amd.com email; AMD(C) = @amd.com but contributor label, or later active with AMD email; ExtC = non-AMD domain. Employment relationships are not asserted.

reveal された設計モデル

The revealed design model

2026-03-15 の補足: public PR / issue 文脈まで含めると、#1231 は community user が踏んだ実害を userspace workaround で吸収した例、#1328 は private root cause を抱えたまま ROCm 5.1 の MLIR release/tuning surface から gfx900 を外した例として読める。 2026-03-15 addendum: Once the public PR/issue context is added back in, #1231 reads as a userspace workaround for a failure hit by community users, while #1328 reads as a ROCm 5.1 MLIR release/tuning-surface removal that still rests on a private root cause.
mindmap root((ROCm Design Model
revealed by gfx900)) Stack Structure Layered open stack Build ≠ runtime ≠ support matrix ≠ driver Targets drift per component Selection & Fallback Capability-based selection Multi-stage runtime fallback Build knobs unifying Legacy Lifecycle Staged retreat, not instant death Deprecated repos keep legacy knowledge Public workaround + private gating coexist Ownership Layers Insertion ≠ maintenance ≠ operation ≠ repair ::icon(fa fa-users) Shipped Artifacts **NEW** Unsupported arch ships more artifacts Build pipeline includes gfx900 ::icon(fa fa-box)
  1. ROCm は layered open stack として自己定義されている。
  2. ROCm defines itself as a layered open stack.
  3. build / runtime / support matrix / driver / user space は同じ意味ではない。
  4. Build, runtime, support matrix, driver, and user space are not the same support notion.
  5. component ごとに supported targets と exclusion policy はずれる。
  6. Supported targets and exclusion policy drift by component.
  7. execution path は capability-based selection と fallback で広く支えられる。
  8. Execution paths are broadly supported through capability-based selection and fallback.
  9. 表の入口や build knob は徐々に統合される。
  10. Public-facing entry points and build knobs are gradually unified.
  11. standalone repo 群も、より大きい umbrella repo や upstream へ再配置されつつある。
  12. Standalone repositories are also being re-homed into larger umbrella repos or back to upstream.
  13. repo が deprecated になっても、legacy knowledge や arch-specific workaround はしばらく tree に残りうる。
  14. Even after a repo becomes deprecated, legacy knowledge and arch-specific workarounds may remain in-tree for some time.
  15. legacy は source から即死するのでなく、段階的に retreat する。
  16. Legacy support retreats in stages rather than dying at once in source.
  17. 同一 component の内部でも、public issue-driven workaround と private-rooted release gating が別の層として共存しうる。
  18. Even within a single component, public issue-driven workarounds and private-rooted release gating can coexist as different layers.
  19. 保守主体は単一ではなく、投入・維持・運用・修正可能性に分解して考える必要がある。
  20. Maintenance ownership is not singular; it should be split into insertion, maintenance, operation, and repair-capability roles.
  21. 「非サポート」とされるアーキテクチャが、プリコンパイル済みカーネルやチューニング済み Perf DB を公式パッケージに含む形で出荷されうる。gfx900 のこれらの指標は gfx1100(RDNA3)や gfx1030(RDNA2)を上回る。
  22. An architecture labeled "unsupported" can nevertheless ship with pre-compiled kernels and tuned Perf DB in the official package. For gfx900 these metrics exceed gfx1100 (RDNA 3) and gfx1030 (RDNA 2).

まだ言い切れないこと

What is still unresolved

暫定結論: gfx900 は特殊な例外というより、ROCm が本来持つ layered support / fallback / staged deprecation / 配布パイプラインの構造を観測しやすい地点だった、と読むのが最も自然である。出荷成果物の調査は、「コードが残存している」だけでなく「ビルド・チューニング・パッケージングのパイプラインに gfx900 が含まれている」ことを示す。 Provisional conclusion: gfx900 is best understood not as a weird exception, but as a convenient observation point for ROCm's underlying layered-support, fallback, staged-deprecation, and distribution-pipeline structure. The shipped-artifacts investigation shows not just that code remains, but that gfx900 is included in AMD's build, tuning, and packaging pipeline.
gfx900 仮説ページへ戻る Back to the gfx900 hypothesis page ROCm 構造ページへ Open the ROCm structure page GitHub 履歴タイムラインへ Open the GitHub history timeline 更新ログを見る View page-update log

本文書が主張しないこと

This document does not claim that...