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

CANN/Ascend C SIMD量化缓冲因子

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.cnnetsun.cn/news/3454211.html

相关文章:

  • 5大核心功能深度解析:StreamFX如何将OBS直播效果提升到专业级别
  • FamilyBucket监控告警系统:应用性能监控与大屏展示实战指南
  • Ascend C SIMD量化操作API
  • 如何查看一个系统PCIE外设所能发挥的PCIE性能:PCIe 链路速率决定因素分析
  • AI绘画模型成本优化:从预训练到微调的全栈技术解析
  • 深度解析开源手写笔记工具:提升工作效率的3种实战方案
  • NVFP4量化技术深度解析:Nemotron-3-Embed性能提升秘诀
  • PCB过孔堵塞工艺:原理、方法与应用解析
  • FBS替代物如何选择?hPL在人源化细胞培养和MSC扩增中的应用
  • 多线程下任务状态异常的问题解决
  • DiscordX音乐机器人开发:LavaPlayer与YTDL插件的终极集成指南
  • Rust Rosetta Code贡献指南:如何为开源项目提交你的第一个PR
  • 解密多智能体金融交易框架:如何用AI打造你的专属投资团队
  • OBS Studio滤镜系统深度解析:从源码架构到专业级画质调优实战
  • STM32N6570外部Flash烧录与FSBL引导配置指南
  • OpenEuler CreateImage 核心函数库探秘:lib 目录下的 common-functions 与 img-functions
  • uos-uwsgi-exporter深度解析:从架构设计到实战部署的完整教程
  • 终极指南:如何用Zotero Style插件打造你的专属文献阅读体验
  • 3步构建个人云影院:115网盘原码直连Kodi播放方案
  • 如何用happy-lager快速搭建企业级网站?Craft CMS模板开发终极指南
  • 卤味熟食店如何解决社区获客难题?餐宝盈小程序与GEO服务带来稳定订单,含零代码SAAS、AI编程、源码定制
  • 如何用1个免费应用看遍所有直播?Simple Live终极聚合方案
  • 完整指南:如何使用IDM激活脚本永久解决Internet Download Manager试用限制
  • 解密本地视频字幕提取:从手动转录到智能AI的进化之路
  • dnSpyEx:3大核心功能解析.NET程序调试与逆向工程的终极解决方案
  • Hermes 完整部署排障清单,解决 90% Windows 安装异常
  • SillyTavern突破指南:3大挑战与高效解决方案
  • 2026私域商城小程序平台口碑榜单:餐宝盈、BBWEYY、比文云、SaaS哥、维双云对比,含零代码SAAS、AI编程、源码定制
  • 小程序毕设项目:同城生鲜配送系统的设计与实现 基于 SpringBoot + 微信小程序的家庭生鲜采购服务小程序 (源码+文档,讲解、调试运行,定制等)
  • Go-Queryset项目实战:从零构建企业级应用的数据访问层