Skip to content

[RACE-org #55] T2.1 算子编译诊断 CLI & T2.2 Pass Diff 工具 & T2.5 Adapter 层健壮性 - #30

Open
likehupochuan wants to merge 14 commits into
review/race-pr-55/basefrom
review/race-pr-55/head
Open

[RACE-org #55] T2.1 算子编译诊断 CLI & T2.2 Pass Diff 工具 & T2.5 Adapter 层健壮性#30
likehupochuan wants to merge 14 commits into
review/race-pr-55/basefrom
review/race-pr-55/head

Conversation

@likehupochuan

@likehupochuan likehupochuan commented Aug 10, 2026

Copy link
Copy Markdown
Owner

此 PR 由 fork 自动镜像,用于运行受信任的 AI/Local CI 审核。审核结果仅发布在本镜像 PR。

  • 原 PR:RACE-org/triton-anchor#55
  • 作者:kong-LrYz
  • 目标分支:main
  • 镜像 base SHA:8118ce2da0541a9a13d9aef85237bec98dd44514
  • 原 API base SHA:40654cab2f7c5a47942ae662ee0b5c3f166ae62a
  • 来源:kong-LrYz/triton-anchor:t2.5-adapter-robustness
  • head SHA:dbca9bcf48f24ccf1518351ff5a98441b852601e
  • 镜像更新时间:2026-08-12T04:25:19Z

原 PR 描述

原 PR 未提供描述。

skwmw01 and others added 14 commits July 5, 2026 17:06
Implement PassDiagnostic to run TTIR and triton-linalg pipelines pass by
    pass, saving before/after IR snapshots, failure diagnostics, summary.json,
    and best-effort MLIR op/location.

Add triton_anchor.diagnose CLI with file input and --python
    MODULE:FUNCTION runtime TTIR generation, and register triton-anchor-diagnose
    console script in setup.py and pyproject.toml.

Add diagnostics unit tests, user documentation, T2.1 implementation
    reports, and a retained failing inline-asm sample source.
Add python-frontend and input-parse diagnostic handling before pass
    execution. Update CLI output, summaries, tests, runnable failure
    samples, and diagnostics documentation. Remove the superseded T2.1
    analysis document.
Implement PassDiagnostic to run TTIR and triton-linalg pipelines pass by
    pass, saving before/after IR snapshots, failure diagnostics, summary.json,
    and best-effort MLIR op/location.

Add triton_anchor.diagnose CLI with file input and --python
    MODULE:FUNCTION runtime TTIR generation, and register triton-anchor-diagnose
    console script in setup.py and pyproject.toml.

Add diagnostics unit tests, user documentation, T2.1 implementation
    reports, and a retained failing inline-asm sample source.
Add python-frontend and input-parse diagnostic handling before pass
    execution. Update CLI output, summaries, tests, runnable failure
    samples, and diagnostics documentation. Remove the superseded T2.1
    analysis document.
Extend PassDiagnostic to capture per-pass timing, IR size changes, and RSS
sampling when running adapter pipelines (triton-linalg / triton-shared).
All metrics flow into the existing triton-anchor-diagnose CLI and summary.json.

Changes:
- python/triton_anchor/diagnostics.py: add duration_ms/before_ir_bytes/
  after_ir_bytes/ir_delta_bytes/peak_rss_bytes to PassRunRecord; add
  total_duration_ms/input_ir_bytes/output_ir_bytes/peak_rss_bytes/slowest_pass
  to PassDiagnosticResult; wire collection in _diagnose_pipeline loop
- python/triton_anchor/diagnose.py: display metrics in _print_result
- python/triton_anchor/tests/test_diagnostics.py: add 2 tests for metrics
- docs/t2_5_adapter_robustness_review.md: design writeup

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Add t2_5_adapter_observability.md: usage, metrics, changed files,
  test results, implementation details, design decision, task context,
  and follow-up work
- Remove t2_5_adapter_robustness_review.md (content merged above)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add Sophgo PPLIR and external-stage diagnostic coverage, update CLI support, tests, docs, and the PPLIR failure sample. Keep generated diagnostic outputs and build artifacts untracked.
@anteloper-c anteloper-c reopened this Aug 10, 2026
@github-actions

Copy link
Copy Markdown

Codex AI 代码审查

这条 AI 评论仅供参考,是非阻塞的辅助审查;确定性 CI 结果才是合入门禁。

审查摘要

  • AI 审查摘要:警告
  • 确定性 CI:确定性 Local CI 已通过;这条 AI 评论只提供补充审查意见,不改变门禁结果。
  • 合入建议:不建议直接合入;至少需要补齐真实 JIT 自动诊断 hook 或收窄文档声明,并修正 T2.5 文档中的 pass 数量后再合入。

本次变更新增编译诊断 CLI、逐 pass 诊断核心、StageDiagnostic、文档和故障样例,并通过 Local CI 与定向验证确认核心 CLI/TTIR 路径可运行。审查发现文档宣称的任意 JIT 自动诊断 hook 和 adapter pass 数量与当前仓库实现不一致,建议修正后再合入。

贡献者目标与实现情况

  • 判断:部分实现
  • 贡献者目标:贡献者希望提供算子编译诊断 CLI、pass 级失败定位能力,并增强 adapter 层诊断/可观测性;标题还声称包含 Pass Diff 工具。
  • 预期效果:PR 描述未明确说明预期行为;从标题和新增文档看,预期包括 'triton-anchor-diagnose'/'python -m triton_anchor.diagnose' 可诊断 TTIR、triton-linalg、Sophgo PPLIR 等阶段,环境变量可在真实 JIT 编译失败时自动触发诊断,并提供 adapter pass 指标。
  • 当前实现情况:当前 diff 实现了诊断 CLI、TTIR/triton-linalg/sophgo-pplir 逐 pass 诊断、pre-pass 输入错误诊断、StageDiagnostic、summary/metrics 输出、console script 注册、公开 API 导出、单测和故障样例。未在当前仓库找到 Pass Diff 工具实现,也未找到把 'TRITON_ANCHOR_DIAGNOSE_ON_ERROR' 接入任意真实 JIT/backend 编译路径的生产代码;文档中 adapter pass 数量也与实现不一致。
  • 判断依据:'python/triton_anchor/diagnose.py' 和 'python/triton_anchor/diagnostics.py' 提供 CLI 与诊断核心,RUN-001、RUN-002、RUN-003、RUN-004 均通过;Local CI delivery-summary 显示目标 SHA a94c421 的 frontend build/smoke、backend rebuild/smoke 均通过。静态检索只在文档、样例脚本和测试中发现 'TRITON_ANCHOR_DIAGNOSE_ON_ERROR',没有生产 JIT hook;检索 'Pass Diff'/'pass diff' 未发现新增工具实现。

需要处理的问题

1. [中风险] 文档宣称的任意 JIT 自动诊断 hook 在当前仓库未实现

  • 问题类型:正确性错误
  • 代码定位:docs/diagnostics.md:204
  • 这段代码负责:声明真实 Sophgo JIT 编译失败会自动触发诊断
  • 影响:用户按文档推荐执行 'TRITON_ANCHOR_DIAGNOSE_ON_ERROR=1 python your_kernel.py' 调试任意 kernel 时,不会获得承诺的自动诊断输出,除非运行的是新增样例脚本或外部未随本 PR 合入的 backend 修改。
  • 建议:如果目标是自动诊断,需要在实际 JIT/backend 编译和 runtime 错误路径接入环境变量检查并调用 'PassDiagnostic'/'StageDiagnostic',并补充端到端测试;如果本 PR 只提供 CLI/样例,应删除或收窄该自动 hook 声明。

2. [低风险] Adapter 指标文档的 pass 数量与实现不一致

  • 问题类型:正确性错误
  • 代码定位:docs/t2_5_adapter_observability.md:66
  • 这段代码负责:说明 triton-linalg adapter 指标覆盖的 pass 数量
  • 影响:用户或后续自动化按文档验收 'summary.json.records' 时会期望 15 条记录,可能误判诊断指标缺失;也会混淆已移除的 'triton_to_ppl' 是否仍属于 adapter 诊断范围。
  • 建议:将该处文档改为 14 个 pass,并说明 'triton_to_ppl' 不在当前 triton-linalg adapter descriptor 内;如果目标确实是 15 个 pass,则同步 adapter 与 descriptor 实现并补充测试。

可点击代码定位

链接固定到本次测试提交,便于提交者修复和审核者核对代码功能。

验证情况

  • 状态:通过
  • 说明:复用 Local CI 成功证据,并执行 4 条定向验证:诊断单测含新增审查测试、module CLI help、真实 Python kernel TTIR 诊断、安装后 console script help,全部通过。

变更文件

查看变更文件
文件 类型 改动说明 影响
docs/diagnostics.md 新增 新增面向用户的编译诊断工具文档,说明 CLI、JIT 自动诊断、输入文件模式、Python kernel 模式和输出产物。 扩大用户可见行为说明;其中真实 JIT 自动诊断声明会影响用户对环境变量入口的预期。
docs/t2_5_adapter_observability.md 新增 新增 T2.5 adapter 可观测性指标文档,说明 pass 级耗时、IR 大小、RSS、slowest_pass 等字段。 定义 adapter 诊断指标的用户和自动化消费预期;文档计数错误会影响 records 验收。
ops-diagnose-cli/docs/T2.1-implementation-and-test-results.md 新增 新增 T2.1 实现与测试结果说明,记录诊断 CLI、StageDiagnostic、样例和历史验证输出。 作为实现记录和手工验收参考;其中部分外部 backend hook 描述不在本仓库 diff 中实现。
ops-diagnose-cli/test/anchor_diag_bad_frontend_kernel.py 新增 新增一个会在 Triton frontend 阶段失败的样例 kernel,通过 '--python' 调用诊断 CLI 生成 pre-pass 诊断。 提供手工复现 frontend 失败诊断的样例,不影响默认运行路径。
ops-diagnose-cli/test/anchor_diag_bad_kernels.py 新增 新增 inline asm lowering 失败样例,先生成 TTIR,再依次诊断 TTIR 和 triton-linalg pipeline。 提供 adapter lowering 失败定位样例,默认未设置环境变量时不触发诊断。
ops-diagnose-cli/test/anchor_diag_bad_pplir_kernel.py 新增 新增 Sophgo PPLIR broadcast 限制失败样例,依次运行 TTIR、triton-linalg 和 sophgo-pplir 诊断。 提供 PPLIR pass/op/location 定位样例,依赖 Sophgo backend pass 绑定。
python/triton_anchor/__init__.py 修改 新增导出 'PassDiagnostic' 和 'StageDiagnostic'。 扩展公开 Python API,允许调用方从 'triton_anchor' 顶层导入诊断能力。
python/triton_anchor/diagnose.py 新增 新增诊断 CLI,支持文件输入、'--python MODULE:FUNCTION' 生成 TTIR、pipeline 选择、输出目录、summary 和错误打印。 新增用户可执行入口,覆盖正常 TTIR 诊断、输入 parse 失败和 Python frontend 失败路径。
python/triton_anchor/diagnostics.py 新增 新增 pass descriptor、PassDiagnostic、StageDiagnostic、metrics 采样、summary 序列化、stderr 捕获和 MLIR location/op 提取逻辑。 是诊断能力核心;会影响 pass 失败定位、adapter 指标和外部阶段诊断数据结构。
python/triton_anchor/tests/test_diagnostics.py 新增 新增诊断模块单测,使用 fake libtriton/pass manager 覆盖成功、失败、pre-pass、PPLIR、StageDiagnostic 和 CLI help。 为新增诊断核心提供确定性单元覆盖。
setup.py 修改 新增 'console_scripts' entry point,安装后提供 'triton-anchor-diagnose' 命令。 影响包安装后的命令行入口生成。

@anteloper-c anteloper-c reopened this Aug 12, 2026
@github-actions

Copy link
Copy Markdown

Codex AI 自动审查

Codex AI 自动审查仅供参考且不阻塞合入;本地确定性 CI 检查结果才是合入门禁。

审查摘要

  • Codex AI 审查结论:警告
  • 本地确定性 CI 检查:已通过;Codex AI 自动审查只提供补充意见,不改变门禁结果。
  • 合入建议:建议修正文档中的 Adapter pass 数量后合入;运行时代码和新增定向测试当前未发现阻塞性问题。

本次变更新增 Triton Anchor 编译诊断 CLI、pass 级诊断 API、样例和文档;新增单元测试、CLI help 和语法编译检查均通过。主要风险是 Adapter 可观测性文档把 triton-linalg pass 数量写成 15,而当前实现和真实 adapter 均为 14。

贡献者目标与实现情况

  • 判断:部分实现
  • 贡献者目标:新增 Triton Anchor 编译诊断工具及文档,用于定位 TTIR、triton-linalg、Sophgo PPLIR 和编译相关阶段的失败,并输出诊断摘要与可观测性指标。
  • 预期效果:PR 描述未明确说明预期行为;从变更内容看,预期是提供 'triton-anchor-diagnose' CLI、pass 级失败定位、pre-pass 失败诊断、summary.json、诊断明细文件和 Adapter 可观测性指标。
  • 当前实现情况:当前 diff 基本实现了新增诊断 CLI、诊断 API、安装入口、样例和测试;运行时验证通过。实现与声明的主要偏差是文档对 triton-linalg Adapter 指标覆盖的 pass 数量描述不准确。
  • 判断依据:
    • 新增 'python/triton_anchor/diagnostics.py' 实现 pass 级诊断、summary.json 输出、IR 快照、耗时和 IR 大小指标以及 MLIR location/op 提取。
    • 新增 'python/triton_anchor/diagnose.py' 提供 'triton-anchor-diagnose' CLI、文件输入模式和 '--python MODULE:FUNCTION' 辅助入口。
    • 'setup.py' 新增 'triton-anchor-diagnose = triton_anchor.diagnose:main' console script,'python/triton_anchor/init.py' 新增诊断类导出。
    • 新增诊断单元测试在当前 checkout 中通过,覆盖成功路径、pass 失败、parse 失败、frontend 失败、stage 失败和 Sophgo PPLIR 失败。
    • 本地确定性 CI 检查日志显示测试提交的 wheel 构建完成并包含新增 'diagnose.py' 与 'test_diagnostics.py',且 本地确定性 CI 检查退出码为 0。
    • 文档中 Adapter 可观测性 pass 数量写为 15,但当前诊断 descriptor 和真实 adapter 执行序列均为 14,存在文档偏差。

需要处理的问题

1. [低风险] Adapter 可观测性文档中的 pass 数量与实现不一致

  • 问题类型:正确性错误
  • 代码定位:docs/t2_5_adapter_observability.md:66
  • 这段代码负责:说明 Adapter 指标覆盖范围和 pass 总数的用户文档
  • 影响:用户查看可观测性文档时会误以为指标覆盖 15 个 Adapter pass,和实际 summary.json 的 'total_passes' 不一致,影响诊断结果解读但不改变编译运行时行为。
  • 建议:将 Adapter pass 数量和示例输出统一到当前实现的 14 个 pass;如果确实希望恢复 15 个 pass,需要同步真实 adapter 和诊断 descriptor,而不是只改文档。

可点击代码定位

链接固定到本次测试提交,便于提交者修复和审核者核对代码功能。

验证情况

  • 补充验证结果:所执行的验证命令均通过
  • 说明:
    • 复用 本地确定性 CI 检查日志证据:测试提交的 wheel 构建包含新增诊断模块和测试文件,本地确定性 CI 检查最终成功完成。
    • 新增诊断单元测试在当前 checkout 中通过,覆盖主要正常路径、边界路径和错误路径。
    • 诊断 CLI 帮助入口检查通过,确认模块入口和参数解析可用。
    • Python 语法编译检查覆盖新增诊断模块和 ops-diagnose 样例,未发现语法错误。
    • 未生成新的测试文件;当前已有新增测试能覆盖本次 Python 诊断逻辑的主要风险。

剩余风险

  • 当前审查未执行真实 Sophgo 后端的 'ops-diagnose-cli/test/anchor_diag_bad_pplir_kernel.py',PPLIR 端到端行为主要由 fake pass 单元测试、静态检查和 本地确定性 CI 检查成功证据支撑。
  • 本地确定性 CI 检查日志确认 wheel 构建和整体任务成功,但日志片段未显示新增 'test_diagnostics.py' 在 本地确定性 CI 检查中被独立运行;本次审查已在当前 checkout 定向运行该测试补充证据。

变更文件

查看变更文件
文件 类型 改动说明 影响
docs/diagnostics.md 新增 新增 Triton Anchor 编译诊断工具说明,覆盖 CLI、JIT 自动诊断 hook、输入模式、输出文件、常见问题和失败阶段说明。 新增用户文档,不改变运行时行为;文档中的命令和输出契约会影响使用者对诊断工具能力与边界的理解。
docs/t2_5_adapter_observability.md 新增 新增 Adapter 层诊断指标说明、测试命令、summary 字段说明和 descriptor 与 adapter 同步风险说明。 新增 Adapter 可观测性文档,不改变运行时行为;其中 pass 数量说明与实际实现不一致,会误导指标解释。
ops-diagnose-cli/docs/T2.1-implementation-and-test-results.md 新增 新增 ops-diagnose CLI 相关实施记录、测试结果和诊断能力说明。 新增实施与测试结果文档,不改变代码行为;可作为历史说明,但其中命令和声明只按文档一致性审查,未作为指令执行。
ops-diagnose-cli/test/anchor_diag_bad_frontend_kernel.py 新增 新增故意调用不存在 Triton language builtin 的坏 kernel 样例,通过环境变量启用诊断后调用 'triton_anchor.diagnose.main()'。 新增 frontend 失败样例,用于触发 '--python' 模式的 pre-TTIR 诊断;不影响库正常导入。
ops-diagnose-cli/test/anchor_diag_bad_kernels.py 新增 新增 inline asm 失败样例,手动生成 TTIR 后依次运行 TTIR 和 triton-linalg 诊断并输出结果。 新增 triton-linalg 失败样例,用于从 TTIR 到 Adapter pipeline 的失败定位;不影响库正常导入。
ops-diagnose-cli/test/anchor_diag_bad_pplir_kernel.py 新增 新增 C 维 broadcast 失败样例,加载 Sophgo pass/dialect 后依次运行 TTIR、triton-linalg 和 sophgo-pplir 诊断。 新增 Sophgo PPLIR 失败样例,用于覆盖 TTIR、triton-linalg、sophgo-pplir 串联诊断路径;真实 Sophgo 后端执行仍依赖环境中的扩展。
python/triton_anchor/__init__.py 修改 新增 'PassDiagnostic' 和 'StageDiagnostic' 从 'triton_anchor.diagnostics' 的包级导出。 扩展 Python 包公开 API,新增诊断类导出;未移除既有导出,兼容性风险低。
python/triton_anchor/diagnose.py 新增 实现 'triton-anchor-diagnose' CLI,支持 MLIR/TTIR 文件输入、'--python' 生成 TTIR、pipeline 选择、pre-pass 失败诊断、summary.json 和终端输出。 新增用户可执行诊断 CLI,影响诊断入口、参数契约、退出码和输出文件生成。
python/triton_anchor/diagnostics.py 新增 实现 'PassDiagnostic'、'StageDiagnostic'、TTIR/triton-linalg/Sophgo PPLIR pass descriptor、stderr 捕获、MLIR location/op 提取、IR 快照和指标汇总。 新增核心诊断实现,影响 pass 级失败定位、IR 快照、summary 结果协议、可观测性指标和 Sophgo PPLIR 诊断路径。
python/triton_anchor/tests/test_diagnostics.py 新增 新增 13 个 pytest 用例,覆盖 pass 失败定位、MLIR location/op 提取、summary 写出、CLI python 模式、input-parse、python-frontend、PPLIR 和指标记录。 新增诊断模块测试,提升新增 API 和 CLI 的回归覆盖;使用 fake libtriton/Sophgo pass 避免依赖真实后端。
setup.py 修改 在 'entry_points' 中新增 'console_scripts',指向 'triton_anchor.diagnose:main'。 新增安装后的命令行入口,用户可通过 'triton-anchor-diagnose' 调用诊断 CLI;不改变 adapter entry point。

PR 功能声明上下文警告

未取得与当前 PR 测试提交匹配的功能声明元数据;继续依据代码差异和测试证据分析。


Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants