README.md

0_device_normal

描述

本样例展示 CANN Runtime Device 管理的基础使用流程,包括初始化、指定 Device、创建 Stream、执行 aclnnAdd 向量加法算子、同步等待任务完成以及释放资源。

产品支持情况

本样例支持以下产品:

产品 是否支持
Ascend 950PR/Ascend 950DT
Atlas A3 训练系列产品/Atlas A3 推理系列产品
Atlas A2 训练系列产品/Atlas A2 推理系列产品

编译运行

1.下载样例代码至安装CANN软件的环境,切换到样例目录。

cd ${git_clone_path}/example/1_basic_features/device/0_device_normal

2.设置环境变量。

# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录
source ${install_root}/cann/set_env.sh
export ASCEND_INSTALL_PATH=${install_root}/cann

# 设置 SOC_VERSION 和 ASCENDC_CMAKE_DIR
# -SOC_VERSION: 昇腾AI处理器的型号,如 Ascend910_9362,Ascend910B2等
# -ASCENDC_CMAKE_DIR: 样例中涉及调用AscendC算子,需配置AscendC编译器 ascendc.cmake 路径,如 /usr/local/Ascend/cann/x86_64-linux/tikcpp/ascendc_kernel_cmake
source ${git_clone_path}/example/set_sample_env.sh

3.执行以下命令运行样例。

bash run.sh

CANN RUNTIME API

在该Sample中,涉及的关键功能点及其关键接口,如下所示:

  • 初始化
    • 调用 aclInit 接口进行初始化配置。
    • 调用 aclFinalize 接口实现去初始化。
  • Device 管理
    • 调用 aclrtSetDevice 接口指定用于运算的 Device。
    • 调用 aclrtSynchronizeDevice 接口阻塞等待正在运算中的 Device 完成运算。
    • 调用 aclrtResetDeviceForce 接口强制复位当前运算的 Device,回收 Device 上的资源。
  • Stream 管理
    • 调用 aclrtCreateStream 接口创建 Stream。
    • 调用 aclrtSynchronizeStream 接口阻塞等待 Stream 上任务完成。
    • 调用 aclrtDestroyStream 接口销毁 Stream。
  • 内存管理
    • 调用 aclrtMalloc 接口申请 Device 上的内存。
    • 调用 aclrtFree 接口释放 Device 上的内存。
  • 数据传输
    • 调用 aclrtMemcpy 接口通过内存复制的方式实现数据传输。
  • 算子执行
    • 调用 aclnnAddGetWorkspaceSize 接口获取 aclnnAdd 算子执行所需的 workspace 信息。
    • 调用 aclnnAdd 接口执行向量加法算子。

示例输出

[INFO]: Current compile soc version is ...
...
[INFO]  Start to run device_normal sample.
[INFO]  result[0] is: 1.200000
[INFO]  result[1] is: 2.200000
[INFO]  result[2] is: 3.200000
[INFO]  result[3] is: 5.400000
[INFO]  result[4] is: 6.400000
[INFO]  result[5] is: 7.400000
[INFO]  result[6] is: 9.600000
[INFO]  result[7] is: 10.600000
[INFO]  Run the device_normal sample successfully.