news 2026/5/9 12:58:29

CANN/runtime启动kernel示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime启动kernel示例

0_launch_kernel

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

描述

本样例展示了如何基于Launch Kernel方式加载与执行Add算子。

产品支持情况

本样例在以下产品上的支持情况如下:

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

编译运行

1.设置环境变量。

# ${install_root} 替换为 CANN 安装根目录,默认安装在`/usr/local/Ascend`目录 source ${install_root}/cann/set_env.sh export ASCEND_INSTALL_PATH=${install_root}/cann # ${ascend_name} 替换为昇腾AI处理器的型号,可通过 npu-smi info 查看 Name 字段并去掉空格获得,例如 ascend910b3 export SOC_VERSION=${ascend_name} # 部分样例中涉及调用AscendC算子,需配置AscendC编译器ascendc.cmake所在的路径,如 ${install_root}/cann/aarch64-linux/tikcpp/ascendc_kernel_cmake # 可在CANN包安装路径下查找ascendc_kernel_cmake,例如find ./ -name ascendc_kernel_cmake,并将${cmake_path}替换为ascendc_kernel_cmake所在路径 export ASCENDC_CMAKE_DIR=${cmake_path}

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

cd ${git_clone_path}/example/2_advanced_features/kernel/0_launch_kernel

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

# 当前用例依赖 numpy 模块,运行时会检查该模块是否存在,如存在则导入,不存在则安装该模块。 # bash run.sh -r <mode> ,mode 参数可以选 simple和placeholder。若不指定直接执行 bash run.sh 运行样例,则使用simple 模式。 bash run.sh -r simple

mode可选simple和placeholder两种模式: 1. simple模式 指指针类型参数,其值为Device内存地址。一般来说,算子的输入、输出是该种类型的参数,用户需提前调用Device内存申请接口(例如aclrtMalloc接口)申请内存,并自行拷贝数据至Device侧。 2. placeholder模式 也是指针类型参数,但区别在于,用户无需手动将参数数据复制到Device,这项操作由Runtime完成。在追加参数时Runtime并不会填写真实的Device地址,而是在Launch Kernel时才会刷新为真实的Device地址,所以称之为placeholder。

CANN RUNTIME API

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

  • 初始化
    • 调用aclInit接口初始化AscendCL配置。
    • 调用aclFinalize接口实现AscendCL去初始化。
  • Device管理
    • 调用aclrtSetDevice接口指定用于运算的Device。
    • 调用aclrtResetDeviceForce接口强制复位当前运算的Device,回收Device上的资源。
  • Stream管理
    • 调用aclrtCreateStream接口创建Stream。
    • 调用aclrtDestroyStreamForce接口强制销毁Stream,丢弃所有任务。
    • 调用aclrtSynchronizeStream可以阻塞等待Stream上任务的完成。
  • 内存管理
    • 调用aclrtMallocHost接口申请Host上的内存。
    • 调用aclrtMalloc接口申请Device上的内存。
    • 调用aclrtFreeHost接口释放Host上的内存。
    • 调用aclrtFree接口释放Device上的内存。
  • 数据传输
    • 调用aclrtMemcpy接口通过内存复制的方式实现Host与Device间的数据传输。
  • Kernel加载与执行
    • 调用aclrtBinaryLoadFromFile从文件加载并解析算子二进制文件。
    • 调用aclrtBinaryGetFunction获取核函数句柄。
    • 调用aclrtKernelArgsInit根据核函数句柄初始化参数列表,并获取标识参数列表的句柄。
    • 调用aclrtKernelArgsAppend将用户设置的参数值追加拷贝到argsHandle指向的参数数据区域。
    • 调用aclrtKernelArgsAppendPlaceHolder对于placeholder参数,调用本接口占位。
    • 调用aclrtKernelArgsGetPlaceHolderBuffer根据用户指定的内存大小,获取paramHandle占位符指向的内存地址。
    • 调用aclrtKernelArgsFinalize标识参数组装完毕。
    • 调用aclrtLaunchKernelWithConfig指定任务下发的配置信息,并启动对应算子的计算任务。
    • 调用aclrtBinaryUnLoad卸载算子二进制文件。

已知issue

暂无

【免费下载链接】runtime本项目提供CANN运行时组件和维测功能组件。项目地址: https://gitcode.com/cann/runtime

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/9 12:58:08

CANN/driver设备PCIe信息API

dcmi_get_device_pcie_info 【免费下载链接】driver 本项目是CANN提供的驱动模块&#xff0c;实现基础驱动和资源管理及调度等功能&#xff0c;使能昇腾芯片。 项目地址: https://gitcode.com/cann/driver 函数原型 int dcmi_get_device_pcie_info(int card_id, int de…

作者头像 李华
网站建设 2026/5/9 12:56:44

多模态AI协同诊断框架:攻克印戒细胞癌精准诊断难题

1. 项目概述&#xff1a;当AI“看见”并“理解”癌症最近几年&#xff0c;AI在医疗影像诊断领域的热度居高不下&#xff0c;从肺结节检测到眼底筛查&#xff0c;似乎AI正在成为医生的“超级助手”。但如果你深入一线病理科&#xff0c;会发现一个更复杂、也更令人兴奋的挑战&am…

作者头像 李华
网站建设 2026/5/9 12:54:45

CANN/hccl主机侧Socket端口范围配置

HCCL_HOST_SOCKET_PORT_RANGE 【免费下载链接】hccl 集合通信库&#xff08;Huawei Collective Communication Library&#xff0c;简称HCCL&#xff09;是基于昇腾AI处理器的高性能集合通信库&#xff0c;为计算集群提供高性能、高可靠的通信方案 项目地址: https://gitcode…

作者头像 李华
网站建设 2026/5/9 12:54:44

强化学习在工业控制中的Sim-to-Real迁移挑战与优化

1. 强化学习在工业控制中的模拟到现实挑战 在工业过程控制领域&#xff0c;强化学习&#xff08;Reinforcement Learning, RL&#xff09;正逐渐展现出其独特的价值。作为一名长期从事工业自动化与智能控制的研究者&#xff0c;我亲眼见证了RL技术从实验室走向实际产线的艰难历…

作者头像 李华
网站建设 2026/5/9 12:53:45

Figma中文插件:3步解决英文界面障碍,让设计效率提升50%

Figma中文插件&#xff1a;3步解决英文界面障碍&#xff0c;让设计效率提升50% 【免费下载链接】figmaCN 中文 Figma 插件&#xff0c;设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma复杂的英文界面而烦恼&#xff1f;Figma中文插…

作者头像 李华