
HF32【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit特性说明HF32的核心功能体现为用户在输入矩阵A和B都为fp32数据类型的场景下当配置开启HF32开关后fp32数据在执行矩阵乘法运算前会被转换并舍入为HF32half-fp32格式。这种做法可使Mmadfp32-fp32接口的计算性能提升至原来的两倍但会带来一定的精度损失。需要注意的是尽管中间计算使用HF32格式最终的运算结果仍以fp32格式输出以保证后续处理的兼容性。注意启用HF32会引入精度损失fp32输入数据会在矩阵乘法运算前转换并舍入为HF32格式。舍入模式说明fp32至HF32转换过程中的舍入模式由SetHF32TransMode接口配置。当HF32模式开启且设置TransMode为HF32TransMode::NEAREST_ZERO时则FP32将以向零靠近的方式四舍五入为HF32若设置TransMode为HF32TransMode::NEAREST_EVEN时则FP32将以最接近偶数的方式四舍五入为HF32。图1HF32数值精度示意图注意针对Ascend 950PR/Ascend 950DT产品其HF32格式的尾数位为10位示意图如图2所示图2Ascend 950PR/Ascend 950DT产品HF32数值精度示意图约束说明HF32适用于输入矩阵A和B均为fp32数据类型的Mmadfp32-fp32场景。使用HF32模式前需要通过SetHF32Mode开启HF32模式fp32至HF32转换过程中的舍入模式由SetHF32TransMode配置。使用示例使用SetHF32Mode开启或关闭HF32模式使用SetHF32TransMode配置舍入模式。using namespace AscendC::Te; // 开启HF32模式 AscendC::SetHF32Mode(AscendC::HF32Mode::ENABLE); // 设置转换模式为向零靠近的方式处理 AscendC::SetHF32TransMode(AscendC::HF32TransMode::NEAREST_ZERO); // Mmad计算代码 MmadParams params(m, n, k, 0, true); auto atom MakeMmad(MmadOperation{}, MmadTraitDefault{}).with(params); Mmad(atom, l0C, l0A, l0B); // 关闭HF32模式 AscendC::SetHF32Mode(AscendC::HF32Mode::DISABLE); AscendC::SetHF32TransMode(AscendC::HF32TransMode::NEAREST_EVEN);【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考