当前位置: 首页 > news >正文

CANN AscendC反量化缓冲区API

GetAscendDequantTmpBufferFactorSize

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

功能说明

该接口用于获取maxLiveNodeCount和extraBuf,在固定空间大小的情况下,通过maxLiveNodeCount和extraBuf可以推算算子单次最大计算元素数量。maxLiveNodeCount表示临时空间是单次计算数据量所占空间的多少倍;extraBuf表示使用的额外临时空间大小。

推算示例如下:

  • 算子实现需要调用AscendDequant接口,开发者为其预留currBuff大小的空间,利用GetAscendDequantTmpBufferFactorSize接口得到maxLiveNodeCount、extraBuf输出值,可推导算子单次最大计算元素数量为:

    currentShapeSize = (currBuff - extraBuf) / maxLiveNodeCount / typeSize

  • 算子实现需要调用两个kernel侧API KernelIntf1、KernelIntf2,利用两个GetXxxTmpBufferFactorSize(其中Xxx为需要调用的两个高阶API)接口的两组输出值(maxLiveNodeCount、extraBuf)以及当前现有的临时空间,推导单次最大计算元素数量currentShapeSize为:

    currentShapeSize1 = (currBuff - extraBuf1) / maxLiveNodeCount1 / typeSize

    currentShapeSize2 = (currBuff - extraBuf2) / maxLiveNodeCount2 / typeSize

    currentShapeSize = min(currentShapeSize1, currentShapeSize2)

注意上文中的currBuff表示接口计算可用的空间,需要去除用户输入输出等空间;另外,接口获取的maxLiveNodeCount值可能为0,计算时需要判断该值非0,避免除零错误。

函数原型

void GetAscendDequantTmpBufferFactorSize(const ge::Shape& srcShape, uint32_t& maxLiveNodeCount, uint32_t& extraBuf)

参数说明

表 1参数列表

参数名

输入/输出

功能

srcShape

输入

输入srcTensor的shape信息。

maxLiveNodeCount

输出

最大存活节点数,表示临时空间是单次计算数据量所占空间的多少倍。

extraBuf

输出

使用的额外临时空间大小,单位为字节。

返回值说明

约束说明

当利用maxLiveNodeCount,extraBuf反推出的currentShapeSize * typeSize < 256B时,currentShapeSize按照256B/typeSize的值向上取整。

调用示例

std::vector<int64_t> shape_vec = {2, 1024}; ge::Shape srcShape(shape_vec); uint32_t maxLiveNodeCount = 0; uint32_t extraBuf = 0; AscendC::GetAscendDequantTmpBufferFactorSize(maxLiveNodeCount, extraBuf);

【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C++标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit

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

http://www.jsqmd.com/news/855675/

相关文章:

  • 如何在Windows系统上免费恢复WannaCry加密文件?内存密钥恢复工具实战指南
  • 基于ssm框架的博客系统(10070)
  • MODBUS调试助手开发全解析:从协议原理到实战避坑指南
  • 告别臃肿PDF!用Ghostscript命令行批量压缩/拆分/合并的保姆级教程
  • rebar3与Hex.pm集成指南:Erlang包管理的完整解决方案
  • 《Windows Sysinternals实战指南》PsTools 学习笔记(7.7):进程性能选项——优先级、CPU 亲和性与稳定落地
  • HTML会代替Markdown吗?为什么?
  • 2026年口碑好的南京报警腕表/社区矫正腕表批量采购厂家推荐 - 品牌宣传支持者
  • 终极GTA5游戏增强菜单:YimMenu全方位安全防护指南
  • 别再死记命令了!用eNSP模拟真实办公室,手把手带你搞定华为AC+AP无线组网
  • 新能源充电桩厂家有哪些?2026新能源充电桩厂家优选:权威电动汽车充电桩厂家+电动汽车充电桩品牌榜单 - 栗子测评
  • 3分钟掌握UnityPackage Extractor:无需Unity轻松提取资源包
  • OpencvSharp 算子学习教案之 - Cv2.GetWindowHandle
  • Wallaby测试覆盖率分析:确保Web应用质量的最佳实践
  • FFXIV ACT插件开发指南:基于内存操作实现副本动画跳过功能
  • 《Sysinternals实战指南》进程和诊断工具学习笔记(8.17):LiveKd 实战——运行方式、常用参数、现场采集套路
  • 基于ssm框架的警务信息管理系统(10071)
  • 一次性厘清 CPU、显卡、GPU到底是什么?之间的关系?
  • LDAP查询服务延时查询及问题排查处理
  • 交流充电桩厂家有哪些?电动汽车充电桩厂家有哪些?2026交流充电桩厂家前八:交流充电桩品牌优选全解析 - 栗子测评
  • 基于RK3568的智能家居控制器:硬件选型、架构设计与软件实现全解析
  • 100、运动控制中的传感器融合:粒子滤波
  • smassh核心组件剖析:Tracker、StatsTracker和Generator的实现原理
  • 【C++】模板进阶全内容,一篇搞定所有!!!
  • 2026年光伏支架厂家推荐:涵盖分布式车棚支架及全套光伏配件生产厂商 - 栗子测评
  • Perplexity词组搭配查询全攻略,从零基础到论文级表达——附赠2024最新学术动词-介词搭配白名单(仅限前500名领取)
  • 12 极物科技 JetLinks MQTT直连设备事件上报实战(继电器场景)
  • 怎么在 Redis 中设置消息队列的过期时间自动清理?
  • 如何在5分钟内解锁所有Steam成就:Steam Achievement Manager完整使用指南
  • 基于ssm框架的警务信息管理系统(10072)