恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

CANN pyasc 接口详解:asc.language.basic.set_fix_pipe_pre_quant_flag 与 Fixpipe 随路量化的标量参数设置

  • 首页
  • 资讯中心
  • /
  • CANN pyasc 接口详解:asc.language.basic.set_fix_pipe_pre_quant_flag 与 Fixpipe 随路量化的标量参数设置

相关资讯

LosslessCut 导出文件名模板完整指南:变量、JavaScript 表达式与实战配置 2026/9/19 0:42:41
Gartner 中国十大 AI 趋势:代理人工智能的模型通道,Base URL 填 TaoToken 的 API 2026/9/19 0:42:41
Dify 1.11.1 MacOS-12(Intel) Docker 部署后跑 Workflow,模型供应商不走 DeepSeek 开放平台、改走 TaoToken 行不行 2026/9/19 0:42:41

最新资讯

ESP32接入云平台:ESP-IDF环境搭建与MQTT通信实践指南
Codex不是模型而是API协议:本地代理部署实战指南
基于STM32F103C8T6的桌面宠物:硬件架构与舵机控制实战
Codex不是模型而是协议:本地部署四步法与排错指南
51单片机数字音乐盒实战:定时器发声原理、电路与C51程序
ubuntu内存不足

今日推荐

oh-my-hermes:打造跨工具的命令编排与插件化工作流
OpenClaw.NET 用 /goal start 跑长任务,模型 Base URL 改到 TaoToken
SYB创业计划书财务逻辑拆解:从销售收入预测到现金流量计划

本周热门

AI SDK Harness 依赖更新指南:掌握 harness 包 SDK 依赖的升级、桥接同步与一致性校验
Refine v5 Ant Design NumberField 组件实战:基于 Intl 的本地化数字格式化
Flutter应用改名全指南:从Android到iOS的配置与工具实践

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

CANN pyasc 接口详解:asc.language.basic.set_fix_pipe_pre_quant_flag 与 Fixpipe 随路量化的标量参数设置

