| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
支持通过 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 | 1 个月前 | |
支持通过 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 | 1 个月前 | |
fix: 修复 vector_add 编译告警 Co-authored-by: zhangzijie<zhangzijie11@hisilicon.com> # message auto-generated for no-merge-commit merge: !210 merge fix-vector-add-warnings into master fix: 修复 vector_add 编译告警 Created-by: zhangzijie Commit-by: zhangzijie Merged-by: cann-robot Description: ## 描述 vector_add 原来将 host 侧 device 指针声明为 GM_ADDR。GM_ADDR 在 bisheng 中是带 __gm__ 地址空间限定的 uint8_t *,通过 (void **)&d_A 传给 aclrtMalloc 时会形成 __gm__ uint8_t ** 到 void ** 的嵌套指针转换,从而产生地址空间限定丢失相关的编译告警。 本次参考 asc-devkit 中 basic_api_tque_add 的写法:kernel 入参继续使用 GM_ADDR,host 侧 device 指针改为普通 uint8_t *,使 aclrtMalloc 接收普通 host 指针地址,避免对 __gm__ 指针做嵌套转换。 ## 关联的Issue https://gitcode.com/cann/cann-samples/issues/135 ## 测试 单独编译 vector_add 通过,编译告警已消除。 ## 文档更新 无。 ## 类型标签 <!-- [x] 表示选中 --> - [x] Bug修复 - [ ] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: See merge request: cann/cann-samples!210 | 1 个月前 |
Vector Add
描述
本样例展示了如何在昇腾AI处理器的VectorCore硬件单元上使用AscendC编程语言实现向量加法操作。
关键特性
- 流水并行:具备DoubleBuffer能力开启流水并行
- 参数可配:支持自定义向量长度进行测试
- 精度对比:提供标准的CPU实现作为精度基准
支持架构
NPU ARCH dav-2201, dav-3510
参数说明
- totalLength: 向量长度
算子Kernel支持Dtype模板参数,目前支持FLOAT32
编译运行
- 编译样例
从项目根目录启动构建,参考项目README.md
指定vector_add的编译命令:
cmake --build build --target vector_add
- 运行样例
切换到可执行目录文件的所在目录build/Samples/0_Introduction/vector_add/, 使用可执行文件直接执行算子用例。
cd ./build/Samples/0_Introduction/vector_add/
./vector_add
打印如下执行结果,证明样例执行成功。
Vector add completed successfully!
如果存在精度问题,则会打印错误数据,并显示如下结果。
Vector add failed!