尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
GetLogicalOrsMaxMinTmpSize 详解:如何为 LogicalOrs 选对临时空间大小
GetLogicalOrsMaxMinTmpSize 详解如何为 LogicalOrs 选对临时空间大小【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit在昇腾 Ascend C 算子开发里Kernel 侧的LogicalOrs接口跑起来之前往往需要先定好一块临时空间——这块空间要写进 Tiling 参数、一路传到算子内部使用。GetLogicalOrsMaxMinTmpSize就是专门帮你算出这块临时空间该留多大的 Host 侧 Tiling 接口一次调用返回maxValue上限和minValue下限两个数让你在被称作 UB 的有限片上资源里挑一个既能算对、又能更快跑完的尺寸。它到底解决了什么问题UBUnified Buffer是 AI Core 上的一块共享内存大小是固定的还要和输入、输出、其它缓冲区挤在一起。Kernel 侧做数学计算时有时需要额外的临时空间来存放中间结果但临时空间不是越大越好会挤占别人也不是随便给就够。于是就有了这套先问后拿的套路Host 侧在生成 Tiling 数据时先调用GetXxxMaxMinTmpSize拿到所需临时空间的上下限再结合 UB 当前还剩多少落一个既不低于下限、又不浪费的尺寸把这个尺寸写进 Tiling 数据Kernel 侧读出来、据此InitBuffer。GetLogicalOrsMaxMinTmpSize负责的就是LogicalOrs这一个接口的问环节。快速上手30 秒拿到临时空间上下限下面是最短可跑的片段假设要对 1024 个half元素做或运算#include vector #include adv_api/math/logical_ors_tiling.h #include tiling/platform/platform_ascendc.h std::vectorint64_t dims {1024}; // 输入 shape AscendC::TensorShape shape(dims); // 用 TensorShape 描述输入形状 uint32_t maxValue 0, minValue 0; auto plat platform_ascendc::PlatformAscendC(context-GetPlatformInfo()); AscendC::GetLogicalOrsMaxMinTmpSize(plat, shape, 2, false, maxValue, minValue); // 调用后minValue 是下限、maxValue 是上限单位都是字节跑完这一句你就知道了要保证LogicalOrs算得对临时空间不能小于minValue如果想更快可以在minValue ~ maxValue之间往上取。参数逐项拆解每个输入该填什么函数原型如下void GetLogicalOrsMaxMinTmpSize( const platform_ascendc::PlatformAscendC ascendcPlatform, const AscendC::TensorShape srcShape, const uint32_t typeSize, const bool isReuseSource, uint32_t maxValue, uint32_t minValue);参数方向该怎么填坑点ascendcPlatform输入平台信息由PlatformAscendC构造一般来自context-GetPlatformInfo()接口内部会据此判断 NPU 架构是否受支持srcShape输入输入数据的形状类型是AscendC::TensorShape用维度向量构造维度要和真实输入一致否则查出的空间不准typeSize输入元素类型占多少字节half/bfloat16传 2float/int32传 4int8/uint8传 1int64传 8只支持 1/2/4/8传别的会被参数校验拦下isReuseSource输入预留参数固定传false别自己发挥填false即可maxValue输出计算所需的最大临时空间字节见下一节它只是参考值minValue输出计算所需的最小临时空间字节低于它正确性没保障maxValue 与 minValue读对这两个输出这两个数是理解整个接口的关键边界语义要拎清楚minValue是正确性底线。要算得对前提是给出去的临时空间不能小于它。minValue为 0说明这次计算根本不需要额外临时空间。maxValue是性能天花板。在minValue ~ maxValue区间内临时空间越大Kernel 侧单次能摊到的计算量越大性能通常有一定提升。maxValue为 0 表示计算不依赖临时空间。maxValue只是参考值别照单全收。它有可能比 UB 当前剩余的空间还大真到那一步你得按 UB 实际还剩多少来收窄尺寸而不是硬套maxValue。换句话说minValue管能不能算对maxValue管能不能更快而真正落多少要由你结合 UB 剩余空间来定。如何选对尺寸从下限到上限的取舍推荐的落子方式是把上限和UB 剩余两者取小uint64_t ubFree 0; // 注意这里要用UB 扣除输入输出后真正剩给临时空间的部分 plat.GetCoreMemSize(platform_ascendc::CoreMemType::UB, ubFree); uint32_t tmpSize (ubFree maxValue) ? maxValue : static_castuint32_t(ubFree);取舍逻辑很清楚先看minValue这是不可突破的下限想更快就往maxValue靠拢但别越过 UB 实际能给的空间——maxValue只是接口想要多少不是你能给多少。当 UB 很紧张时宁可贴着minValue给把空间让给输入输出当 UB 宽裕、又在意吞吐时取到maxValue或被剩余空间封顶后的值性能更好。衔接 Kernel把查到的尺寸写进 Tiling 数据查到的tmpSize不会自己飞进算子得走一遍 Tiling 数据Host 侧把tmpSize写进你自定义的 Tiling 结构例如tmpBufferSize字段再SaveToBufferKernel 侧读 Tiling 数据用这个尺寸给临时缓冲InitBuffer再AllocTensor/Get出来交给LogicalOrs使用。这套Host 问 → 写 Tiling → Kernel 用的闭环同族接口Asin、Acos等都是同一套打法完整流程可参考 数学计算更多样例 与 LogicalOrs 接口说明。边界情况与常见疑问当前实现下maxValue、minValue会是多少在受支持架构下LogicalOrs的这个接口两者都返回 0意味着这次或运算本身不额外占临时缓冲。即便如此按先查范围、再定 Tiling的通用流程写代码仍是好习惯能让你的 Tiling 对同族接口保持一致。哪些架构受支持接口内部只放行 DAV_3510 与 DAV_9201其它架构会触发断言并直接返回调用前心里有数。typeSize传错会怎样只接受 1、2、4、8 字节传其它值会被参数校验拦下half记得传 2别误传 4。isReuseSource要不要研究一下它是预留位固定传false现阶段不用纠结。函数本身返回void结果全靠maxValue、minValue这两个出参带出来——记住它只管问出上下限真正落多少尺寸、怎么写进 Tiling是你基于 UB 剩余空间做的决策。【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

