news 2026/5/9 20:03:01

CANN/runtime运行时核资源控制

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CANN/runtime运行时核资源控制

# 运行时核资源控制

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

为了提高Device核资源的使用率以及隔离性,Runtime支持控制Device的核资源。当前支持配置Device粒度、Stream粒度的核资源限制,核资源包括AI Core或Cube Core数量、Vector Core数量。

是否由用户显式指定numBlocks(用于指定算子的核函数将会在几个核上执行),调用运行时核资源控制的接口会有所不同,如下所示:

  • 无numBlocks场景(例如调用aclnn算子接口):Stream粒度的核资源限制需要调用aclrtUseStreamResInCurrentThread接口绑定到当前线程使用,并调用aclrtGetResInCurrentThread接口获取当前线程可使用的核资源。

    通过aclrtGetResInCurrentThread接口获取核资源限制的优先级为:Stream粒度的核资源限制 > Device粒度的核资源限制 > AI处理器硬件的默认核资源限制。例如,Device总共包含32个Vector Core,Device粒度限制使用16个Vector Core,而Stream粒度的核资源限制可以为20个Vector Core,则aclnn算子执行时以20个Vector Core运行。

  • 需numBlocks场景(例如LaunchKernel方式执行算子):用户可调用aclrtGetDeviceResLimit接口、aclrtGetStreamResLimit接口获取不同粒度的核资源限制后再配置numBlocks。

Device粒度的核资源限制

以下是关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考。完整样例代码,请参见Link。

...... int32_t deviceId = 0; uint32_t numBlocks = 8; uint32_t coreDim = 0; // 指定计算设备 aclrtSetDevice(deviceId); // 设置核资源限制 aclrtSetDeviceResLimit(deviceId, ACL_RT_DEV_RES_CUBE_CORE, numBlocks); // 下发算子执行任务 // 以aclnnAdd算子为例: // aclnnAddGetWorkspaceSize中会隐式调用aclrtGetResInCurrentThread查询核资源进行tiling // aclnnAdd() ...... // 获取核资源限制 aclrtGetDeviceResLimit(deviceId, ACL_RT_DEV_RES_CUBE_CORE, &coreDim);

Stream粒度的核资源限制

以下是关键步骤的代码示例,不可以直接拷贝编译运行,仅供参考。

#include "acl/acl.h" ...... int32_t deviceId = 0; uint32_t numBlocks = 8; // 指定运算的Device aclrtSetDevice(deviceId); // 显式创建一个Stream aclrtStream stream; aclrtCreateStream(&stream); // 设置Stream粒度的Cube Core、Vector Core的数量 aclrtSetStreamResLimit(stream, ACL_RT_DEV_RES_CUBE_CORE, numBlocks); aclrtSetStreamResLimit(stream, ACL_RT_DEV_RES_VECTOR_CORE, numBlocks * 2); // 绑定到当前线程 aclrtUseStreamResInCurrentThread(stream); // 算子的任务中需要调用aclrtGetResInCurrentThread查询当前线程的资源限制,然后指定运行算子的资源数量 // 以aclnnAdd算子为例: // aclnnAddGetWorkspaceSize中会隐式调用aclrtGetResInCurrentThread查询核资源进行tiling // aclnnAdd() ...... aclrtUnuseStreamResInCurrentThread(stream); aclrtResetStreamResLimit(stream); // 资源销毁 aclrtDestroyStream(stream); aclrtResetDevice(deviceId);

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

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

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

深度解析AlienFX Tools:500KB轻量级Alienware设备全面控制实战指南

深度解析AlienFX Tools:500KB轻量级Alienware设备全面控制实战指南 【免费下载链接】alienfx-tools Alienware systems lights, fans, and power control tools and apps 项目地址: https://gitcode.com/gh_mirrors/al/alienfx-tools AlienFX Tools是一套专为…

作者头像 李华
网站建设 2026/5/9 20:00:57

项目介绍 MATLAB实现基于BMA-GRU 贝叶斯模型平均(BMA)结合门控循环单元(GRU)进行股票价格预测(含模型描述及部分示例代码)专栏近期有大量优惠 还请多多点一下关注 加油 谢谢 你的鼓励

MATLAB实现基于BMA-GRU 贝叶斯模型平均(BMA)结合门控循环单元(GRU)进行股票价格预测的详细项目实例 请注意此篇内容只是一个项目介绍 更多详细内容可直接联系博主本人 或者访问对应标题的完整博客或者文档下载页面(…

作者头像 李华
网站建设 2026/5/9 20:00:34

文献计量分析实战:基于Python与VOSviewer的AI研究趋势洞察

1. 项目概述:一次基于文献数据的AI发展“体检”最近在整理过去的项目资料,翻到了几年前做的一个关于人工智能研究趋势的文献计量分析。这个项目的时间窗口是2015到2020年,正好是AI从实验室走向产业化的关键爆发期。当时做这个分析的初衷很简单…

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

CANN/driver设备资源管理

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

作者头像 李华
网站建设 2026/5/9 19:50:42

高通-大坑-高通晓龙npu推理 Qwen3-VL Step-1 ONNX 推理,模型乱回答

背景 多模态大模型正在逐步从云端推理走向端侧部署。端侧部署的核心挑战不是简单地把 PyTorch 模型转换为 ONNX,而是要让模型在移动 SoC 的 NPU / DSP 加速器上稳定运行,同时保持可接受的生成质量、延迟和功耗。 本文讨论的是一次 Qwen3-VL 类视觉语言模型的端侧部署调试过…

作者头像 李华