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

CANN/catlass FP8转FP16反量化Tile操作

TileCastFp8ToFp16Dequant

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

代码位置

[TOC]

功能说明

TileCastFp8ToFp16Dequant模板负责将 FP8(int8_t存储)量化数据反量化(dequant)并转换为 FP16(half),结果直接写回 GM。常用于 A 矩阵(weight)的 Prologue 阶段,在计算前完成数据解量化。

流水线:GM(fp8) → UB → Dequant(fp8→fp16) → UB → GM(fp16),使用双缓冲(BUFFER_NUM=2)和 4 个 EventId 实现 MTE2/V/MTE3 三级流水并发。

TileCastInt8ToFp16Dequant的区别在于 Dequant 实现不同(FP8 使用查表/位运算),且支持 ColumnMajor 排布。

限制:仅支持 AtlasA2 架构(CATLASS_ARCH == 2201)。

模板原型

template < class ArchTag, // 架构标签:仅 Arch::AtlasA2 class SrcType_, // 源类型:Gemm::GemmType<ElementSrc, LayoutSrc> class DstType_, // 目标类型:Gemm::GemmType<ElementDst, LayoutDst> uint32_t COMPUTE_LENGTH // 每次 Vector 引擎计算的长度 > struct TileCastFp8ToFp16Dequant { using ElementSrc = typename SrcType_::Element; // int8_t(FP8) using ElementDst = typename DstType_::Element; // half(FP16) using LayoutTagSrc = typename SrcType_::Layout; using LayoutTagDst = typename DstType_::Layout; };
  • COMPUTE_LENGTH:单次 Dequant 计算长度,影响 UB buffer 分配大小
  • LayoutSrc/LayoutDst:只支持 RowMajor 或 ColumnMajor,且两者必须相同

构造与析构

构造函数

TileCastFp8ToFp16Dequant(Arch::Resource<ArchTag> &resource, Params const &params_);

Arch::Resource的 UB buffer 中分配双缓冲:

  • inputBuffer[2]×COMPUTE_LENGTH× 1 byte(FP8 输入)
  • outputBuffer[2]×COMPUTE_LENGTH× 2 bytes(FP16 输出)
  • workspace[2]×COMPUTE_LENGTH× 2 bytes(计算 workspace)

Params

