news 2026/5/9 17:17:30

CANN/runtime快速入门示例

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime快速入门示例

Quick Start

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

概述

本示例是使用Runtime接口的快速入门示示例。展示了如何使用 CANN Runtime 的aclnnAddAPI 执行向量加法操作。aclnnAdd是 CANN 神经网络算子库提供的加法算子,实现了out = self + alpha * other的运算。

功能说明

该样例演示了使用Runtime基础API实现向量加法流程:

  1. 初始化 ACL 和设置计算设备
  2. 创建输入和输出 Tensor
  3. 使用aclCreateDataBuffer包装输出 Device 内存,并通过aclGetDataBufferAddr取回 Buffer 地址
  4. 创建 alpha Scalar(缩放因子)
  5. 调用aclnnAddGetWorkspaceSize获取所需 workspace 大小
  6. 分配 workspace 内存
  7. 调用aclnnAdd执行向量加法运算
  8. 同步等待计算完成并获取结果
  9. 销毁aclDataBuffer并释放资源

产品支持情况

本样例支持以下产品:

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

编译运行

环境安装详情以及运行详情请见 example 目录下的 README。

运行步骤如下:

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

相关样例

  • 4_custom_kernel_launch:如果需要使用<<<>>>调用自定义 AscendC Kernel,可参考该样例。

CANN RUNTIME API

在本样例中,涉及的关键功能点及其关键接口如下所示:

  • 初始化
    • 调用aclInit接口初始化 ACL。
    • 调用aclFinalize接口释放 ACL 资源。
  • Device 与 Stream 管理
    • 调用aclrtSetDevice接口设置计算设备。
    • 调用aclrtCreateStream接口创建 Stream。
    • 调用aclrtSynchronizeStream接口等待 Stream 上任务完成。
    • 调用aclrtDestroyStream接口销毁 Stream。
    • 调用aclrtResetDeviceForce接口重置设备。
  • Tensor 与数据描述
    • 调用aclCreateTensor接口创建输入和输出 Tensor。
    • 调用aclCreateScalar接口创建缩放因子alpha
    • 调用aclCreateDataBufferaclGetDataBufferAddr接口管理输出 Buffer。
    • 调用aclDestroyTensoraclDestroyScalaraclDestroyDataBuffer接口释放描述对象。
  • 内存管理与数据传输
    • 调用aclrtMalloc接口分配 Device 内存。
    • 调用aclrtMemcpy接口完成 Host/Device 数据传输。
    • 调用aclrtFree接口释放 Device 内存。
  • 算子执行
    • 调用aclnnAddGetWorkspaceSize接口查询算子执行所需 workspace。
    • 调用aclnnAdd接口执行向量加法。

核心 API

aclnnAdd

aclError aclnnAdd( void* workspace, // workspace 地址 uint64_t workspaceSize, // workspace 大小 aclOpExecutor* executor, // 算子执行器 aclrtStream stream // Stream );

aclnnAddGetWorkspaceSize

aclError aclnnAddGetWorkspaceSize( const aclTensor* self, // 第一个输入张量 const aclTensor* other, // 第二个输入张量 const aclScalar* alpha, // 缩放因子 aclTensor* out, // 输出张量 uint64_t* workspaceSize, // [输出] workspace 大小 aclOpExecutor** executor // [输出] 算子执行器 );

运算公式

out = self + alpha * other

示例输出

Input vectors: self: [1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0] other: [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0] alpha: 1.0 Create output aclDataBuffer successfully, buffer addr = 0x... Vector addition result: result[0] = 1.5 (expected: 1.5) result[1] = 3.0 (expected: 3.0) result[2] = 4.5 (expected: 4.5) result[3] = 6.0 (expected: 6.0) result[4] = 7.5 (expected: 7.5) result[5] = 9.0 (expected: 9.0) result[6] = 10.5 (expected: 10.5) result[7] = 12.0 (expected: 12.0)

已知 issue

暂无

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

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

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

Python自动化内容抓取工具snapclaw实战:从配置到反爬策略

1. 项目概述与核心价值最近在折腾一些自动化抓取和内容聚合的工具&#xff0c;发现了一个挺有意思的项目叫balukov/snapclaw。这个名字听起来就很有“抓取”的感觉&#xff0c;对吧&#xff1f;简单来说&#xff0c;它是一个基于 Python 的、专门用于从社交媒体、新闻网站等公开…

作者头像 李华
网站建设 2026/5/9 17:14:30

AI重塑食品系统:从精准预测到个性化营养的实践路径

1. 项目概述&#xff1a;当AI成为厨房里的新“大厨”最近几年&#xff0c;我身边做餐饮供应链、食品研发&#xff0c;甚至自己开农场的朋友&#xff0c;聊天的画风都变了。以前是“今年天气不好&#xff0c;收成不行”&#xff0c;现在是“我们那个AI模型预测&#xff0c;下个月…

作者头像 李华
网站建设 2026/5/9 17:11:38

生成式AI时代的人本责任:挑战、机遇与实践指南

1. 项目概述&#xff1a;当AI学会“创造”&#xff0c;我们该如何“立法”&#xff1f;最近和几个做AI产品、法律合规以及伦理研究的朋友聊天&#xff0c;话题总绕不开一个词&#xff1a;“生成式AI”。从ChatGPT的爆火&#xff0c;到Sora带来的视觉震撼&#xff0c;再到各种AI…

作者头像 李华
网站建设 2026/5/9 17:09:32

大语言模型系统提示词泄露:原理、风险与防御实战

1. 项目概述&#xff1a;当你的“系统提示词”不再私密最近在折腾大语言模型&#xff08;LLM&#xff09;应用开发的朋友&#xff0c;可能都听过一个词叫“系统提示词”&#xff08;System Prompt&#xff09;。简单来说&#xff0c;它就是你在调用像GPT、Claude这类模型API时&…

作者头像 李华
网站建设 2026/5/9 17:09:30

生成式AI重塑高等教育:应用场景、挑战与应对策略

1. 项目概述&#xff1a;当生成式AI敲开大学课堂的门去年&#xff0c;我的一位在顶尖高校任教的朋友&#xff0c;深夜给我发来一份学生提交的课程论文。他语气复杂地问我&#xff1a;“你帮我看看&#xff0c;这玩意儿&#xff0c;是学生自己写的&#xff0c;还是AI生成的&…

作者头像 李华