Assert接口功能说明
概述
本样例介绍ascendc_assert断言接口使用方法,如果assert的条件判断不为真,则会输出错误信息并终止程序执行。
本样例支持的产品及CANN软件版本
| 产品 | CANN软件版本 |
|---|---|
| Ascend 950PR/Ascend 950DT | >= CANN 9.1.0 |
| Atlas A3 训练系列产品/Atlas A3 推理系列产品 | >= CANN 9.0.0 |
| Atlas A2 训练系列产品/Atlas A2 推理系列产品 | >= CANN 9.0.0 |
目录结构介绍
├── 01_assert
│ ├── scripts
│ │ ├── gen_data.py // 输入数据和真值数据生成脚本
│ │ └── verify_result.py // 验证输出数据和真值数据是否一致的验证脚本
│ ├── CMakeLists.txt // 编译工程文件
│ ├── data_utils.h // 数据读入写出函数
│ ├── assert.asc // Ascend C样例实现 & 调用样例
│ └── README.md // 样例说明文档
样例描述
-
样例功能:
使用静态Tensor编程模式实现矩阵乘法,展示ascendc_assert接口的基本使用方法。
矩阵乘法的计算公式为:
C = A * B -
样例规格:
样例参数为:M = 256, N = 256, K = 64,shape信息如下表所示:
样例类型(OpType) Matmul 样例输入 name shape data type format a [M, K] half ND b [K, N] half ND 样例输出 c [M, N] half ND 核函数名 mmad_custom -
ascendc_assert接口用法:
用法 示例 基本断言 ascendc_assert(condition, "message.\n");带参数断言 ascendc_assert(value > 0, "Value %d must be positive.\n", value);参数对齐检查 ascendc_assert(size % 16 == 0, "Size %u must align to 16.\n", size);范围检查 ascendc_assert(idx < max, "Index %u exceeds max %u.\n", idx, max);注意:ascendc_assert接口对运行性能有影响,建议仅在调试阶段使用。
-
调用实现
使用内核调用符<<<>>>调用核函数。
编译运行
-
配置环境变量 在本样例根目录下执行如下步骤,编译并执行样例。 请根据当前环境上CANN开发套件包的安装方式,配置环境变量。
source ${install_path}/cann/set_env.sh说明:
${install_path}为CANN包安装目录,未指定安装目录时默认安装至/usr/local/Ascend下。 -
样例执行
在本样例目录下执行如下命令。
mkdir -p build && cd build; # 创建并进入build目录 cmake -DCMAKE_ASC_ARCHITECTURES=dav-2201 ..;make -j; # 编译工程 python3 ../scripts/gen_data.py # 生成测试输入数据 ./demo # 执行编译生成的可执行程序,执行样例 python3 ../scripts/verify_result.py output/output.bin output/golden.bin # 验证输出结果是否正确,确认算法逻辑正确 -
编译选项说明
| 选项 | 可选值 | 说明 |
|---|---|---|
CMAKE_ASC_ARCHITECTURES |
dav-2201(默认)、dav-3510 |
NPU 架构:dav-2201 对应 Atlas A2 训练系列产品/Atlas A2 推理系列产品和 Atlas A3 训练系列产品/Atlas A3 推理系列产品,dav-3510 对应 Ascend 950PR/Ascend 950DT |
- 执行结果
最终执行结果如下,说明精度对比成功。
test pass!