如何读懂 dd_metastate 缓存:Llama-3.1-8B_rai_1.8.0_npu_4K 预填充/解码双阶段 NPU 状态文件完整解析

如何读懂 dd_metastate 缓存:Llama-3.1-8B_rai_1.8.0_npu_4K 预填充/解码双阶段 NPU 状态文件完整解析

【免费下载链接】Llama-3.1-8B_rai_1.8.0_npu_4K 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Llama-3.1-8B_rai_1.8.0_npu_4K 点击查看 免费下载 Llama-3.1-8B_rai_1.8.0_npu_4K 是 AMD 面向 Ryzen AI(NPU)深度优化的 Llama 3.1 8B 大…

📅 2026/10/22 7:02:12
网盘直连高速下载完整笔记:500MB文件如何摆脱限速泥潭

网盘直连高速下载完整笔记:500MB文件如何摆脱限速泥潭

网盘直连高速下载完整笔记:500MB文件如何摆脱限速泥潭 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…

📅 2026/10/22 6:57:11
3步跑起 iptv-checker:让几百个IPTV频道按点自动完成有效性检测

3步跑起 iptv-checker:让几百个IPTV频道按点自动完成有效性检测

3步跑起 iptv-checker:让几百个IPTV频道按点自动完成有效性检测 【免费下载链接】iptv-checker IPTV checker tool for Docker && CMD, check your playlist is available 项目地址: https://gitcode.com/GitHub_Trending/ip/iptv-checker 深夜想打开…

📅 2026/10/22 6:57:11
MORE NEWS

更多资讯

📰

LTE负荷均衡参数实施:从CIO调整到重选优先级的完整指南

简介:这是一份关于LTE负荷均衡参数实施的Word技术文档,面向4G网络优化工程师、通信工程专业学生及相关运维人员,用于指导双载波场景下负荷均衡功能的原理理解与参数配置。文档系统讲解Intra-LTE MLB与Inter-RAT MLB的实现机制,详细…

📰

华电毕业答辩PPT精美大气制作指南:结构、视觉与python-pptx批量校准

简介:面向华北电力大学毕业生的毕业论文答辩幻灯片模板,整体风格精美大气、层次分明,专门用于毕业答辩场景。模板围绕研究背景与意义、研究思路与方法、研究目的与意义等核心模块展开,以PART 01至03清晰分区,帮助用户按…

📰

ANSYS入门全攻略:从有限元原理到静力分析实战与避坑指南

简介:一份面向入门读者的ANSYS学习讲义,源自清华大学土木系研究生学术讲座,用清晰的章节安排帮助初学者建立有限元分析的整体框架。资源包仅1个PDF文件,体积约1020KB,便于移动设备随时查阅;目前已有1456人学…

📰

冲击地压危险预测实战:时间窗、滑窗切分与不平衡模型全解析

简介:2024年五一数学建模竞赛C题获奖作品,聚焦煤矿深部开采冲击地压危险预测问题,完整呈现基于电磁辐射与声发射数据的数学建模全过程。论文综合运用傅里叶变换进行信号频域分析,构建随机森林模型识别干扰信号所在时间区间&#x…

📰

智慧商业中心智能化系统设计:从需求测算到运营推演

简介:这是一份面向智慧商业中心智能化系统设计的完整汇报方案,适合弱电智能化设计师、系统集成商、商业综合体运营方参考,用于解决商业、住宅、酒店混合业态下公共安全、信息化管理与舒适性系统的一体化规划问题。方案围绕视频监控、防盗报警…

📰

OpenBLAS error: Memory allocation still failed after 10 retries, giving up. OpenBL

这个报错是 OpenBLAS 在初始化时尝试分配内存缓冲区,连续失败 10 次后放弃。结合你运行的 add_close_price.py 只做 Tushare 数据拉取和 pandas 处理,本身计算量很小,最可能的原因是 OpenBLAS 按 CPU 核心数预分配的线程缓冲区总大小超过了系…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