Pull Request已成功合入, 合并人@CANN-robot
(感谢 lidongsheng 的贡献)变更摘要
本次 PR 对 PyPTO 的入门示例进行了大规模重写,旨在精简和现代化示例代码。核心变化包括:大幅简化 hello_world 和 basic_ops 示例,从旧版 API(如 pypto.frontend.jit、out.move()、显式 shape/dtype 声明)迁移到新版 API(pypto.jit、pypto.Tensor[...] 自动推断、out[:] 赋值语法);删除了 symbolic_scalar.py、tensor_creation.py、validate_examples.py 和 validate_examples.sh 等冗余文件;同时在 pypto/__init__.py 中暴露了顶层的 jit 便捷接口。共计删除约 3037 行,新增约 158 行。
主要改动
-
hello_world.py大幅精简:移除了 165 行复杂代码(设备 ID 校验、示例注册/列表系统、get_device_id辅助函数等),将单一核函数add_kernel改为使用@pypto.jit装饰器、pypto.Tensor[...]自动推断 shape/dtype 以及out[:]赋值语法,并通过torch.testing.assert_close统一结果校验。 -
basic_ops.py重写为现代化示例集:将原始 7 个示例合并为 5 个核心测试函数(test_add、test_erfc、test_matmul、test_sum、test_dynamic_add),全面采用pypto.Tensor[[...], dtype]语法、out[:]赋值替代out.move(),以及torch.testing.assert_close替代手动numpy比较;新增dynamic_add_kernel演示pypto.DYNAMIC动态维度与pypto.loop/pypto.view/pypto.assemble的分块循环模式。 -
删除冗余示例文件:移除了
symbolic_scalar.py(307 行)、tensor_creation.py(399 行)、validate_examples.py(1662 行)和validate_examples.sh(44 行),这些文件的功能已不再需要或已整合到简化后的示例中。 -
pypto/__init__.py暴露顶层jit接口:新增jit = frontend.jit一行,使用户可直接通过pypto.jit访问 JIT 装饰器,简化了内核函数的声明方式。 -
命令行接口统一简化:
hello_world.py和basic_ops.py的命令行参数均改为-m/--run_mode选择npu/sim模式,basic_ops.py额外支持-t/--tests按名称选择测试用例,移除了旧的--list列表式示例注册机制。


代码审查
已完成对所有 7 个变更文件的逐文件审查。以下是总结:
审查总结
按优先级统计
- P0: 0
- P1: 0
- P2: 3
- P3: 0
各文件审查结果
| 文件 | 状态 |
|---|---|
examples/00_hello_world/README.md |
✅ 无问题 |
examples/00_hello_world/README_en.md |
✅ 无问题 |
examples/00_hello_world/hello_world.py |
✅ 无问题 |
examples/01_beginner/basic/README.md |
⚠️ 1 个 P2(命令示例与描述不匹配) |
examples/01_beginner/basic/README_en.md |
⚠️ 1 个 P2(同上) |
examples/01_beginner/basic/basic_ops.py |
⚠️ 1 个 P2(dynamic_add 在 SIM 模式下静默跳过验证) |
python/pypto/__init__.py |
✅ 无问题 |
整体风险判断
低风险。 本次重构主要是对 Hello World 和 Basic 示例的精简重写,代码逻辑正确。发现的 3 个 P2 问题均属于文档/示例层面的缺陷(README 命令示例与描述不符、测试在 SIM 模式下静默假通过),不影响核心运行时正确性,但可能误导初学者用户。建议在合入前修复这些 README 和示例脚本的问题。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 4 |
💬 仅评论


compile


/lgtm


Rewrite the hello_world/basic example
Related Issues: #2672