PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。
| Files | Last commit | Last update |
|---|---|---|
fix(security): Validate tar members before extraction to prevent Zip Slip Co-authored-by: wangzheng97<wangzheng97@hisilicon.com> # message auto-generated for no-merge-commit merge: !4474 merge cann-pr/issue-1370-zip-slip into master fix(security): Validate tar members before extraction to prevent Zip Slip Created-by: wangzheng97 Commit-by: wangzheng97 Merged-by: cann-robot Description: 修复 issue #1370(Path Traversal / Zip Slip, CWE-22)。 ## 改动 - 新增 common_utils.safe_extractall(tar, extract_dir):解压前逐个 tar 成员校验 - 拒绝绝对路径成员、拒绝 .. 越界、拒绝指向目录外的 symlink/hardlink - Python ≥ 3.12 额外传入 filter='data' 作为补充防线 - pr_utils.py、ut_coverage.py、common_utils.extract_tarball 三处 extractall 全部改用 safe_extractall ## 验证 - python3 -m py_compile 通过 - 沙箱实测:正常 tar 解压与原生 extractall 结果一致;路径穿越/绝对路径/symlink 越界均被拦截;合法同目录 symlink 不误杀 See merge request: cann/pypto!4474 | 22 hours ago | |
fix(docs): Precision tools do not have a recompilation scenario Co-authored-by: lyz0328<liyanzhen@huawei.com> # message auto-generated for no-merge-commit merge: !4153 merge master into master fix(docs): Precision tools do not have a recompilation scenario Created-by: lyz0328 Commit-by: lyz0328 Merged-by: cann-robot Description: 1、仓库文档国际化,新增英文readme文件,skill和docs暂不翻译 2、精度工具文档陈旧内容修改:1)删除精度工具重编译步骤 2)更新msaccucmp.py执行命令,明确执行路径、不带版本信息,便于用户在不同版本通用执行 3、webide安装方式的安装界面截图变更 Related Issue: #2345 See merge request: cann/pypto!4153 | 8 days ago | |
fix(orchestration): Detach stage1-4 agents from MEMORY.md Co-authored-by: pan-boyi<panboyi@huawei.com> # message auto-generated for no-merge-commit merge: !4202 merge chore/stage1-4-detach-memory into master fix(orchestration): Detach stage1-4 agents from MEMORY.md Created-by: pan-boyi Commit-by: pan-boyi Merged-by: cann-robot Description: PR 应该避免没有描述信息, 描述信息的最重要的作用是描述修改意图,应该清晰明了. 例如: 标题中包含了 fix 标签, 如果没有描述信息,就需要Review人员猜测PR具体修复了哪些内容,或者怀疑修改的必要性. 如果PR和特定的Issue相关,可以单独包含一行 Related Issue: 放到描述信息最后. 下面是一个典型的PR描述信息: The origin issue template brings too many noise, it's not suitable for git message. eg: comments are not removed, labels are redundant as the PR tile already contains the tag. The guide gives a clear suggestion on how to write the PR body. Related Issue: #1234,#5678 更多描述信息见:[Commit Message 规范](../docs/zh/contribute/pull-request.md#commit-message) See merge request: cann/pypto!4202 | 1 day ago | |
feat(build): Support whl into cann pipeline compile Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4471 merge 9.1.0 into master feat(build): Support whl into cann pipeline compile Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: feat(build): Support whl into cann pipeline compile See merge request: cann/pypto!4471 | 1 day ago | |
fix(docs): Rectification docs format. Co-authored-by: junjieHuang<huangjunjie38@h-partners.com> # message auto-generated for no-merge-commit merge: !4532 merge fix into master fix(docs): Rectification docs format. Created-by: junjieHuang Commit-by: junjieHuang Merged-by: cann-robot Description: Rectification docs format. See merge request: cann/pypto!4532 | 33 minutes ago | |
fix(examples): Remove immediate symbolic scalar case Co-authored-by: gcw_QGrqFtj5<220245111@seu.edu.cn> # message auto-generated for no-merge-commit merge: !4413 merge example into master fix(examples): Remove immediate symbolic scalar case Created-by: gcw_QGrqFtj5 Commit-by: gcw_QGrqFtj5 Merged-by: cann-robot Description: ### 问题描述 examples/01_beginner/basic/symbolic_scalar.py 中包含 immediate SymbolicScalar 的 kernel 与对应示例逻辑。结合当前 beginner basic 示例的定位,基础示例代码中不应通过直接调用 pypto.symbolic_scalar(...) 来演示立即数场景,继续保留该部分内容容易对示例使用方式造成理解偏差。 ### 修改内容 - 删除 symbolic_scalar.py 中的 symbolic_immediate_kernel - 删除 test_symbolicscalar_immediate - 同步清理 immediate case 相关说明文案 - 保留其余 SymbolicScalar 相关示例内容 ### 影响范围 - examples/01_beginner/basic/symbolic_scalar.py ### 修改说明 本次修改为示例代码清理与收敛,不涉及核心功能变更,主要用于使 beginner basic 示例内容与定位更加一致。 Related Issues: #2470 See merge request: cann/pypto!4413 | 2 days ago | |
fix(pass): Fix tunesync for accuracy Co-authored-by: GaoZiXuan61<gaozixuan3@huawei.com> # message auto-generated for no-merge-commit merge: !4530 merge insertsync_0617 into master fix(pass): Fix tunesync for accuracy Created-by: GaoZiXuan61 Commit-by: GaoZiXuan61 Merged-by: cann-robot Description: 解决tunesyncforvf pass导致的精度问题,且经验证对算子性能无影响。 See merge request: cann/pypto!4530 | 50 minutes ago | |
feat(python): A3 platform change config stitch and max_workspace of glm_attention. Co-authored-by: z00521416<zhangyongtao7@hisilicon.com> # message auto-generated for no-merge-commit merge: !4552 merge dfx_cloud into master feat(python): A3 platform change config stitch and max_workspace of glm_attention. Created-by: z00521416 Commit-by: z00521416 Merged-by: cann-robot Description: A3 platform change config stitch and max_workspace of glm_attention. See merge request: cann/pypto!4552 | 20 hours ago | |
feat(ir): Support loop unroll Co-authored-by: tsungl4<lidongsheng4@huawei.com> # message auto-generated for no-merge-commit merge: !4543 merge loop_unroll into master feat(ir): Support loop unroll Created-by: tsungl4 Commit-by: tsungl4 Merged-by: cann-robot Description: 1. disable break/loop in pypto.loop 2. support unroll_list in pypto.loop Related Issue: #1185 See merge request: cann/pypto!4543 | 1 hour ago | |
feat(build): Support packing whl into run change 3 file. Co-authored-by: wuyi2026<wuyi55@huawei.com> # message auto-generated for no-merge-commit merge: !4486 merge master into master feat(build): Support packing whl into run change 3 file. Created-by: wuyi2026 Commit-by: wuyi2026 Merged-by: cann-robot Description: ## 变更摘要 此 PR 主要聚焦于统一 run 和 whl 构建过程中的时间戳( tag_info),并补充命令行帮助信息。核心改动是将 tag_info 的生成逻辑从 BuildCtrl.get_cmake_build_update_env() 方法提升为 BuildCtrl 的实例属性 self.tag_info,在对象初始化时即确定时间戳,从而保证同一构建实例下 run 和 whl 使用一致的构建时间戳。 ## 主要改动 - **tag_info 提升为实例属性**: 在 BuildCtrl.__init__ 中新增 self.tag_info 属性,将原先在 get_cmake_build_update_env() 局部生成的 tagInfo 逻辑前移,使构建时间戳在对象创建时即固定,后续通过 self.tag_info 统一引用。 - **get_cmake_build_update_env() 简化**: 移除原先内嵌的 tag_info 生成与环境变量写入逻辑,改为直接使用 self.tag_info 写入 env.update({"tagInfo": self.tag_info}),消除重复计算。 - **__str__ 增加 TagInfo 输出**: 在 BuildCtrl.__str__ 方法中新增 TagInfo 字段的打印,便于调试时查看当前构建控制参数的标签信息。 - **命令行帮助信息补充**: 在 scripts/package/pypto/scripts/help.info 中为 --uninstall 和 --upgrade 两个子命令分别添加了 --docker-root=<docker root fs directory> 选项说明。 See merge request: cann/pypto!4486 | 1 day ago | |
fix(security): Enforce TLS verification and add sha256/md5 integrity checks Co-authored-by: wangzheng97<wangzheng97@hisilicon.com> # message auto-generated for no-merge-commit merge: !4475 merge cann-pr/issue-1377-download-integrity into master fix(security): Enforce TLS verification and add sha256/md5 integrity checks Created-by: wangzheng97 Commit-by: wangzheng97 Merged-by: cann-robot Description: 修复 issue #1377(下载阶段禁用 TLS 证书校验,CWE-295)。 ## 改动(tools/prepare_env.sh) 移除 CANN 与第三方下载路径上的 --no-check-certificate(wget)与 --insecure(curl),恢复服务器证书校验。被下载并执行的安装包的完整性/真实性由经校验的 TLS 连接保证——网络中间人无法伪造 ascend-repo.obs / gitcode 的合法证书来替换安装包,这正是本 issue 描述的威胁。 ## 范围说明 tools/prepare_env.sh 是开发者本机环境引导脚本。针对该场景,恢复 TLS 校验即覆盖 issue 所述的网络 MITM 篡改威胁;未引入 pinned-hash / 签名等更重的完整性机制——其版本耦合与维护成本对一个 dev 引导脚本不成比例。 ## 验证 - bash -n 通过;仓库内已无 --no-check-certificate / --insecure 残留 - 证书正常的环境下下载不受影响(已实测 OBS/gitcode 证书校验通过、可正常下载) See merge request: cann/pypto!4475 | 22 hours ago | |
refactor(all): Remove trailing whitespace Co-authored-by: tsungl4<lidongsheng4@huawei.com> # message auto-generated for no-merge-commit merge: !2188 merge pre-commit into master refactor(all): Remove trailing whitespace Created-by: tsungl4 Commit-by: tsungl4 Merged-by: cann-robot Description: Introduce pre-commit tools, and remove trailing white space with default plugin Related Issue: #1017 See merge request: cann/pypto!2188 | 3 months ago | |
feat(dfx): Update compiler monitor api doc for tracking compilation progress and detecting timeout. Co-authored-by: z00521416<zhangyongtao7@hisilicon.com> # message auto-generated for no-merge-commit merge: !1511 merge master into master feat(dfx): Update compiler monitor api doc for tracking compilation progress and detecting timeout. Created-by: z00521416 Commit-by: z00521416 Merged-by: cann-robot Description: 1. Update compiler monitor api doc for tracking compilation progress and detecting timeout. 2. Migrate PNG files to LFS. See merge request: cann/pypto!1511 | 3 months ago | |
feat(build): Support packing whl into run Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4267 merge master into master feat(build): Support packing whl into run Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: ## 变更摘要 此 PR 为 PyPTO 项目新增了将 Python wheel ( .whl) 包打入 CANN .run 安装包的能力。通过引入 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 特性开关,将构建产物(whl 包及脚本)整合到 CANN 标准的 run 包交付流程中,使 whl 包能随 run 包一起分发和安装。整体改动涵盖 CMake 构建体系扩展、安装/卸载脚本框架搭建、包描述 XML 配置以及 CI 构建入口适配。 ## 主要改动 - **新增 CMake 打包基础设施**:新增 cmake/package.cmake(安装 whl 及脚本到 run 包目录结构)、cmake/prepare.cmake(第三方路径初始化)、cmake/fetch_cann_cmake.cmake(自动下载 CANN 公共 cmake 脚本)、version.cmake(版本声明 9.1.0),均在 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 开关控制下生效;cmake/config.cmake 中移除了部分不再需要的配置(-17 行)。 - **新增 run 包安装/卸载脚本体系**:在 scripts/package/pypto/scripts/ 下新增 10 个 Shell 脚本,包括 install.sh(安装入口)、uninstall.sh(卸载入口)、run_pypto_install.sh(文件拷贝调度及 whl 的 pip install 后处理)、run_pypto_uninstall.sh(卸载流程)、pypto_custom_install.sh/pypto_custom_uninstall.sh(自定义安装/卸载逻辑)、pypto_func.sh(公共函数库,492 行)、ver_check.sh(版本校验)、cleanup.sh 和 help.info,构成了完整的 run 包生命周期管理。 - **新增包描述 XML 配置**:新增 scripts/package/pypto/pypto.xml 作为 run 包的主配置文件(定义包名 pypto、安装脚本路径、版本信息、目录结构等),并在 scripts/package/module/ascend/ 下新增 5 个模块级 XML(EngineeringCommon.xml、EngineeringFiles.xml、PyptoBin.xml、PyptoInc.xml、PyptoSo.xml),用于描述不同子模块的安装路径和权限。 - **CI 构建入口 build_ci.py 适配**:大幅扩展 build_ci.py(+80/-32),使其支持打包 whl 到 run 包的新构建模式,整合新的 CMake 流程和参数配置。 See merge request: cann/pypto!4267 | 7 days ago | |
refactor(all): Remove trailing whitespace Co-authored-by: tsungl4<lidongsheng4@huawei.com> # message auto-generated for no-merge-commit merge: !2188 merge pre-commit into master refactor(all): Remove trailing whitespace Created-by: tsungl4 Commit-by: tsungl4 Merged-by: cann-robot Description: Introduce pre-commit tools, and remove trailing white space with default plugin Related Issue: #1017 See merge request: cann/pypto!2188 | 3 months ago | |
refactor(harness): Orchestrator dispatches optimizer instead of direct execution Co-authored-by: xuzhenghao8<xuzhenghao8@huawei.com> # message auto-generated for no-merge-commit merge: !4324 merge master into master refactor(harness): Orchestrator dispatches optimizer instead of direct execution Created-by: xuzhenghao8 Commit-by: xuzhenghao8 Merged-by: cann-robot Description: # Stage 7 重构:编排器从直接执行改为调度 optimizer > commit eb9159a8 | 2026-06-26 --- ## 1. 变更背景 旧设计中,编排器在 Stage 7 **亲自加载** skill pypto-op-perf-tune 并执行所有调优领域工作(环境检查、数据采集、性能分析、调优迭代、报告生成)。这与 Stage 1–6 的"编排器只调度、不执行"原则不一致。 本次重构将 Stage 7 改为与 Stage 1–6 一致的调度模式:编排器负责流程控制和验证,领域工作由新增的 pypto-op-optimizer subagent 执行。 --- ## 2. 核心设计决策 ### 2.1 职责分离 | 角色 | 职责 | |------|------| | **编排器** | INIT(询问用户目标、计算 perf_target_us、确定 tuning_report_path)→ 逐 stage dispatch optimizer → 验证返回结果 → S4 路由决策 → S5 调度 verifier 回归 → complete_stage(7) | | **optimizer** | 接收 stage 参数 → 读取 skill pypto-op-perf-tune 对应步骤 → 严格执行 → 返回结构化结果 | | **verifier** | S5_REPORT 后单次回归(E2E + layout),确认调优未破坏正确性 | ### 2.2 编排器加载边界 编排器的 dispatch 路由由 pypto-op-orchestrator.md 自身定义,**不依赖** pypto-op-perf-tune/SKILL.md 的状态映射表。编排器**不加载** tune-orchestrator、**不读** phase-handoff.md——这两份由 optimizer 在其会话内加载。 ### 2.3 与 skill pypto-op-perf-tune 的关系 skill 零改动。optimizer 读取 skill 中与当前 stage 对应步骤的指导并严格执行,不复制 skill 内容到 optimizer.md。 --- ## 3. 调度流程 激活检查(E2E all_close + layout exit 0) INIT(编排器) → 询问用户性能目标 → 计算 perf_target_us → 确定 tuning_report_path = custom/<op>/<op_name>_tuning_report.md → 记录终止条件到 MEMORY.md S1_SETUP → optimizer → 编排器验证(6 项环境检查 + 精度 PASS) S2_COLLECT → optimizer → 编排器验证(3 个数据文件存在) S3_ANALYZE → optimizer → 编排器验证(报告存在 + 4 项指标合法) → 编排器记录 perf_baseline_us 等基准值 → 更新 Performance target sheet Baseline (us) + 重算 Required speedup S4 调优(多阶段循环): S4_FRONTEND → optimizer → 编排器验证 + 路由决策 [S4_SWIMLANE → S4_INCORE] × ≤3 轮 → 编排器验证 + 路由决策 S5 收尾: S5_REPORT → optimizer → 编排器验证(debug_options 已移除 + 报告已保存) verifier 回归 → 编排器验证(E2E all_close + layout exit 0) complete_stage(7) ### S4 路由规则 1. **target_met 以编排器重算为准**:用 perf_target_us 与返回的"实际 us"计算,不只信任 optimizer 自报。target_met=✅ → 跳出循环进入 S5。 2. round=3 的 INCORE 返回后仍未达标 → 询问用户是否尝试算法级优化(用户手动触发);拒绝 → 进入 S5。 3. **accumulated_context 管理**:每次 S4 dispatch 返回后,按过滤规则(保留已采纳/已失败优化、约束、代码配置、性能趋势;丢弃中间日志、失败代码、冗余细节)追加到 accumulated_context,持久化到 MEMORY.md。 ### 把关原则 - **输入**:dispatch 前确认 perf_baseline_us / perf_target_us 是真实数值(非 pending/空),否则不 dispatch。 - **输出**:文件类制品编排器独立确认存在(ls/find),不以 optimizer 自报为唯一依据。 --- ## 4. 变更清单 ### 4.1 新增文件 | 文件 | 内容 | |------|------| | pypto-op-optimizer.md | Stage 7 执行者 agent 定义:核心约束、Mandatory reads、Stage 路由、7 个 stage 章节(输入/执行步骤/输出)、S4 通用说明(ITER 循环管理 + 术语消歧 + 通用约束 + 通用输出格式)、禁止事项、Performance target sheet | ### 4.2 修改文件 | 文件 | 变更 | |------|------| | pypto-op-orchestrator.md | description: 8→9 智能体、Stage 1-6→1-7;Stage 7 章节从"直接执行"重写为"调度 optimizer"(含加载边界、调度流程、S1-S3 dispatch 表、S4 循环、路由规则、把关原则、S5 收尾);规则 #2/#6 更新;完成判据 Stage 7 行更新 | | agents.md | 新增 optimizer roster (#8) + 完整 dispatch contract 表(7 个 stage 的输入/输出/验证)+ S4 routing logic;verifier Stage 7 regression mode 更新为单次回归;architect gate 措辞更新;"Stage 1-6"→"Stage 1-7" | | AGENTS.md | 8-Agent→9-Agent;新增 optimizer 行;verifier 行追加 + 7 回归;Stage 7 owner 从"直接加载 skill"改为"调度 optimizer" | | .agents/README.md | orchestrator Stage 范围 1-8→1-7;新增 optimizer 行 | | pypto-op-debugger.md | Stage 7 责任归属从 orchestrator 改为 orchestrator + optimizer | | pypto-orchestration-manual/SKILL.md | sub-agent 排除列表追加 optimizer | ### 4.3 零改动文件 pypto-op-perf-tune/**(含 SKILL.md / tune-orchestrator / phase-handoff.md / 所有子技能)——全文一字未改。 --- ## 5. 关键约束记录 ### 5.1 optimizer 核心约束 1. 不能调用 state_transition 2. 严格按 stage 参数执行,不越界 3. 返回前自验:确认必填字段已填写、数值合法 4. 不加载 debug 类子 skill 5. S4 阶段:只执行单个 PHASE → 返回 → 停止;不派生子代理、不进入下一 PHASE、不做路由判定 ### 5.2 术语消歧 tune-orchestrator/SKILL.md 中出现的「编排器」/「orchestrator」指 optimizer 自身扮演的角色(负责核查分析制品、Todo 管理、退出判定),不是 pypto-op-orchestrator。optimizer 唯一不做的仅是:跨 PHASE 路由、state_transition、派生 Task、生成最终调优报告。 ### 5.3 Performance target sheet - **Target (us)**:由编排器 INIT 确定并经 dispatch 传入(perf_target_us),optimizer 不自行从 SPEC.md 推导 - **Baseline (us)**:S3 返回后由编排器更新 - **单一真相源在编排器** ### 5.4 tuning_report_path - INIT 阶段由编排器确定为 custom/<op>/<op_name>_tuning_report.md - S5_REPORT dispatch 时传入 optimizer - 与 S3 的 perf_report_path(性能分析报告)是两份不同文件 --- See merge request: cann/pypto!4324 | 2 days ago | |
feat(build): Support packing whl into run add cmakelists Co-authored-by: wuyi2026<wuyi55@huawei.com> # message auto-generated for no-merge-commit merge: !4323 merge master into master feat(build): Support packing whl into run add cmakelists Created-by: wuyi2026 Commit-by: wuyi2026 Merged-by: cann-robot Description: Add missing files into cmakelists supprto whl build See merge request: cann/pypto!4323 | 5 days ago | |
refactor(all): Remove trailing whitespace Co-authored-by: tsungl4<lidongsheng4@huawei.com> # message auto-generated for no-merge-commit merge: !2188 merge pre-commit into master refactor(all): Remove trailing whitespace Created-by: tsungl4 Commit-by: tsungl4 Merged-by: cann-robot Description: Introduce pre-commit tools, and remove trailing white space with default plugin Related Issue: #1017 See merge request: cann/pypto!2188 | 3 months ago | |
fix(docs): Precision tools do not have a recompilation scenario Co-authored-by: lyz0328<liyanzhen@huawei.com> # message auto-generated for no-merge-commit merge: !4153 merge master into master fix(docs): Precision tools do not have a recompilation scenario Created-by: lyz0328 Commit-by: lyz0328 Merged-by: cann-robot Description: 1、仓库文档国际化,新增英文readme文件,skill和docs暂不翻译 2、精度工具文档陈旧内容修改:1)删除精度工具重编译步骤 2)更新msaccucmp.py执行命令,明确执行路径、不带版本信息,便于用户在不同版本通用执行 3、webide安装方式的安装界面截图变更 Related Issue: #2345 See merge request: cann/pypto!4153 | 8 days ago | |
Initial commit | 6 months ago | |
feat(build): Compile pypto_impl online support multi user Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4327 merge master into master feat(build): Compile pypto_impl online support multi user Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: ## 变更摘要 此 PR 为 pypto_impl 的在线编译流程增加了多用户场景支持。核心改动集中在 BuildOnlinePyptoImplManager 类中:通过引入 fcntl 文件锁实现跨进程编译协调、新增用户级缓存目录回退机制、以及基于 importlib 的非标准路径动态加载能力,使得不同用户可以在共享安装目录下安全地并发编译和加载 pypto_impl.so,避免了写冲突和重复编译。 ## 主要改动 - **多进程编译协调与文件锁机制**:BuildOnlinePyptoImplManager.ensure_pypto_impl 新增基于 fcntl.flock 的文件锁协调逻辑(_try_acquire_lock、_wait_and_compile),配合 _poll_until 轮询等待,确保同版本 Python 的多进程不会同时执行编译;锁文件在编译完成后被删除,用于跨用户的 os.path.exists() 状态检测。 - **编译产物缓存目录回退**:新增 _compute_cache_dir 方法,通过文件归属用户(st_uid)判断与实际写入验证双重检测,决定编译产物安装到 pkg_dir(共享路径)还是用户级缓存目录(~/.cache/cann/pypto)。当用户对 pkg_dir 无写权限时自动回退,实现多用户环境下的安全编译。 - **跨用户编译等待共享**:新增 _wait_for_pkg_dir_compilation 方法,通过只读检查 pkg_dir 下的 lock 文件是否存在,感知其他用户正在进行的编译,并等待其完成后复用产物,避免重复编译。 - **非标准路径的 .so 动态加载**:新增 _load_from_cache 方法,通过 importlib.util.spec_from_file_location 和 sys.modules 注册,支持从缓存目录等非 pkg_dir 路径加载 pypto_impl.so,同时将模块注册为 pypto.pypto_impl 属性和 sys.modules 条目,确保 from pypto import pypto_impl 可正确访问。 See merge request: cann/pypto!4327 | 5 days ago | |
feat(interface): Support getinputdata for all integral types Co-authored-by: tsungl4<lidongsheng4@huawei.com> # message auto-generated for no-merge-commit merge: !2224 merge refactor/deadcode into master feat(interface): Support getinputdata for all integral types Created-by: tsungl4 Commit-by: tsungl4 Merged-by: cann-robot Description: 1. startArgsSymbolHandlerList of devProg does not used any more 2. Support getinputdata for all integral types Related Issue: [#408](https://gitcode.com/cann/pypto/issues/408) See merge request: cann/pypto!2224 | 2 months ago | |
feat(docs): Update readme for pypto-gym Co-authored-by: songle1<songle1@huawei.com> # message auto-generated for no-merge-commit merge: !4362 merge dev1 into master feat(docs): Update readme for pypto-gym Created-by: songle1 Commit-by: songle1 Merged-by: cann-robot Description: 更新readme,增加pypto-gym仓信息描述 See merge request: cann/pypto!4362 | 1 day ago | |
feat(docs): Update readme for pypto-gym Co-authored-by: songle1<songle1@huawei.com> # message auto-generated for no-merge-commit merge: !4362 merge dev1 into master feat(docs): Update readme for pypto-gym Created-by: songle1 Commit-by: songle1 Merged-by: cann-robot Description: 更新readme,增加pypto-gym仓信息描述 See merge request: cann/pypto!4362 | 1 day ago | |
fix(docs): Precision tools do not have a recompilation scenario Co-authored-by: lyz0328<liyanzhen@huawei.com> # message auto-generated for no-merge-commit merge: !4153 merge master into master fix(docs): Precision tools do not have a recompilation scenario Created-by: lyz0328 Commit-by: lyz0328 Merged-by: cann-robot Description: 1、仓库文档国际化,新增英文readme文件,skill和docs暂不翻译 2、精度工具文档陈旧内容修改:1)删除精度工具重编译步骤 2)更新msaccucmp.py执行命令,明确执行路径、不带版本信息,便于用户在不同版本通用执行 3、webide安装方式的安装界面截图变更 Related Issue: #2345 See merge request: cann/pypto!4153 | 8 days ago | |
fix(docs): Precision tools do not have a recompilation scenario Co-authored-by: lyz0328<liyanzhen@huawei.com> # message auto-generated for no-merge-commit merge: !4153 merge master into master fix(docs): Precision tools do not have a recompilation scenario Created-by: lyz0328 Commit-by: lyz0328 Merged-by: cann-robot Description: 1、仓库文档国际化,新增英文readme文件,skill和docs暂不翻译 2、精度工具文档陈旧内容修改:1)删除精度工具重编译步骤 2)更新msaccucmp.py执行命令,明确执行路径、不带版本信息,便于用户在不同版本通用执行 3、webide安装方式的安装界面截图变更 Related Issue: #2345 See merge request: cann/pypto!4153 | 8 days ago | |
fix(interpreter): Fix tile_fwk_calculator compiler error in g++ 13.3.0 Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !1453 merge interpreter into master fix(interpreter): Fix tile_fwk_calculator compiler error in g++ 13.3.0 Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: Fix tile_fwk_calculator compiler error in g++ 13.3.0 See merge request: cann/pypto!1453 | 3 months ago | |
feat(gcov): Support gcov of python scene Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !3250 merge master into master feat(gcov): Support gcov of python scene Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: 为 Python 前端用例增加 gcov 覆盖率统计能力。 主要修改: - 新增 gen_coverage_config.py 在 CMake POST_BUILD 阶段生成覆盖率配置 - setup.py 写入 build_dir 标记文件供 build_ci.py 定位配置文件 - build_ci.py 新增 py_generate_coverage 函数生成覆盖率报告 - 修复 CMake VERBATIM 问题,处理生成器表达式展开后的分号分隔路径(同时修复 C++ 覆盖率场景) See merge request: cann/pypto!3250 | 1 month ago | |
feat(build): Support packing whl into run change 3 file. Co-authored-by: wuyi2026<wuyi55@huawei.com> # message auto-generated for no-merge-commit merge: !4486 merge master into master feat(build): Support packing whl into run change 3 file. Created-by: wuyi2026 Commit-by: wuyi2026 Merged-by: cann-robot Description: ## 变更摘要 此 PR 主要聚焦于统一 run 和 whl 构建过程中的时间戳( tag_info),并补充命令行帮助信息。核心改动是将 tag_info 的生成逻辑从 BuildCtrl.get_cmake_build_update_env() 方法提升为 BuildCtrl 的实例属性 self.tag_info,在对象初始化时即确定时间戳,从而保证同一构建实例下 run 和 whl 使用一致的构建时间戳。 ## 主要改动 - **tag_info 提升为实例属性**: 在 BuildCtrl.__init__ 中新增 self.tag_info 属性,将原先在 get_cmake_build_update_env() 局部生成的 tagInfo 逻辑前移,使构建时间戳在对象创建时即固定,后续通过 self.tag_info 统一引用。 - **get_cmake_build_update_env() 简化**: 移除原先内嵌的 tag_info 生成与环境变量写入逻辑,改为直接使用 self.tag_info 写入 env.update({"tagInfo": self.tag_info}),消除重复计算。 - **__str__ 增加 TagInfo 输出**: 在 BuildCtrl.__str__ 方法中新增 TagInfo 字段的打印,便于调试时查看当前构建控制参数的标签信息。 - **命令行帮助信息补充**: 在 scripts/package/pypto/scripts/help.info 中为 --uninstall 和 --upgrade 两个子命令分别添加了 --docker-root=<docker root fs directory> 选项说明。 See merge request: cann/pypto!4486 | 1 day ago | |
feat(ir): Add block codegen and backend Co-authored-by: wuzhongxin<wuzhongxin1@huawei.com> # message auto-generated for no-merge-commit merge: !3864 merge master into master feat(ir): Add block codegen and backend Created-by: wuzhongxin Commit-by: wuzhongxin Merged-by: cann-robot Description: Add block codegen and backend See merge request: cann/pypto!3864 | 6 days ago | |
feat(build): Support packing whl into run Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4267 merge master into master feat(build): Support packing whl into run Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: ## 变更摘要 此 PR 为 PyPTO 项目新增了将 Python wheel ( .whl) 包打入 CANN .run 安装包的能力。通过引入 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 特性开关,将构建产物(whl 包及脚本)整合到 CANN 标准的 run 包交付流程中,使 whl 包能随 run 包一起分发和安装。整体改动涵盖 CMake 构建体系扩展、安装/卸载脚本框架搭建、包描述 XML 配置以及 CI 构建入口适配。 ## 主要改动 - **新增 CMake 打包基础设施**:新增 cmake/package.cmake(安装 whl 及脚本到 run 包目录结构)、cmake/prepare.cmake(第三方路径初始化)、cmake/fetch_cann_cmake.cmake(自动下载 CANN 公共 cmake 脚本)、version.cmake(版本声明 9.1.0),均在 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 开关控制下生效;cmake/config.cmake 中移除了部分不再需要的配置(-17 行)。 - **新增 run 包安装/卸载脚本体系**:在 scripts/package/pypto/scripts/ 下新增 10 个 Shell 脚本,包括 install.sh(安装入口)、uninstall.sh(卸载入口)、run_pypto_install.sh(文件拷贝调度及 whl 的 pip install 后处理)、run_pypto_uninstall.sh(卸载流程)、pypto_custom_install.sh/pypto_custom_uninstall.sh(自定义安装/卸载逻辑)、pypto_func.sh(公共函数库,492 行)、ver_check.sh(版本校验)、cleanup.sh 和 help.info,构成了完整的 run 包生命周期管理。 - **新增包描述 XML 配置**:新增 scripts/package/pypto/pypto.xml 作为 run 包的主配置文件(定义包名 pypto、安装脚本路径、版本信息、目录结构等),并在 scripts/package/module/ascend/ 下新增 5 个模块级 XML(EngineeringCommon.xml、EngineeringFiles.xml、PyptoBin.xml、PyptoInc.xml、PyptoSo.xml),用于描述不同子模块的安装路径和权限。 - **CI 构建入口 build_ci.py 适配**:大幅扩展 build_ci.py(+80/-32),使其支持打包 whl 到 run 包的新构建模式,整合新的 CMake 流程和参数配置。 See merge request: cann/pypto!4267 | 7 days ago | |
feat(build): Support py 3.14 notice Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4541 merge master into master feat(build): Support py 3.14 notice Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: ## 变更摘要 此 PR 在 pyproject.toml 的 PyPI 分类器列表中添加了 Python 3.14 的支持声明,表明该项目已兼容 Python 3.14 版本。 ## 主要改动 - **新增 Python 3.14 分类器**: 在 pyproject.toml 的 classifiers 列表中加入 "Programming Language :: Python :: 3.14",使 PyPI 页面能够正确展示该项目对 Python 3.14 的兼容性标识。 See merge request: cann/pypto!4541 | 23 hours ago | |
feat(build): Support packing whl into run Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4267 merge master into master feat(build): Support packing whl into run Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: ## 变更摘要 此 PR 为 PyPTO 项目新增了将 Python wheel ( .whl) 包打入 CANN .run 安装包的能力。通过引入 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 特性开关,将构建产物(whl 包及脚本)整合到 CANN 标准的 run 包交付流程中,使 whl 包能随 run 包一起分发和安装。整体改动涵盖 CMake 构建体系扩展、安装/卸载脚本框架搭建、包描述 XML 配置以及 CI 构建入口适配。 ## 主要改动 - **新增 CMake 打包基础设施**:新增 cmake/package.cmake(安装 whl 及脚本到 run 包目录结构)、cmake/prepare.cmake(第三方路径初始化)、cmake/fetch_cann_cmake.cmake(自动下载 CANN 公共 cmake 脚本)、version.cmake(版本声明 9.1.0),均在 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 开关控制下生效;cmake/config.cmake 中移除了部分不再需要的配置(-17 行)。 - **新增 run 包安装/卸载脚本体系**:在 scripts/package/pypto/scripts/ 下新增 10 个 Shell 脚本,包括 install.sh(安装入口)、uninstall.sh(卸载入口)、run_pypto_install.sh(文件拷贝调度及 whl 的 pip install 后处理)、run_pypto_uninstall.sh(卸载流程)、pypto_custom_install.sh/pypto_custom_uninstall.sh(自定义安装/卸载逻辑)、pypto_func.sh(公共函数库,492 行)、ver_check.sh(版本校验)、cleanup.sh 和 help.info,构成了完整的 run 包生命周期管理。 - **新增包描述 XML 配置**:新增 scripts/package/pypto/pypto.xml 作为 run 包的主配置文件(定义包名 pypto、安装脚本路径、版本信息、目录结构等),并在 scripts/package/module/ascend/ 下新增 5 个模块级 XML(EngineeringCommon.xml、EngineeringFiles.xml、PyptoBin.xml、PyptoInc.xml、PyptoSo.xml),用于描述不同子模块的安装路径和权限。 - **CI 构建入口 build_ci.py 适配**:大幅扩展 build_ci.py(+80/-32),使其支持打包 whl 到 run 包的新构建模式,整合新的 CMake 流程和参数配置。 See merge request: cann/pypto!4267 | 7 days ago | |
feat(build): Support whl into cann pipeline compile Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4471 merge 9.1.0 into master feat(build): Support whl into cann pipeline compile Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: feat(build): Support whl into cann pipeline compile See merge request: cann/pypto!4471 | 1 day ago | |
feat(build): Support packing whl into run Co-authored-by: DCGDDD<yangxu14@huawei.com> # message auto-generated for no-merge-commit merge: !4267 merge master into master feat(build): Support packing whl into run Created-by: DCGDDD Commit-by: DCGDDD Merged-by: cann-robot Description: ## 变更摘要 此 PR 为 PyPTO 项目新增了将 Python wheel ( .whl) 包打入 CANN .run 安装包的能力。通过引入 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 特性开关,将构建产物(whl 包及脚本)整合到 CANN 标准的 run 包交付流程中,使 whl 包能随 run 包一起分发和安装。整体改动涵盖 CMake 构建体系扩展、安装/卸载脚本框架搭建、包描述 XML 配置以及 CI 构建入口适配。 ## 主要改动 - **新增 CMake 打包基础设施**:新增 cmake/package.cmake(安装 whl 及脚本到 run 包目录结构)、cmake/prepare.cmake(第三方路径初始化)、cmake/fetch_cann_cmake.cmake(自动下载 CANN 公共 cmake 脚本)、version.cmake(版本声明 9.1.0),均在 ENABLE_FEATURE_PACKING_WHL_INTO_RUN 开关控制下生效;cmake/config.cmake 中移除了部分不再需要的配置(-17 行)。 - **新增 run 包安装/卸载脚本体系**:在 scripts/package/pypto/scripts/ 下新增 10 个 Shell 脚本,包括 install.sh(安装入口)、uninstall.sh(卸载入口)、run_pypto_install.sh(文件拷贝调度及 whl 的 pip install 后处理)、run_pypto_uninstall.sh(卸载流程)、pypto_custom_install.sh/pypto_custom_uninstall.sh(自定义安装/卸载逻辑)、pypto_func.sh(公共函数库,492 行)、ver_check.sh(版本校验)、cleanup.sh 和 help.info,构成了完整的 run 包生命周期管理。 - **新增包描述 XML 配置**:新增 scripts/package/pypto/pypto.xml 作为 run 包的主配置文件(定义包名 pypto、安装脚本路径、版本信息、目录结构等),并在 scripts/package/module/ascend/ 下新增 5 个模块级 XML(EngineeringCommon.xml、EngineeringFiles.xml、PyptoBin.xml、PyptoInc.xml、PyptoSo.xml),用于描述不同子模块的安装路径和权限。 - **CI 构建入口 build_ci.py 适配**:大幅扩展 build_ci.py(+80/-32),使其支持打包 whl 到 run 包的新构建模式,整合新的 CMake 流程和参数配置。 See merge request: cann/pypto!4267 | 7 days ago |
PyPTO
🔥最新动态
- 2026/04/10:0.2.0版本发布,变更前端表达方法,提升易用性、增强功能及性能,完善各模块能力,优化开发体验与运行效率
- 2026/03/30:v0.1.2版本发布,支持集群训练场景、优化框架编译性能与基础性能、修复已知整网集成问题
- 2026/03/09:v0.1.1版本发布,支持新前端、进一步增加API丰富程度、修复一些已知问题
- 2026/01/06:v0.1.0版本发布,PyPTO项目初始版本
- 2025/12:PyPTO项目首次上线。
🚀概述
PyPTO(发音:pai p-t-o)是一款面向AI加速器的高性能编程框架,旨在简化复杂融合算子乃至整个模型网络的开发流程,同时保持高性能计算能力。该框架采用创新的PTO(Parallel Tensor/Tile Operation)编程范式,以基于Tile的编程模型为核心设计理念,通过多层次的中间表示(IR)系统,将用户通过API构建的AI模型应用从高层次的Tensor图逐步编译成硬件指令,最终生成可在目标平台上高效执行的可执行代码。
本仓已集成代码仓库智能体,点击 徽章,进入其专属页面,开启在线智能代码学习与知识问答体验!
核心特性
- 基于 Tile 的编程模型:所有计算都基于Tile(硬件感知的数据块)进行,充分利用硬件并行计算能力和内存层次结构
- 多层级计算图转换:通过编译Pass将Tensor Graph转换为Tile Graph、Block Graph和Execution Graph,每一步包括一系列Pass优化流程
- 自动化代码生成:编译结果通过CodeGen生成底层PTO虚拟指令代码,再通过编译器将虚拟指令代码编译成目标平台的可执行代码
- MPMD 执行调度:可执行代码被加载到设备侧,通过MPMD(Multiple Program Multiple Data)的方式调度到设备上的处理器核
- 完整的工具链支持:全流程的编译中间产物和运行时性能数据可通过IDE集成的工具链可视化识别性能瓶颈,开发者也可以通过工具链控制编译和调度行为
- Python 友好 API:提供直观的Tensor级别抽象,贴近算法开发者的思维模式,支持动态Shape和符号化编程
- 分层抽象设计:对不同开发者暴露不同抽象层次,算法开发者使用Tensor层次,性能专家使用Tile层次,系统开发者使用Block层次
目标用户
- 算法开发者:主要使用Tensor层次编程,快速实现和验证算法,专注于算法逻辑
- 性能优化专家:可使用Tile或Block层次,进行深度性能调优,以实现极致性能
- 系统开发者:可在Tensor/Tile/Block和PTO虚拟指令集层次上进行三方框架对接或集成,以及工具链开发
⚡️最佳实践样例
PyPTO提供了丰富的示例代码,涵盖从基础操作到复杂模型实现的多个层级。一些最佳实践样例参考:
大模型实现样例
- DeepSeekV3.2 SFA -稀疏Flash Attention量化实现
- DeepSeekV3.2 MLA-PROLOG -MLA Indexer Prolog量化实现
- GLM V4.5 Attention -GLM注意力机制实现
- GLM V4.5 ExpertsSelector -GLM专家选择器实现
学习路径
在 examples目录下,我们规划了多个层级的样例:
- beginner/:基础操作示例,帮助初学者快速上手PyPTO编程
- intermediate/:中级示例,包括自定义操作、神经网络模块等
- advanced/:高级示例,包括复杂模式和多函数组合
pypto-gym 样例仓
在 pypto-gym样例仓,我们提供了融合算子开发样例和大模型适配样例,供开发者学习、复用与对比
这些示例可以帮助开发者学习如何编写PyPTO算子,从简单的Tensor操作到复杂的模型网络实现,以便快速实现移植和部署
⚡️快速入门
若您希望快速体验PyPTO的使用和开发过程,请访问如下文档获取简易教程。
- 环境部署:介绍项目基础环境的搭建,包括软件包和第三方依赖的获取和安装。
- 编译安装:环境部署后,介绍如何快速获取或编译PyPTO软件包并安装。
- 样例运行:安装PyPTO软件包后,介绍如何快速实现样例运行。
📖文档资源
若您希望深入体验项目功能并修改源码,请访问如下文档获取详细教程。
🔍目录结构
关键目录如下:
├── docs/ # 文档资源
│ └── zh/
│ ├── api/ # API参考文档
│ ├── contribute/ # 贡献指南文档
│ └── tutorials/ # PyPTO编程指南
│
├── examples/ # 示例代码
│ ├── 01_beginner/ # 初级示例
│ ├── 02_intermediate/ # 中级示例
│ └── 03_advanced/ # 高级示例
│
├── models/ # 模型实现示例
│
├── python/ # Python源码
│ ├── pypto/ # Python包源码根目录
│ ├── src/ # pybind11源码根目录
│ └── tests/ # Python测试用例源码(UTest, STest)
│
├── framework/ # C++源码根目录
│ ├── include/ # C++对外头文件
│ ├── src/ # C++源码
│ │ ├── codegen/ # 代码生成模块
│ │ ├── passes/ # 编译Pass模块
│ │ └── ...
│ └── tests/ # C++测试用例源码
│
├── tools/ # 工具脚本
│
├── cmake/ # 构建所需的CMake公共配置及脚本
├── build_ci.py # CI执行构建、执行UTest、执行STest辅助脚本
├── CMakeLists.txt # 顶层CMakeLists.txt,定义所有对外公开编译开关
├── pyproject.toml # Python编译工具配置文件
├── LICENSE # 许可证文件
└── setup.py # Python编译工具脚本文件(setuptools)
📝相关信息
联系我们
- 问题反馈:通过GitCode【Issues】提交问题
- 功能建议:通过GitCode【讨论】参与交流
- 技术支持:参考文档或提交Issue
注意:本文档会持续更新,请关注最新版本。