Skip to content
Merged
18 changes: 12 additions & 6 deletions onnxruntime/core/providers/cpu/activation/activations.cc
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,10 @@ namespace onnxruntime {
op, since_version, type, \
KernelDefBuilder().MayInplace(0, 0).TypeConstraint("T", DataTypeImpl::GetTensorType<type>()), op<type>);

REGISTER_UNARY_ELEMENTWISE_KERNEL(Elu, 6);
REGISTER_UNARY_ELEMENTWISE_KERNEL(HardSigmoid, 6);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(Elu, 6, 21);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Elu, 22);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(HardSigmoid, 6, 21);
REGISTER_UNARY_ELEMENTWISE_KERNEL(HardSigmoid, 22);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(LeakyRelu, 6, 15);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(Relu, 6, 12, float);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(Relu, 6, 12, double);
Expand All @@ -52,19 +54,23 @@ REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(LeakyRelu, 6, 15, MLFloat16);
REGISTER_UNARY_ELEMENTWISE_TYPED_KERNEL(LeakyRelu, 16, MLFloat16);
#endif // MLAS_F16VEC_INTRINSICS_SUPPORTED

REGISTER_UNARY_ELEMENTWISE_KERNEL(Selu, 6);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(Selu, 6, 21);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Selu, 22);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(Sigmoid, 6, 12, float);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(Sigmoid, 6, 12, double);
REGISTER_UNARY_ELEMENTWISE_TYPED_KERNEL(Sigmoid, 13, float);
REGISTER_UNARY_ELEMENTWISE_TYPED_KERNEL(Sigmoid, 13, double);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Softplus, 1);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Softsign, 1);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(Softplus, 1, 21);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Softplus, 22);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(Softsign, 1, 21);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Softsign, 22);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(Tanh, 6, 12, float);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_TYPED_KERNEL(Tanh, 6, 12, double);
REGISTER_UNARY_ELEMENTWISE_KERNEL(Celu, 12);
REGISTER_UNARY_ELEMENTWISE_TYPED_KERNEL(Tanh, 13, float);
REGISTER_UNARY_ELEMENTWISE_TYPED_KERNEL(Tanh, 13, double);
REGISTER_UNARY_ELEMENTWISE_KERNEL(ThresholdedRelu, 10);
REGISTER_VERSIONED_UNARY_ELEMENTWISE_KERNEL(ThresholdedRelu, 10, 21);
REGISTER_UNARY_ELEMENTWISE_KERNEL(ThresholdedRelu, 22);

// Opset-16 adds BFloat16 to allowed types for the LeakyRelu operator
REGISTER_UNARY_ELEMENTWISE_KERNEL(LeakyRelu, 16);
Expand Down
286 changes: 192 additions & 94 deletions onnxruntime/core/providers/cpu/cpu_execution_provider.cc

Large diffs are not rendered by default.

8 changes: 7 additions & 1 deletion onnxruntime/core/providers/cpu/fp16/fp16_conv.cc
Original file line number Diff line number Diff line change
Expand Up @@ -596,9 +596,15 @@ Status FusedConvFp16::Compute(OpKernelContext* context) const {
// Operator definitions
//

ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
Conv,
11, 21 MLFloat16,
Comment thread
titaiwangms marked this conversation as resolved.
Outdated
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
FusedConvFp16);

ONNX_CPU_OPERATOR_TYPED_KERNEL(
Conv,
11,
22,
MLFloat16,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
FusedConvFp16);
Expand Down
18 changes: 16 additions & 2 deletions onnxruntime/core/providers/cpu/fp16/fp16_pool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -224,9 +224,16 @@ ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);

ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
MaxPool,
12, 21,
MLFloat16,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);

ONNX_CPU_OPERATOR_TYPED_KERNEL(
MaxPool,
12,
22,
MLFloat16,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);
Expand All @@ -244,9 +251,16 @@ ONNX_CPU_OPERATOR_TYPED_KERNEL(
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);

ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
GlobalAveragePool,
1, 21,
MLFloat16,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);

ONNX_CPU_OPERATOR_TYPED_KERNEL(
GlobalAveragePool,
1,
22,
MLFloat16,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);
Expand Down
10 changes: 9 additions & 1 deletion onnxruntime/core/providers/cpu/math/det.cc
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,17 @@ using namespace onnxruntime::common;

namespace onnxruntime {

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Det,
11,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Det<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Det,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Det<float>);

Expand Down
116 changes: 104 additions & 12 deletions onnxruntime/core/providers/cpu/math/element_wise_ops.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1337,16 +1337,30 @@ class Sin final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
Sin,
7, 21,
float,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Sin<float>);

ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
Sin,
7, 21,
double,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<double>()),
Sin<double>);

