CANN/asc-devkit Cast多类型转float
Cast多类型转float【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit产品支持情况Ascend 950PR/Ascend 950DT支持Atlas A3 训练系列产品/Atlas A3 推理系列产品支持Atlas A2 训练系列产品/Atlas A2 推理系列产品支持Atlas 200I/500 A2 推理产品不支持Atlas 推理系列产品AI Core不支持Atlas 推理系列产品Vector Core不支持Atlas 训练系列产品不支持功能说明头文件路径为basic_api/kernel_operator_scalar_intf.h。该接口将输入数据转换为float类型。在使用该接口之前用户需要先了解内置数据类型和精度转换。函数原型以下函数原型仅支持Atlas A2 训练系列产品/Atlas A2 推理系列产品Atlas A3 训练系列产品/Atlas A3 推理系列产品bfloat16_t类型转换为float类型__aicore__ inline float Cast(const bfloat16_t bVal)以下函数原型仅支持Ascend 950PR/Ascend 950DT支持多种数据类型转换为float类型template typename T, typename U float, typename Std::enable_if_t (Std::is_sameT, bfloat16_t::value || Std::is_sameT, hifloat8_t::value || Std::is_sameT, fp8_e5m2_t::value || Std::is_sameT, fp8_e4m3fn_t::value || Std::is_sameT, fp4x2_e1m2_t::value || Std::is_sameT, fp4x2_e2m1_t::value), void __aicore__ constexpr inline U Cast(T bVal)参数说明表1模板参数说明参数名描述T操作数数据类型。U返回值数据类型。表2接口参数说明参数名称输入/输出含义bVal输入待转换的标量数据。数据类型支持的操作数数据类型如下Ascend 950PR/Ascend 950DT支持fp4x2_e2m1_t、fp4x2_e1m2_t、hifloat8_t、fp8_e5m2_t、fp8_e4m3fn_t、bfloat16_t。Atlas A3 训练系列产品/Atlas A3 推理系列产品支持bfloat16_t。Atlas A2 训练系列产品/Atlas A2 推理系列产品支持bfloat16_t。fp4x2_e1m2_t和fp4x2_e2m1_t类型为了满足1byte数据大小构造时由两个四位标量数据拼接生成。转换时被转换的是fp4x2_e1m2_t和fp4x2_e2m1_t标量数据中低位4bit的值即[0:3]位。支持的返回值数据类型为float。返回值说明转换后的float类型标量数据。约束说明输入参数为立即数时需要使用显式类型转换例如// 错误写法AscendC暂不支持整数类型转float编译报错 float x AscendC::Cast(1); // 正确写法 float x AscendC::Cast((bfloat16_t)1);调用示例float fVal 3.14159; bfloat16_t bVal AscendC::Cast(fVal); // 返回3.140625 fVal AscendC::Cast(bVal); // 返回3.140625【免费下载链接】asc-devkit本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言原生支持C和C标准规范主要由类库和语言扩展层构成提供多层级API满足多维场景算子开发诉求。项目地址: https://gitcode.com/cann/asc-devkit创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考