struct Params { half scalar; // 反量化 scale half zeroPoint; // 反量化 zero point Params() = default; Params(half scalar_, half zeroPoint_); };

析构函数

无(UB buffer 由 Resource 管理)。

调用接口

主接口(FP8 → FP16 Dequant)

void operator()( AscendC::GlobalTensor<ElementDst> gmDst, LayoutDst const &layoutDst, // GM 目标(FP16) AscendC::GlobalTensor<ElementSrc> gmSrc, LayoutSrc const &layoutSrc, // GM 源(FP8) uint32_t &bufferIndex // 双缓冲索引(in/out) );

Epilogue 辅助接口(FP32 → FP16 Cast)

void EpCastFp32ToFp16( AscendC::GlobalTensor<half> gmDst, LayoutRowMajor layoutDst, AscendC::GlobalTensor<float> gmSrc, LayoutRowMajor layoutSrc );

用于 Epilogue 阶段将 float 累加结果 cast 为 half,仅支持 RowMajor。

调用示例

#include "catlass/gemm/tile/cast_fp8_to_fp16.hpp" using namespace Catlass::Gemm::Tile; using ElementSrc = int8_t; using ElementDst = half; using SrcType = Gemm::GemmType<ElementSrc, layout::RowMajor>; using DstType = Gemm::GemmType<ElementDst, layout::RowMajor>; constexpr uint32_t COMPUTE_LENGTH = 16 * 1024; const int M = 256; const int K = 4096; auto layoutSrc = layout::RowMajor::MakeLayout<ElementSrc>(M, K); auto layoutDst = layout::RowMajor::MakeLayout<ElementDst>(M, K); AscendC::GlobalTensor<ElementSrc> gmSrc; AscendC::GlobalTensor<ElementDst> gmDst; Arch::Resource<Arch::AtlasA2> resource; TileCastFp8ToFp16Dequant<Arch::AtlasA2, SrcType, DstType, COMPUTE_LENGTH>::Params params(0.5, 0.0); TileCastFp8ToFp16Dequant<Arch::AtlasA2, SrcType, DstType, COMPUTE_LENGTH> castOp(resource, params); uint32_t bufferIndex = 0; castOp(gmDst, layoutDst, gmSrc, layoutSrc, bufferIndex);

【免费下载链接】catlass本项目是CANN的算子模板库,提供NPU上高性能矩阵乘及其相关融合类算子模板样例。项目地址: https://gitcode.com/cann/catlass

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

http://www.zskr.cn/news/1426699.html

相关文章:

  • Kimi LeetCode 2836. 在传球游戏中最大化函数值 Java实现
  • 宁波酒店厨房设备回收:江北专业的空调回收公司选哪家 - LYL仔仔
  • 【独家首发】全球首份Claude竞品压力测试报告:在金融合同解析、医疗术语推理、多跳法律检索三大高危场景中,仅2家通过95%准确率阈值
  • 2026宁夏搬家公司推荐,甄选靠谱搬家服务商打造安心搬迁体验 - 品牌鉴赏师
  • 2026年GEO源头厂家公司怎么选?杭州本土技术派深度拆解 - 品牌报告
  • 系统性搜寻未知:构建可观测性驱动的技术问题排查框架
  • VideoGameBunny-V1-4B架构深度解析:BunnyPhi3与SigLIP视觉塔的技术融合
  • CANN/catlass A8W4量化TileCopy组件
  • 30天打造反臃肿AI演示工具:从减法设计到文件优先的工程实践
  • gte-base与其他嵌入模型对比:为什么选择阿里达摩院的文本嵌入方案
  • 【赵渝强老师】崖山数据库的数据字典
  • 照着用就行:2026年闭眼可入的专业降AI率平台 - 降AI小能手
  • AI建站避坑指南:10个高频问题帮你躲开90%的坑
  • HuggingFace镜像项目glaive_toolcall_zh:中文工具调用数据集贡献者完全指南
  • 天津本地商家GEO推广服务商推荐 - 舒雯文化
  • 别再只用RAID 0了!Ubuntu 22.04下用mdadm搭建RAID 0+1,兼顾速度与数据安全
  • Unity 2022 保姆级教程:从项目到APK,手把手教你打包第一个手机游戏
  • Fan Control终极指南:3步打造Windows风扇智能温控系统
  • 红队测试:攻击你的 Agent Harness 以发现漏洞
  • 山东滨亿机械设备:东营发电机出租公司推荐 - LYL仔仔
  • 金价992元/克!2026年5月珠海卖黄金,这6家门店实测排名出炉,第一名实至名归 - 润富黄金珠宝行
  • 如何快速掌握遗传数据分析:LDSC工具的完整指南
  • 从数据到决策:手把手教你用GEE分析TCC树冠数据,评估城市绿地与碳汇潜力
  • 2026最新舟山市黄金回收铂金回收白银回收怎么选?多家靠谱门店实测对比及联系方式推荐 - 亦辰小黄鸭
  • 别再傻傻用行波进位了!手把手教你用Verilog门级描述实现4bit超前进位加法器
  • 从自动关机到稳定运行:手把手教你排查并永久解决Windows Server 2016评估版激活问题
  • 下一代医疗分析系统:从数据融合、实时计算到临床落地的架构与实战
  • UniversalAdbDriver:Windows平台Android设备调试驱动统一解决方案
  • 告别昂贵硬件:用你的旧iPhone和UE5 Live Link搭建低成本虚拟制片演练环境
  • PPTX转HTML终极指南:免费快速实现PowerPoint到网页的无缝转换