ONNX_CPU_OPERATOR_TYPED_KERNEL(
Sin,
7,
22,
float,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Sin<float>);

ONNX_CPU_OPERATOR_TYPED_KERNEL(
Sin,
7,
22,
double,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<double>()),
Sin<double>);
Expand All @@ -1365,9 +1379,17 @@ class Cos final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Cos,
7,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Cos<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Cos,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Cos<float>);

Expand All @@ -1385,9 +1407,15 @@ class Tan final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Tan,
7, 21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Tan<float>);

ONNX_CPU_OPERATOR_KERNEL(
Tan,
7,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Tan<float>);

Expand All @@ -1405,9 +1433,17 @@ class Asin final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Asin,
7,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Asin<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Asin,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Asin<float>);

Expand All @@ -1425,9 +1461,17 @@ class Acos final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Acos,
7,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Acos<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Acos,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Acos<float>);

Expand All @@ -1445,9 +1489,17 @@ class Atan final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Atan,
7,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Atan<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Atan,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Atan<float>);

Expand All @@ -1465,9 +1517,17 @@ class Sinh final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Sinh,
9,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Sinh<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Sinh,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Sinh<float>);

Expand All @@ -1485,9 +1545,17 @@ class Cosh final : public OpKernel {
}
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Cosh,
9,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Cosh<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Cosh,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Cosh<float>);

Expand Down Expand Up @@ -1517,9 +1585,17 @@ class Asinh final : public OpKernel {
ORT_DISALLOW_COPY_ASSIGNMENT_AND_MOVE(Asinh);
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Asinh,
9,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Asinh<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Asinh,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Asinh<float>);

Expand Down Expand Up @@ -1549,9 +1625,17 @@ class Acosh final : public OpKernel {
ORT_DISALLOW_COPY_ASSIGNMENT_AND_MOVE(Acosh);
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Acosh,
9,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Acosh<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Acosh,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Acosh<float>);

Expand Down Expand Up @@ -1581,9 +1665,17 @@ class Atanh final : public OpKernel {
ORT_DISALLOW_COPY_ASSIGNMENT_AND_MOVE(Atanh);
};

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Atanh,
9,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Atanh<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Atanh,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Atanh<float>);

Expand Down
10 changes: 7 additions & 3 deletions onnxruntime/core/providers/cpu/math/round.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,13 @@

namespace onnxruntime {

ONNX_CPU_OPERATOR_TYPED_KERNEL(Round, 11, MLFloat16, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()), Round<MLFloat16>);
ONNX_CPU_OPERATOR_TYPED_KERNEL(Round, 11, float, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()), Round<float>);
ONNX_CPU_OPERATOR_TYPED_KERNEL(Round, 11, double, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<double>()), Round<double>);
ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(Round, 11, 21, MLFloat16, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()), Round<MLFloat16>);
ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(Round, 11, 21, float, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()), Round<float>);
ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(Round, 11, 21, double, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<double>()), Round<double>);

ONNX_CPU_OPERATOR_TYPED_KERNEL(Round, 22, MLFloat16, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()), Round<MLFloat16>);
ONNX_CPU_OPERATOR_TYPED_KERNEL(Round, 22, float, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()), Round<float>);
ONNX_CPU_OPERATOR_TYPED_KERNEL(Round, 22, double, KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<double>()), Round<double>);

template <typename T>
Status Round<T>::Compute(OpKernelContext* ctx) const {
Expand Down
10 changes: 9 additions & 1 deletion onnxruntime/core/providers/cpu/nn/Unpool.cc
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,17 @@ ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
.TypeConstraint("T2", DataTypeImpl::GetTensorType<int64_t>()),
MaxUnpool);

ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
MaxUnpool,
11, 21,
KernelDefBuilder()
.TypeConstraint("T1", DataTypeImpl::GetTensorType<float>())
.TypeConstraint("T2", DataTypeImpl::GetTensorType<int64_t>()),
MaxUnpool);

ONNX_CPU_OPERATOR_KERNEL(
MaxUnpool,
11,
22,
KernelDefBuilder()
.TypeConstraint("T1", DataTypeImpl::GetTensorType<float>())
.TypeConstraint("T2", DataTypeImpl::GetTensorType<int64_t>()),
Expand Down
10 changes: 9 additions & 1 deletion onnxruntime/core/providers/cpu/nn/conv.cc
Original file line number Diff line number Diff line change
Expand Up @@ -300,9 +300,17 @@ ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Conv<float>);

ONNX_CPU_OPERATOR_KERNEL(
ONNX_CPU_OPERATOR_VERSIONED_KERNEL(
Conv,
11,
21,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Conv<float>);

// Opset 22 starts to support bfloat16
ONNX_CPU_OPERATOR_KERNEL(
Conv,
22,
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<float>()),
Conv<float>);

Expand Down
Loading