Cast
功能说明
数据类型转换运算。
所属头文件链接
/include/operators/math_expression.h
函数原型
template<CastMode castMode, typename R, typename T>
struct OpCast : UnaryOp<T, typename ReplaceTensorType<typename T::TensorType, R>::Type>
template<CastMode castMode = CastMode::CAST_ROUND, typename R, typename T>
__host_aicore__ constexpr auto Cast(Expression<T> lhs)
template<CastMode castMode = CastMode::CAST_ROUND, typename R, typename T>
__host_aicore__ constexpr auto Cast(T &&lhs)
参数说明
| 参数名称 | 参数类型 | 输入/输出 | 数据类型 | 参数说明 | 默认值 |
|---|---|---|---|---|---|
| castMode | 模板参数 | 输入 | NA | Cast操作支持的模式 | CastMode::CAST_ROUND |
| R | 模板参数 | 输入 | NA | Cast操作目标数据类型 | NA |
| T | 模板参数 | 输入 | NA | Cast操作原始数据类型 | NA |
| lhs | 函数形参 | 输入 | NA | Cast操作数,当类型是Expression<T>时,是张量,当类型是T时,是标量 | NA |
返回值说明
| 返回值数据类型 | 返回值说明 |
|---|---|
| Expression> | 返回一个OpCast的表达式 |
约束说明
NA
使用示例
template <typename InputDtype, typename OutputDtype>
struct Config {
struct Compute {
template <template <typename> class Tensor>
__host_aicore__ constexpr auto Compute() const
{
auto in = Atvoss::PlaceHolder<1, Tensor<InputDtype>, Atvoss::ParamUsage::IN>();
auto out = Atvoss::PlaceHolder<2, Tensor<OutputDtype>, Atvoss::ParamUsage::OUT>();
// 🔥🔥🔥 使用示例 🔥🔥🔥
return (out = Cast<CastMode::CAST_ROUND, OutputDtype>(in));
// 🔥🔥🔥 使用示例 🔥🔥🔥
};
};
};
template <typename InputDtype, typename OutputDtype>
struct Config {
struct Compute {
template <template <typename> class Tensor>
__host_aicore__ constexpr auto Compute() const
{
auto scalar = Atvoss::PlaceHolder<1, InputDtype, Atvoss::ParamUsage::IN>();
auto out = Atvoss::PlaceHolder<2, Tensor<OutputDtype>, Atvoss::ParamUsage::OUT>();
// 🔥🔥🔥 使用示例 🔥🔥🔥
return (out = Cast<CastMode::CAST_ROUND, OutputDtype>(scalar));
// 🔥🔥🔥 使用示例 🔥🔥🔥
};
};
};