| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
保持third_party下目录结构和ops-tensor一致 Co-authored-by: cry<chenruiyu4@huawei.com> # message auto-generated for no-merge-commit merge: !324 merge change_directory into master 保持third_party下目录结构和ops-tensor一致 Created-by: Crrryyyy Commit-by: cry Merged-by: cann-robot Description: ## 描述 - 将 third_party/tensor_api 子模块路径调整为 third_party/ops-tensor,使 third_party 下目录结构与 ops-tensor 项目名称保持一致。 - 同步更新 .gitmodules、README 以及样例/CMake 中对旧 tensor_api 路径的引用。 - 调整相关 include 与依赖路径,避免目录改名后仍引用旧路径导致构建失败。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/199 ## 测试 - cmake --build build --parallel 编译无误,执行涉及修改目录下的用例无误 ## 文档更新 - 更新 README.md 中第三方依赖目录相关说明。 ## 类型标签 - [ ] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [x] 文档更新 - [x] 其他,请描述:第三方依赖目录结构调整 See merge request: cann/cann-samples!324 | 1 个月前 | |
删除冗余头文件,issue110 Co-authored-by: chen-shuai<chenshuai96@huawei.com> # message auto-generated for no-merge-commit merge: !242 merge fix_issue110 into master 删除冗余头文件,替换自制工具类里的GET接口,直接使用TensorApi提供的AscendC::Te::Get功能 Created-by: chen-shuai Commit-by: chen-shuai Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 修复 issue110,适配最新 Tensor API 接口,清理 matmul / grouped matmul 样例中重复维护的本地 tuple/layout 工具代码。 - 更新 third_party/tensor_api 准备流程:每次编译时,会拉取tensor仓master最新代码 - 增加 git submodule sync --recursive third_party/tensor_api - 使用 git submodule update --init --recursive --remote third_party/tensor_api - 删除本地重复工具头文件: - integral_constant.h - tuple_utils.h - 将自定义 tuple 访问方式替换为 Tensor API / AscendC 标准接口: - Get<IDX>(...) -> AscendC::Te::Get<IDX>(...) - tuple 写入场景改为 AscendC::Std::get<IDX>(...) - 重构 layout_utils.h:删除layout_utils.h里的高阶API依赖 - 移除本地 layout::RowMajor / layout::ColumnMajor - 改用 Tensor API layout pattern: - NDExtLayoutPtn - DNExtLayoutPtn - NZLayoutPtn - ZNLayoutPtn - 保留并重写 IsTrans / IsWeightNz 判断逻辑 - 调整相关 matmul recipes、matmul tutorials、grouped matmul recipes 中的 include 和类型工具使用方式。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/cann-samples/issues/110 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> matmul recipes、matmul tutorials、grouped matmul recipes 下的sample 精度pass ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> 不涉及 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!242 | 3 个月前 | |
关闭torch自动加载后端组件(torch_npu等组件),修复只安装toolkit包报错找不到libhccl.so问题 Co-authored-by: chen-shuai<chenshuai96@huawei.com> # message auto-generated for no-merge-commit merge: !233 merge disable_TORCH_DEVICE_BACKEND_AUTOLOAD into master 关闭torch自动加载后端组件(torch_npu等组件),修复只安装toolkit包报错找不到libhccl.so问题 Created-by: chen-shuai Commit-by: chen-shuai Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> 解决的问题:使用 PyTorch 生成 golden 数据或校验结果的样例脚本只依赖torch cpu,import torch后会自动加载torch_npu。torch_npu依赖了ops包的libhccl.so,导致只装toolkit包直接运行会报错找不到libhccl.so。关闭torch后端组件自动加载修复问题 主要改动: 给使用 PyTorch 生成 golden 数据或校验结果的样例脚本,统一关闭 PyTorch 设备后端自动加载。 在 15 个 Python 脚本中,在 import torch 或函数内 import torch 之前增加: os.environ["TORCH_DEVICE_BACKEND_AUTOLOAD"] = "0" 部分原本没有 import os 的 verify_result.py 也同步补了: import os 主要覆盖这些样例: Samples/1_Features/memory_optimization/scale_cache Samples/2_Performance/matmul_story Samples/2_Performance/grouped_matmul_story 涉及脚本类型包括: gen_data.py verify_result.py 目的 这些脚本只是在 CPU 侧用 torch 做数据生成、矩阵乘、bf16 视图转换或结果校验,不需要自动加载 NPU/设备后端组件。 只影响 Python 脚本导入 torch 时的后端自动加载行为。 环境兼容性修复,让 matmul / grouped matmul / scale cache 相关 Python 数据生成和校验脚本在导入 PyTorch 时不自动加载设备后端。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> https://gitcode.com/cann/cann-samples/issues/153 ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> 测试脚本是否正常运行,不影响精度 ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> NA ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!233 | 3 个月前 | |
feat(matmul_story): add one-click run script with auto target recommendation Co-authored-by: yangyang016<yangyang306@hisilicon.com> # message auto-generated for no-merge-commit merge: !100 merge rename_swat into master feat(matmul_story): add one-click run script with auto target recommendation Created-by: yangyang016 Commit-by: yangyang016 Merged-by: cann-robot Description: ## 描述 <!--在这里详细描述你的改动,包括改动的原因和所采取的方法。--> - 新增 run.sh,统一串联构建、安装、数据生成、算子执行与结果校验流程。 - 构建阶段复用仓库 .ci/build.sh,并提供参数化开关:--target、--run-recommend、--skip-build。 - 当未传 --target 时,自动调用 quant_matmul_mxfp4_algorithm_recommend.py --print-target 选择推荐可执行文件。 - 改造推荐脚本,新增机器可读输出模式 --print-target。 - 更新 README.md:统一使用 run.sh 与参数方式,补充 --help 用法。 ## 关联的Issue <!-- 如果这个PR是为了解决特定的Issue,请在这里提供Issue链接。--> <!-- 如果这个PR是为了解决特定的问题单,请在这里描述问题单单号。--> ## 测试 <!--描述进行了哪些测试来验证你的改动。包括但不限于二级冒烟、算子泛化等。--> ## 文档更新 <!--如果这个PR包含文档的更新,请在这里指出。例如:更新了README.md文件。--> ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!100 | 4 个月前 | |
支持通过 NPU_ARCH 配置样例编译架构 Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !208 merge codex/npu-arch-simplify into master 支持通过 NPU_ARCH 配置样例编译架构 Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 描述 本 PR 简化 NPU_ARCH 配置方式: - 根 CMake 增加 NPU_ARCH 必填和合法性校验,支持 dav-3510、dav-2201。 - 各 sample 入口 CMake 本地声明支持架构,不支持当前 NPU_ARCH 时在配置阶段跳过,不创建 target、不参与编译和安装。 - 将 AscendC 编译参数中的固定 --npu-arch=dav-3510 改为 --npu-arch=${NPU_ARCH}。 - 更新 CI 构建脚本,支持通过参数选择目标 NPU 架构: - 编译 Ascend950 时使用 dav-3510:bash .ci/build.sh dav-3510。 - 编译 Ascend910B/C 时使用 dav-2201:bash .ci/build.sh dav-2201。 - 未传参数时默认使用 dav-3510,即 bash .ci/build.sh 等价于 bash .ci/build.sh dav-3510,兼容现有 CI 平台调用。 - 同步更新 README、CONTRIBUTING 和各样例 README / run.sh 中的构建命令;项目 README 明确说明 Ascend950 对应 dav-3510、Ascend910B/C 对应 dav-2201,并以 Ascend950 为例给出 CMake 配置命令。 ## 关联的Issue - https://gitcode.com/cann/cann-samples/issues/133 - https://gitcode.com/cann/cann-samples/issues/125 ## 测试 - 本地静态检查:确认非 third_party 文档中不再存在未带 NPU_ARCH 的根工程 cmake 配置示例,确认 CMake 中不再存在 --npu-arch=dav-3510。 - 本地脚本检查:bash -n .ci/build.sh 及相关 run.sh,git diff --check。 - 远端 Ascend950:/home/zhangzijie/workspace/cann-samples-fork: - cmake -S . -B build:按预期报缺少 NPU_ARCH,并提示示例命令。 - cmake -S . -B build -DNPU_ARCH=invalid:按预期报非法 NPU_ARCH。 - source /home/zhangzijie/Ascend/ascend-toolkit/set_env.sh && cmake -S . -B build -DNPU_ARCH=dav-3510 && cmake --build build --parallel:通过。 - source /home/zhangzijie/Ascend/ascend-toolkit/set_env.sh && cmake -S . -B build_dav2201_test -DNPU_ARCH=dav-2201 && cmake --build build_dav2201_test --parallel && cmake --build build_dav2201_test --target help:通过,仅 vector_add 生效。 - ./build/Samples/0_Introduction/vector_add/vector_add:通过,输出 Vector add completed successfully!。 - ./build/Samples/0_Introduction/matmul/matmul 100 50 200:通过,输出 matmul run successfully!。 - source /home/zhangzijie/Ascend/ascend-toolkit/set_env.sh && bash .ci/build.sh:通过,默认 dav-3510,生成并校验 build_out_dav-3510_21ae5b4.zip。 - source /home/zhangzijie/Ascend/ascend-toolkit/set_env.sh && bash .ci/build.sh dav-3510:通过,生成并校验 build_out_dav-3510_21ae5b4.zip。 - source /home/zhangzijie/Ascend/ascend-toolkit/set_env.sh && bash .ci/build.sh dav-2201:通过,仅打包 vector_add,生成并校验 build_out_dav-2201_21ae5b4.zip。 ## 文档更新 更新 README.md、CONTRIBUTING.md、相关 Samples README 和调用 .ci/build.sh 的 run.sh。 ## 类型标签 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [x] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!208 | 3 个月前 |
MXFP4矩阵乘分步教程
概述
本目录提供从基础实现到高性能实现的分步教程,覆盖 0_naive 到 7_fullload 共 8 个 Step。
教程可执行文件参数统一为:
<program> m k n
m:矩阵 A 的行数k:矩阵 A 的列数,同时也是矩阵 B 的行数(要求为偶数)n:矩阵 B 的列数
Step 列表
matmul_tutorial_mxfp4_base(Step 0)matmul_tutorial_mxfp4_pingpong(Step 1)matmul_tutorial_mxfp4_swat(Step 2)matmul_tutorial_mxfp4_swat_balance(Step 3)matmul_tutorial_mxfp4_swat_unitflag(Step 4)matmul_tutorial_mxfp4_half1l1_ping_halfl1_pong(Step 5)matmul_tutorial_mxfp4_memery_access_coalescing(Step 6)matmul_tutorial_mxfp4_a_fullload(Step 7)
一键运行(推荐)
仓库提供 scripts/run.sh,可一键串联 构建 → 数据生成 → 算子执行 → 结果校验 全流程。
建议先进入 matmul_tutorials/ 目录再执行:
cd Samples/2_Performance/matmul_story/matmul_tutorials
# 指定 Step 运行
bash scripts/run.sh --target matmul_tutorial_mxfp4_swat 256 256 256
# 自动构建 + 未指定 target 时运行 Step 0(matmul_tutorial_mxfp4_base)
bash scripts/run.sh 256 256 256
# 跳过构建阶段
bash scripts/run.sh --target matmul_tutorial_mxfp4_swat_balance --skip-build 256 256 256
# 查看完整帮助
bash scripts/run.sh --help
run.sh 参数说明
| 参数 | 说明 |
|---|---|
m k n |
矩阵维度(必填)。k 须为偶数。 |
--target <name> |
指定要运行的教程可执行文件名;省略时默认 Step 0(matmul_tutorial_mxfp4_base) |
--skip-build |
跳过构建/安装阶段,复用已有 build_out。 |
-h, --help |
显示帮助信息。 |
手动构建与运行
如需手动控制各步骤,在仓库根目录执行编译安装,并进入教程安装目录:
cmake -S . -B build -DNPU_ARCH=dav-3510
cmake --build build --parallel
cmake --install build --prefix ./build_out
cd build_out/2_Performance/matmul_story/matmul_tutorials
随后按以下流程执行:
# 1) 生成输入数据与 CPU golden
python3 gen_data.py 256 256 256
# 2) 运行某个 Step(示例:Step 2)
./matmul_tutorial_mxfp4_swat 256 256 256
相关文档
- 顶层说明:
../README.md - 分步优化说明与流水图:
../docs/quant_matmul_mxfp4_tutorials.md