发布时间:2026/9/19 0:42:41
CANN pyasc 接口详解:asc.language.basic.set_fix_pipe_pre_quant_flag 与 Fixpipe 随路量化的标量参数设置 CANN pyasc 接口详解asc.language.basic.set_fix_pipe_pre_quant_flag 与 Fixpipe 随路量化的标量参数设置【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyascasc.language.basic.set_fix_pipe_pre_quant_flag是 CANN pyasc 算子编程接口中用于在 DataCopyCO1-GM、CO1-A1随路量化流程中设置标量量化参数的核心接口与fixpipe接口配套使用。本文基于 接口参考文档 展开并结合仓库中的 Python 实现、MLIR 方言定义与单元测试讲解该接口的签名语义、底层调用链与实战用法帮助读者在昇腾 AI 处理器算子开发中正确完成量化参数的传递。一、接口定位Fixpipe 随路量化中的标量参数入口在昇腾 AI 处理器的矩阵计算流程中Cube 单元完成矩阵乘等计算后结果数据通常暂存于 CO1Cube OutputCube 单元输出缓冲区中需要再经 DataCopy 搬移到 Global MemoryGM或 A1 缓冲区供后续算子或 host 侧使用。在搬移过程中数据可以“随路”on-the-fly完成反量化dequantization等处理从而避免额外的向量计算开销。set_fix_pipe_pre_quant_flag正是服务于这一场景的接口在 DataCopyCO1-GM、CO1-A1过程中进行随路量化时通过该接口设置量化流程中使用的标量量化参数见 basic 接口总览 中对该接口的功能描述。该接口在仓库中由如下几层定义共同支撑层级文件作用Python 封装fixpipe.py对外导出set_fix_pipe_pre_quant_flagPython 函数文档字符串utils.py生成 API 参考文档内容MLIR 方言 OpOpFixpipe.td定义ascendc.set_fixpipe_pre_quant_flagOp发射测试fixpipe.mlir验证发射为AscendC::SetFixpipePreQuantFlag调用二、函数签名与参数说明2.1 Python 接口签名asc.language.basic.set_fix_pipe_pre_quant_flag(config: int) - Noneconfig量化过程中使用到的标量量化参数语义类型为uint64_t无符号 64 位整数。返回值无None该接口只负责设置后续随路量化流程使用的标量参数。2.2 对应的 Ascend C 函数原型该 Python 接口在底层对应 Ascend C 中的内联函数__aicore__ inline void SetFixpipePreQuantFlag(uint64_t config)从 fixpipe.py 的源码可以看到Python 层会先把config显式物化为uint64类型再创建对应的 IR Oprequire_jit set_common_docstring(set_fix_pipe_pre_quant_flag) def set_fix_pipe_pre_quant_flag(config: RuntimeInt) - None: builder global_builder.get_ir_builder() builder.create_asc_SetFixpipePreQuantFlagOp(_mat(config, KT.uint64).to_ir())其中_mat(config, KT.uint64)通过materialize_ir_value将 Python 侧的整型常量物化为uint64类型的 IR 值create_asc_SetFixpipePreQuantFlagOp则向当前 IR 构建器追加一个ascendc.set_fixpipe_pre_quant_flagOp。2.3 IR 方言定义在 OpFixpipe.td 中该 Op 的定义为def AscendC_SetFixpipePreQuantFlagOp : APIOpset_fixpipe_pre_quant_flag, SetFixpipePreQuantFlag, [AscFunc] { let description Set scalar quantization parameters in fixpipe quantization process; let arguments (ins AnyType:$config); let assemblyFormat $config attr-dict : type($config); }可以看出该 Op 属于AscFuncAscend 函数调用类Op仅接收一个config操作数其打印格式为ascendc.set_fixpipe_pre_quant_flag %config : i64。APIOp模板中的第二个参数SetFixpipePreQuantFlag即最终发射到 Ascend C 源码中的函数名。三、随路量化参数与 fixpipe 接口的协同关系set_fix_pipe_pre_quant_flag设置的标量量化参数与fixpipe接口中的量化配置共同构成完整的随路量化流程fixpipe矩阵计算完成后对结果进行处理例如量化并把数据从 CO1 搬移到 Global Memory是随路量化的主搬移入口见 basic 接口总览set_fix_pipe_pre_quant_flag在搬移量化流程中补充设置标量量化参数如deq_scalar反量化缩放标量。fixpipe 的量化参数通过FixpipeParamsV220结构体传入其在 types.py 中定义关键字段包括字段IR 类型说明n_size/m_sizeui16搬移块的行、列尺寸src_stride/dst_strideui16/ui32源、目的步长quant_preQuantModes量化模式如QuantModes.NoQuantdeq_scalarui64反量化标量默认 0relu_eni1是否随路执行 ReLUnd_num、src_nd_stride、dst_nd_stride、unit_flag、is_channel_split各基础类型ND 维度搬移参数其中deq_scalar的 IR 类型同样是ui64与set_fix_pipe_pre_quant_flag的config参数类型一致二者共同描述反量化所用的标量。可以推断当量化流程的标量参数需要动态指定、或需要在fixpipe之外单独下发时即可通过set_fix_pipe_pre_quant_flag完成设置。四、调用示例与实战代码4.1 接口文档中的基础示例接口参考文档 给出的调用示例如下deq_scalar 11 asc.set_fix_pipe_pre_quant_flag(deq_scalar)4.2 单元测试中的完整用法仓库单元测试 test_fixpipe.py 给出了在asc.jit内核中调用该接口的完整模式import asc from asc.runtime import config from asc.runtime.jit import MockTensor def setup_function(): config.set_platform(config.Backend.Model, checkFalse) def test_set_fix_pipe_pre_quant_flag_kernel(mock_launcher_run): asc.jit def set_fix_pipe_pre_quant_flag_kernel(): deq_scalar 11 asc.set_fix_pipe_pre_quant_flag(deq_scalar) set_fix_pipe_pre_quant_flag_kernel[1]() assert mock_launcher_run.call_count 1要点说明该接口需在asc.jit修饰的内核函数中调用测试通过config.set_platform(config.Backend.Model, checkFalse)切换到 Model仿真后端deq_scalar 11作为标量量化参数传入与接口文档示例一致调用内核后通过mock_launcher_run断言内核被成功启动验证了接口在 JIT 编译链路中可正常完成 IR 构建与发射。4.3 与 fixpipe 组合的量化搬移示例参考同一测试文件中的test_fixpipetest_fixpipe.py一个完整的随路量化搬移流程如下asc.jit def kernel_fixpipe(x) - None: dst_gm asc.GlobalTensor() dst_gm.set_global_buffer(x) src_local asc.LocalTensor(dtypeasc.float16, posasc.TPosition.VECIN, addr0, tile_size512) workspace_local asc.LocalTensor(dtypeasc.uint64, posasc.TPosition.VECIN, addr512, tile_size1024) params asc.FixpipeParamsV220(n_size16, m_size16, src_stride32, dst_stride32, quant_preasc.QuantModes.NoQuant, deq_scalar0, nd_num1, src_nd_stride0, dst_nd_stride0, relu_enFalse, unit_flag0, is_channel_splitFalse) fixpipe_config asc.FixpipeConfig(asc.CO2Layout.ROW_MAJOR) asc.fixpipe(dst_gm, src_local, params, fixpipe_config) asc.fixpipe(dst_gm, src_local, workspace_local, params, fixpipe_config)在需要动态下发标量量化参数时可在fixpipe调用前或按流程需要通过set_fix_pipe_pre_quant_flag设置asc.set_fix_pipe_pre_quant_flag(deq_scalar) # deq_scalar 为量化标量如 11 asc.fixpipe(dst_gm, src_local, params, fixpipe_config)五、源码级实现原理与发射验证5.1 完整调用链set_fix_pipe_pre_quant_flag从 Python 到最终昇腾硬件指令的调用链可概括为Python 内核 (asc.jit) → asc.set_fix_pipe_pre_quant_flag(config) → materialize_ir_value(config, uint64) # 物化为 uint64 IR 值 → create_asc_SetFixpipePreQuantFlagOp # 构建 ascendc.set_fixpipe_pre_quant_flag Op → MLIR 优化与翻译 (ascir-translate -mlir-to-ascendc) → AscendC::SetFixpipePreQuantFlag(uint64_t) # 发射为 Ascend C 源码其中 MLIR 侧的 Op 定义见 OpFixpipe.tdAPIOpset_fixpipe_pre_quant_flag, SetFixpipePreQuantFlag, [AscFunc]直接决定了 Op 名称与发射后的 C 函数名对应关系。5.2 MLIR 到 Ascend C 的发射测试仓库中的 FileCheck 测试 fixpipe.mlir 明确验证了发射结果// RUN: ascir-translate -mlir-to-ascendc %s | FileCheck %s // CHECK-LABEL: void emit_set_fixpipe_pre_quant_flag() { // CHECK-NEXT: constexpr int64_t c11_i64 11; // CHECK-NEXT: AscendC::SetFixpipePreQuantFlag(c11_i64); // CHECK-NEXT: return; // CHECK-NEXT: } func.func emit_set_fixpipe_pre_quant_flag() { %config arith.constant 11 : i64 ascendc.set_fixpipe_pre_quant_flag %config : i64 return }可以看到传入的常量11最终被发射为AscendC::SetFixpipePreQuantFlag(c11_i64)与 Python 侧deq_scalar 11; asc.set_fix_pipe_pre_quant_flag(deq_scalar)的写法一一对应也印证了接口文档中config参数类型为uint64_t的说明。六、注意事项参数类型约束config在 Python 侧以int传入底层会被物化为uint64见 fixpipe.py。传入值超出 64 位无符号整数范围时物化过程可能产生截断建议按实际量化标量范围取值。必须在 JIT 内核中使用接口通过require_jit装饰只能在asc.jit编译的内核函数体内调用不能在普通 Python 函数中单独执行。与 fixpipe 参数协同该接口设置的是随路量化流程的标量参数完整量化行为还需配合FixpipeParamsV220中的quant_pre、deq_scalar等字段以及FixpipeConfig的搬移布局如CO2Layout.ROW_MAJOR共同确定详见 types.py。后端与平台接口的可用性取决于目标昇腾平台对SetFixpipePreQuantFlag的支持情况开发调试阶段可像单元测试那样通过config.set_platform(config.Backend.Model, checkFalse)在 Model 后端验证编译与发射正确性。七、进一步阅读接口总览basic 接口文档、language API 索引同族接口与类型fixpipefixpipe.py、FixpipeParamsV220/FixpipeConfigtypes.py方言与发射Op 定义 OpFixpipe.td、发射测试 fixpipe.mlir单元测试test_fixpipe.py入门示例仓库 examples 目录提供了01_add至10_fused_infer_attention系列从简单到完整的算子开发样例可配合本接口学习随路量化场景的工程化写法。【免费下载链接】pyasc本项目为Python用户提供算子编程接口支持在昇腾AI处理器上加速计算接口与Ascend C一一对应并遵守Python原生语法。项目地址: https://gitcode.com/cann/pyasc创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号