文档
注册

ScalarCast

功能说明

将一个scalar的类型转换为指定的类型。

函数原型

template <typename srcT, typename dstT, RoundMode roundMode> __aicore__ inline dstT ScalarCast(srcT valueIn);

参数说明

表1 参数说明

参数名

输入/输出

描述

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推理系列产品(Ascend 310P处理器)AI Core

Atlas A2训练系列产品/Atlas 800I A2推理产品

约束说明

无。

调用示例

float valueIn = 2.5;
int32_t valueOut = ScalarCast<float, int32_t, RoundMode::CAST_ROUND>(valueIn);
输出数据(oneCount): 3
搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词