| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 6 个月前 | ||
| 5 个月前 | ||
| 5 个月前 |
基于gather算子的SIMT assert断言功能实现样例
概述
本样例演示在SIMT编程下使用assert()接口实现上板进行功能调试的方法。
支持的产品
- Ascend 950PR/Ascend 950DT
支持的CANN软件版本
- > CANN 9.0.0
目录结构
├── 01_assert
│ ├── CMakeLists.txt # cmake编译文件
│ ├── assert.asc # Ascend C算子实现加assert断言的调用样例
| └── README.md
算子描述
-
算子功能:
本样例详细展示了在SIMT实现函数中使用
assert()接口的实践方式,实现对算子执行过程中断言的调试。 -
算子实现:
__global__ void simt_assert(float* input, uint32_t in_shape) { // Calculate global thread ID int32_t idx = blockIdx.x * blockDim.x + threadIdx.x; if (threadIdx.x < 1) { printf("[SIMT] %s\n", "trap check start 1!"); printf("[SIMT] %s\n", "trap check start 2!"); printf("[SIMT] %s\n", "trap check start 3!"); assert(in_shape < 1); printf("[SIMT] %s\n", "trap check 1!"); } else if(threadIdx.x < 5) { printf("[SIMT] %s\n", "trap check 2!"); assert(in_shape > 1); printf("[SIMT] %s\n", "trap check 3!"); } }
编译运行
在本样例根目录下执行如下步骤,编译并执行算子。
-
配置环境变量 请根据当前环境上CANN开发套件包的安装方式,选择对应配置环境变量的命令。
-
默认路径,root用户安装CANN软件包
source /usr/local/Ascend/cann/set_env.sh -
默认路径,非root用户安装CANN软件包
source $HOME/Ascend/cann/set_env.sh -
指定路径install_path,安装CANN软件包
source ${install_path}/cann/set_env.sh
-
-
样例执行
mkdir -p build && cd build; # 创建并进入build目录 cmake ..; make -j; # 编译工程 ./demo # 执行样例执行后有如下打印信息,说明功能正常。
[SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check 2! [SIMT] trap check start 1! [SIMT] trap check start 1! [SIMT] trap check start 2! [SIMT] trap check start 2! [SIMT] trap check start 3! [SIMT] trap check start 3! [ASSERT] xxx/assert.asc:32: void simt_assert(float *, uint32_t): Assertion `in_shape < 1' failed. [ASSERT] xxx/assert.asc:32: void simt_assert(float *, uint32_t): Assertion `in_shape < 1' failed.