Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions docs/How_To_Update_ONNX_Dev_Notes.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,10 @@ This file should be generated. See [cgmanifests/README](/cgmanifests/README.md)
1. If there is a build failure in stage "Check out of dated documents" in WebAssembly CI pipeline, update ONNX Runtime
Web WebGL operator support document:
- Make sure Node.js is installed (see [Prerequisites](../js/README.md#Prerequisites) for instructions).
- Follow step 1 in [js/Build](../js/README.md#Build-2) to install dependencies).
- Follow [js/Build](../js/README.md#Build-2) to install dependencies.
- Follow instructions in [Generate document](../js/README.md#Generating-Document) to update document. Commit changes applied to file `docs/operators.md`.

1. Usually some newly introduced tests will fail. Then you may need to update
2. Usually some newly introduced tests will fail. Then you may need to update
- [onnxruntime/test/onnx/main.cc](/onnxruntime/test/onnx/main.cc)
- [onnxruntime/test/providers/cpu/model_tests.cc](/onnxruntime/test/providers/cpu/model_tests.cc)
- [csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/InferenceTest.netcore.cs](/csharp/test/Microsoft.ML.OnnxRuntime.Tests.NetCoreApp/InferenceTest.netcore.cs)
Expand Down
102 changes: 68 additions & 34 deletions docs/OperatorKernels.md

Large diffs are not rendered by default.

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
304 changes: 205 additions & 99 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,
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
27 changes: 24 additions & 3 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 @@ -237,16 +244,30 @@ ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(
KernelDefBuilder().TypeConstraint("T", DataTypeImpl::GetTensorType<MLFloat16>()),
PoolFp16);

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

ONNX_CPU_OPERATOR_TYPED_KERNEL(
AveragePool,
19,
22,
MLFloat16,
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
Loading