| Files | Last commit | Last update |
|---|---|---|
[L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !34 merge fix-scripts-exec-bit into master [L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 描述 scripts/ 下 4 个脚本在 git 里是 **100644(无可执行位)**,但它们既被文档用裸命令 ./scripts/x.sh 指引(20 处),也被**仓内自己的脚本当命令直接调用**(scripts/run_ci.sh:23 调 build_wheel.sh、:27 调 run_test.sh、scripts/run_tests.sh:5 用 exec 调 run_test.sh)。内核在 execve 阶段就返回 EACCES,因此这些入口现在必然失败: $ OPS_TILELANG_CI_TASK=wheel bash scripts/run_ci.sh + run_wheel + /private/tmp/tk_repro/scripts/build_wheel.sh scripts/run_ci.sh: line 23: /private/tmp/tk_repro/scripts/build_wheel.sh: Permission denied (退出码 1) $ OPS_TILELANG_CI_TASK=npu bash scripts/run_ci.sh scripts/run_ci.sh: line 27: /private/tmp/tk_repro/scripts/run_test.sh: Permission denied (退出码 1) $ ./scripts/build_wheel.sh permission denied (退出码 126) (复现方式:把仓库 scripts/ 原样取出、模式按 git 里的 100644 设好,脚本内容一字节未改。) 本 PR **只补可执行位**,不动任何文件字节:git diff --cached --raw 4 条的前后 blob 指针逐条相同(原文见下面「测试」段),/pulls/<本 PR>/files 的 additions/deletions 全为 0。 清单: | 文件 | 文档裸引用 | 仓内命令位调用 | | --- | --- | --- | | scripts/build_wheel.sh | README.md:66、README_en.md:66 | scripts/run_ci.sh:23 | | scripts/run_test.sh | README.md:106、README_en.md:106、tests/README.md:79/80、docs/adding_an_operator.md:232 | scripts/run_ci.sh:27、scripts/run_tests.sh:5(exec) | | scripts/run_ci.sh | README.md:118-125 与 README_en.md 同 12 处(OPS_TILELANG_CI_TASK=<…> ./scripts/run_ci.sh) | — | | scripts/check.sh | docs/adding_an_operator.md:212 | — | ## 为什么是「补 mode」而不是「把文档改成 bash」 1. scripts/run_ci.sh 与 scripts/run_tests.sh **在脚本内部**就是用命令位调用它们的("${REPO_ROOT}/scripts/build_wheel.sh"),改文档救不了这条路径,只有可执行位能让仓内逻辑跑通。 2. 本仓已经有「需要 bash 前缀就明确写 bash」的对照口径:.gitcode/scripts/ut.sh 同样是 100644,但在 .gitcode/workflows/nightly.yml:26、.gitcode/workflows/ops-tlielang_actions.yml:92 以及它自己的用法注释(:16/:17/:24)里全部写成 bash …/ut.sh。也就是说:bash 前缀 = 不要求执行位,裸 ./ = 要求执行位。scripts/ 这 4 个的文档写法全是裸 ./。 3. 因此我**没有**改 .gitcode/scripts/ut.sh(它的引用写法与本修复无关),也没有改 scripts/run_tests.sh(全仓 0 处引用它,git grep -n scripts/ -- '*.md' '*.sh' '*.yml' 可核);如需一并补齐,我再加一行即可。 ## 关联的Issue 见下方自动追加的 Issue 链接(含逐步复现命令与真实退出码)。 ## 测试 $ git diff --cached --raw 569aff10c2e6 :100644 100755 2060dde 2060dde M scripts/build_wheel.sh :100644 100755 ab52666 ab52666 M scripts/check.sh :100644 100755 e68df2d e68df2d M scripts/run_ci.sh :100644 100755 113053a 113053a M scripts/run_test.sh `` 4 条全部 100644 -> 100755、前后 blob 指针相同(我在提交流程里加了断言:只要 blob 指针不等、或模式不是 644→755、或条数不等于 4,就直接中止不推)。补位后同一入口复跑:Permission denied 消失,set -x` 第一行已进入脚本自身逻辑(后续失败是因为脱离仓库环境缺 pytest/NPU 依赖,与本改动无关)。 关联 Issue: #6 See merge request: cann/ops-tilelang!34 | 30 days ago | |
[L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !34 merge fix-scripts-exec-bit into master [L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 描述 scripts/ 下 4 个脚本在 git 里是 **100644(无可执行位)**,但它们既被文档用裸命令 ./scripts/x.sh 指引(20 处),也被**仓内自己的脚本当命令直接调用**(scripts/run_ci.sh:23 调 build_wheel.sh、:27 调 run_test.sh、scripts/run_tests.sh:5 用 exec 调 run_test.sh)。内核在 execve 阶段就返回 EACCES,因此这些入口现在必然失败: $ OPS_TILELANG_CI_TASK=wheel bash scripts/run_ci.sh + run_wheel + /private/tmp/tk_repro/scripts/build_wheel.sh scripts/run_ci.sh: line 23: /private/tmp/tk_repro/scripts/build_wheel.sh: Permission denied (退出码 1) $ OPS_TILELANG_CI_TASK=npu bash scripts/run_ci.sh scripts/run_ci.sh: line 27: /private/tmp/tk_repro/scripts/run_test.sh: Permission denied (退出码 1) $ ./scripts/build_wheel.sh permission denied (退出码 126) (复现方式:把仓库 scripts/ 原样取出、模式按 git 里的 100644 设好,脚本内容一字节未改。) 本 PR **只补可执行位**,不动任何文件字节:git diff --cached --raw 4 条的前后 blob 指针逐条相同(原文见下面「测试」段),/pulls/<本 PR>/files 的 additions/deletions 全为 0。 清单: | 文件 | 文档裸引用 | 仓内命令位调用 | | --- | --- | --- | | scripts/build_wheel.sh | README.md:66、README_en.md:66 | scripts/run_ci.sh:23 | | scripts/run_test.sh | README.md:106、README_en.md:106、tests/README.md:79/80、docs/adding_an_operator.md:232 | scripts/run_ci.sh:27、scripts/run_tests.sh:5(exec) | | scripts/run_ci.sh | README.md:118-125 与 README_en.md 同 12 处(OPS_TILELANG_CI_TASK=<…> ./scripts/run_ci.sh) | — | | scripts/check.sh | docs/adding_an_operator.md:212 | — | ## 为什么是「补 mode」而不是「把文档改成 bash」 1. scripts/run_ci.sh 与 scripts/run_tests.sh **在脚本内部**就是用命令位调用它们的("${REPO_ROOT}/scripts/build_wheel.sh"),改文档救不了这条路径,只有可执行位能让仓内逻辑跑通。 2. 本仓已经有「需要 bash 前缀就明确写 bash」的对照口径:.gitcode/scripts/ut.sh 同样是 100644,但在 .gitcode/workflows/nightly.yml:26、.gitcode/workflows/ops-tlielang_actions.yml:92 以及它自己的用法注释(:16/:17/:24)里全部写成 bash …/ut.sh。也就是说:bash 前缀 = 不要求执行位,裸 ./ = 要求执行位。scripts/ 这 4 个的文档写法全是裸 ./。 3. 因此我**没有**改 .gitcode/scripts/ut.sh(它的引用写法与本修复无关),也没有改 scripts/run_tests.sh(全仓 0 处引用它,git grep -n scripts/ -- '*.md' '*.sh' '*.yml' 可核);如需一并补齐,我再加一行即可。 ## 关联的Issue 见下方自动追加的 Issue 链接(含逐步复现命令与真实退出码)。 ## 测试 $ git diff --cached --raw 569aff10c2e6 :100644 100755 2060dde 2060dde M scripts/build_wheel.sh :100644 100755 ab52666 ab52666 M scripts/check.sh :100644 100755 e68df2d e68df2d M scripts/run_ci.sh :100644 100755 113053a 113053a M scripts/run_test.sh `` 4 条全部 100644 -> 100755、前后 blob 指针相同(我在提交流程里加了断言:只要 blob 指针不等、或模式不是 644→755、或条数不等于 4,就直接中止不推)。补位后同一入口复跑:Permission denied 消失,set -x` 第一行已进入脚本自身逻辑(后续失败是因为脱离仓库环境缺 pytest/NPU 依赖,与本改动无关)。 关联 Issue: #6 See merge request: cann/ops-tilelang!34 | 30 days ago | |
[L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !34 merge fix-scripts-exec-bit into master [L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 描述 scripts/ 下 4 个脚本在 git 里是 **100644(无可执行位)**,但它们既被文档用裸命令 ./scripts/x.sh 指引(20 处),也被**仓内自己的脚本当命令直接调用**(scripts/run_ci.sh:23 调 build_wheel.sh、:27 调 run_test.sh、scripts/run_tests.sh:5 用 exec 调 run_test.sh)。内核在 execve 阶段就返回 EACCES,因此这些入口现在必然失败: $ OPS_TILELANG_CI_TASK=wheel bash scripts/run_ci.sh + run_wheel + /private/tmp/tk_repro/scripts/build_wheel.sh scripts/run_ci.sh: line 23: /private/tmp/tk_repro/scripts/build_wheel.sh: Permission denied (退出码 1) $ OPS_TILELANG_CI_TASK=npu bash scripts/run_ci.sh scripts/run_ci.sh: line 27: /private/tmp/tk_repro/scripts/run_test.sh: Permission denied (退出码 1) $ ./scripts/build_wheel.sh permission denied (退出码 126) (复现方式:把仓库 scripts/ 原样取出、模式按 git 里的 100644 设好,脚本内容一字节未改。) 本 PR **只补可执行位**,不动任何文件字节:git diff --cached --raw 4 条的前后 blob 指针逐条相同(原文见下面「测试」段),/pulls/<本 PR>/files 的 additions/deletions 全为 0。 清单: | 文件 | 文档裸引用 | 仓内命令位调用 | | --- | --- | --- | | scripts/build_wheel.sh | README.md:66、README_en.md:66 | scripts/run_ci.sh:23 | | scripts/run_test.sh | README.md:106、README_en.md:106、tests/README.md:79/80、docs/adding_an_operator.md:232 | scripts/run_ci.sh:27、scripts/run_tests.sh:5(exec) | | scripts/run_ci.sh | README.md:118-125 与 README_en.md 同 12 处(OPS_TILELANG_CI_TASK=<…> ./scripts/run_ci.sh) | — | | scripts/check.sh | docs/adding_an_operator.md:212 | — | ## 为什么是「补 mode」而不是「把文档改成 bash」 1. scripts/run_ci.sh 与 scripts/run_tests.sh **在脚本内部**就是用命令位调用它们的("${REPO_ROOT}/scripts/build_wheel.sh"),改文档救不了这条路径,只有可执行位能让仓内逻辑跑通。 2. 本仓已经有「需要 bash 前缀就明确写 bash」的对照口径:.gitcode/scripts/ut.sh 同样是 100644,但在 .gitcode/workflows/nightly.yml:26、.gitcode/workflows/ops-tlielang_actions.yml:92 以及它自己的用法注释(:16/:17/:24)里全部写成 bash …/ut.sh。也就是说:bash 前缀 = 不要求执行位,裸 ./ = 要求执行位。scripts/ 这 4 个的文档写法全是裸 ./。 3. 因此我**没有**改 .gitcode/scripts/ut.sh(它的引用写法与本修复无关),也没有改 scripts/run_tests.sh(全仓 0 处引用它,git grep -n scripts/ -- '*.md' '*.sh' '*.yml' 可核);如需一并补齐,我再加一行即可。 ## 关联的Issue 见下方自动追加的 Issue 链接(含逐步复现命令与真实退出码)。 ## 测试 $ git diff --cached --raw 569aff10c2e6 :100644 100755 2060dde 2060dde M scripts/build_wheel.sh :100644 100755 ab52666 ab52666 M scripts/check.sh :100644 100755 e68df2d e68df2d M scripts/run_ci.sh :100644 100755 113053a 113053a M scripts/run_test.sh `` 4 条全部 100644 -> 100755、前后 blob 指针相同(我在提交流程里加了断言:只要 blob 指针不等、或模式不是 644→755、或条数不等于 4,就直接中止不推)。补位后同一入口复跑:Permission denied 消失,set -x` 第一行已进入脚本自身逻辑(后续失败是因为脱离仓库环境缺 pytest/NPU 依赖,与本改动无关)。 关联 Issue: #6 See merge request: cann/ops-tilelang!34 | 30 days ago | |
[L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Co-authored-by: eieiei<3901796952@qq.com> # message auto-generated for no-merge-commit merge: !34 merge fix-scripts-exec-bit into master [L1] fix: scripts/ 下 4 个被文档与 run_ci.sh 当命令直接调用的脚本没有可执行位(100644)→ Permission denied;只补 mode,不改内容 Created-by: wsnidie1 Commit-by: eieiei Merged-by: cann-robot Description: ## 描述 scripts/ 下 4 个脚本在 git 里是 **100644(无可执行位)**,但它们既被文档用裸命令 ./scripts/x.sh 指引(20 处),也被**仓内自己的脚本当命令直接调用**(scripts/run_ci.sh:23 调 build_wheel.sh、:27 调 run_test.sh、scripts/run_tests.sh:5 用 exec 调 run_test.sh)。内核在 execve 阶段就返回 EACCES,因此这些入口现在必然失败: $ OPS_TILELANG_CI_TASK=wheel bash scripts/run_ci.sh + run_wheel + /private/tmp/tk_repro/scripts/build_wheel.sh scripts/run_ci.sh: line 23: /private/tmp/tk_repro/scripts/build_wheel.sh: Permission denied (退出码 1) $ OPS_TILELANG_CI_TASK=npu bash scripts/run_ci.sh scripts/run_ci.sh: line 27: /private/tmp/tk_repro/scripts/run_test.sh: Permission denied (退出码 1) $ ./scripts/build_wheel.sh permission denied (退出码 126) (复现方式:把仓库 scripts/ 原样取出、模式按 git 里的 100644 设好,脚本内容一字节未改。) 本 PR **只补可执行位**,不动任何文件字节:git diff --cached --raw 4 条的前后 blob 指针逐条相同(原文见下面「测试」段),/pulls/<本 PR>/files 的 additions/deletions 全为 0。 清单: | 文件 | 文档裸引用 | 仓内命令位调用 | | --- | --- | --- | | scripts/build_wheel.sh | README.md:66、README_en.md:66 | scripts/run_ci.sh:23 | | scripts/run_test.sh | README.md:106、README_en.md:106、tests/README.md:79/80、docs/adding_an_operator.md:232 | scripts/run_ci.sh:27、scripts/run_tests.sh:5(exec) | | scripts/run_ci.sh | README.md:118-125 与 README_en.md 同 12 处(OPS_TILELANG_CI_TASK=<…> ./scripts/run_ci.sh) | — | | scripts/check.sh | docs/adding_an_operator.md:212 | — | ## 为什么是「补 mode」而不是「把文档改成 bash」 1. scripts/run_ci.sh 与 scripts/run_tests.sh **在脚本内部**就是用命令位调用它们的("${REPO_ROOT}/scripts/build_wheel.sh"),改文档救不了这条路径,只有可执行位能让仓内逻辑跑通。 2. 本仓已经有「需要 bash 前缀就明确写 bash」的对照口径:.gitcode/scripts/ut.sh 同样是 100644,但在 .gitcode/workflows/nightly.yml:26、.gitcode/workflows/ops-tlielang_actions.yml:92 以及它自己的用法注释(:16/:17/:24)里全部写成 bash …/ut.sh。也就是说:bash 前缀 = 不要求执行位,裸 ./ = 要求执行位。scripts/ 这 4 个的文档写法全是裸 ./。 3. 因此我**没有**改 .gitcode/scripts/ut.sh(它的引用写法与本修复无关),也没有改 scripts/run_tests.sh(全仓 0 处引用它,git grep -n scripts/ -- '*.md' '*.sh' '*.yml' 可核);如需一并补齐,我再加一行即可。 ## 关联的Issue 见下方自动追加的 Issue 链接(含逐步复现命令与真实退出码)。 ## 测试 $ git diff --cached --raw 569aff10c2e6 :100644 100755 2060dde 2060dde M scripts/build_wheel.sh :100644 100755 ab52666 ab52666 M scripts/check.sh :100644 100755 e68df2d e68df2d M scripts/run_ci.sh :100644 100755 113053a 113053a M scripts/run_test.sh `` 4 条全部 100644 -> 100755、前后 blob 指针相同(我在提交流程里加了断言:只要 blob 指针不等、或模式不是 644→755、或条数不等于 4,就直接中止不推)。补位后同一入口复跑:Permission denied 消失,set -x` 第一行已进入脚本自身逻辑(后续失败是因为脱离仓库环境缺 pytest/NPU 依赖,与本改动无关)。 关联 Issue: #6 See merge request: cann/ops-tilelang!34 | 30 days ago | |
本 PR 初始化 ops-tilelang 高性能算子仓,为 CANN 社区提供基于 TileLang DSL 的 Ascend 算子开发、测试、性能回归和 wheel 发布基础框架。 项目采用运行时接口与硬件 kernel 分层设计,当前仅支持 Ascend A5 及以上架构。 Co-authored-by: ChaoyangJi<jichaoyang@huawei.com> # message auto-generated for no-merge-commit merge: !2 merge master into master add ops-tilelang init framework Created-by: ChaoyangJi Commit-by: ChaoyangJi Merged-by: cann-robot Description: <!-- 感谢您的合入申请! --> ### 当前PR是否有AI参与: 无。 ### PR功能描述 / 为什么需要这个合入**: <!-- 本 PR 做了什么,为什么需要 / What does this PR do and why --> 本 PR 初始化 ops-tilelang 高性能算子仓,为 CANN 社区提供基于 TileLang DSL 的 Ascend 算子开发、测试、性能回归和 wheel 发布基础框架。 项目采用运行时接口与硬件 kernel 分层设计,当前仅支持 Ascend A5 及以上架构。 主要改动 1. 基础工程框架 - 建立 src/ layout Python 工程。 - 发行包名为 ops-tilelang,Python 命名空间为 cann_ops_tilelang。 - 使用 setuptools、setuptools-scm 构建 wheel。 - 支持 Python 3.10、3.11 和 3.12。 - 运行时依赖 torch>=2.1 和 tilelang>=0.1.9。 - torch_npu、CANN Toolkit 和驱动由目标环境提供。 - License 使用 MIT。 - 包导入阶段不初始化 NPU、不编译 kernel、不申请设备内存。 2. Engram 算子 首批提供四个公开 API: - engram_fused_weight - BF16 权重逐元素融合,使用 FP32 输出。 - engram_gate_fwd - 支持动态 token 数。 - 输出 gate 结果及反向所需统计量。 - engram_gate_bwd - 融合计算输入梯度、KV 梯度和分片权重梯度。 - engram_grad_w_reduce - 归并分片权重梯度并原地累加两份 FP32 权重梯度。 算子采用: - PyTorch wrapper 与 *_kernel.py 分层。 - tilelang.jit kernel generator。 - GM/UB 分块、SimdVF、Persistent 调度及多级流水。 - 明确的 device、dtype、shape、stride、contiguous 和输出缓冲区校验。 - 无 CPU/CUDA 静默回退。 3. 测试与性能回归框架 参考 TileKernels-Nightly 迁移并适配完整 pytest 能力: - OPS_TILELANG_TEST_LEVEL=0|1|2 分级参数生成。 - 基于 --seed 和 node ID 的确定性随机数。 - PyTorch reference 数值验证。 - NPU 峰值显存画像和 large_npu_mem 自动分类。 - A5 benchmark JSONL 基线及回归检测。 - -K 参数表达式筛选。 - benchmark improvement 几何平均汇总。 - xdist 多卡绑定及全局 fail-fast。 - TileLang 编译告警汇总。 - 普通显存与大/未知显存测试分阶段执行。 4. 构建、CI 与脚本 新增统一执行入口: - scripts/check.sh - scripts/build_wheel.sh - scripts/run_test.sh - scripts/run_tests.sh - scripts/run_ci.sh scripts/run_ci.sh 支持: - lint - cpu - wheel - npu - benchmark - all 新增 GitHub workflows: - Ruff lint 检查。 - Wheel 构建、安装及元数据验证。 5. 文档 新增并完善: - README:安装、使用、测试、CI 和硬件支持范围。 - 架构说明。 - 完整的新增算子开发流程。 - pytest 插件、benchmark 和显存画像维护指南。 - CONTRIBUTING 贡献规范。 - MIT License。 ### 该PR关联的issue 无。 ### 希望检视人员了解: ops-tilelang的框架代码是否合理和完善。 ## 改动类型 / Change Type - [ ] Bug 修复 / Bug Fix - [ √] 新功能 / New Feature - [ ] 性能优化 / Performance - [ ] 代码重构 / Refactoring - [ ] 文档更新 / Documentation - [ ] 测试相关 / Test - [ ] 其它 / Other ## 测试信息 / Testing <!-- 简要测试说明或关键结果 / Brief test description or key results --> - [√] 单元测试通过 / UT passed - [ √] 集成测试通过 / ST passed - [ √] 人工验证通过 / Manual verified ## 检查清单 / Checklist - [√] 代码符合规范 / Code follows style guide - [ √] 测试添加并通过 / Tests added and passed - [ √] 文档已更新 / Docs updated if needed - [√ ] 无硬编码敏感信息 / No secrets hardcoded - [ √] 提交信息符合规范 / Commit message follows convention See merge request: cann/ops-tilelang!2 | 1 month ago |
| Files | Last commit | Last update |
|---|---|---|
| 30 days ago | ||
| 30 days ago | ||
| 30 days ago | ||
| 30 days ago | ||
| 1 month ago |