ScalarCast
功能说明
将一个scalar的类型转换为指定的类型。
函数原型
template <typename srcT, typename dstT, RoundMode roundMode> __aicore__ inline dstT ScalarCast(srcT valueIn);
参数说明
参数名 |
输入/输出 |
描述 |
---|---|---|
valueIn |
输入 |
被转换数据类型的scalar。 |
srcT |
输入 |
valueIn的数据类型,支持float。 |
dstT |
输入 |
转换后的数据类型,支持half、int32_t。 |
roundMode |
输入 |
精度转换处理模式,类型是RoundMode。 RoundMode为枚举类型,用以控制精度转换处理模式,具体定义为: enum class RoundMode { CAST_NONE = 0, // 在转换有精度损失时表示CAST_RINT模式,不涉及精度损失时表示不取整 CAST_RINT, // rint,四舍六入五成双取整 CAST_FLOOR, // floor,向负无穷取整 CAST_CEIL, // ceil,向正无穷取整 CAST_ROUND, // round,四舍五入取整 CAST_TRUNC, // trunc,向零取整 CAST_ODD, // Von Neumann rounding,最近邻奇数取整 }; 对于ScalarCast,转换类型仅支持float转half(f322f16)与float转int32_t(f322s32),相应支持的RoundMode如下: f322f16:CAST_ODD f322s32:CAST_ROUND、CAST_CEIL、CAST_FLOOR、CAST_RINT ScalarCast的精度转换规则与Cast保持一致,具体可参考表1。 |
返回值
dstT类型的valueIn。
支持的型号
Atlas推理系列产品AI Core
Atlas A2训练系列产品/Atlas 800I A2推理产品
约束说明
无。
调用示例
float valueIn = 2.5; int32_t valueOut = ScalarCast<float, int32_t, RoundMode::CAST_ROUND>(valueIn); 输出数据(oneCount): 3
父主题: 标量计算