HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
op_kernel.h File Reference
#include "boost/mp11.hpp"
#include "core/framework/prepacked_weights_container.h"
#include <functional>
#include "core/common/exceptions.h"
#include "core/common/logging/logging.h"
#include "core/common/status.h"
#include "core/framework/execution_provider.h"
#include "core/framework/kernel_def_builder.h"
#include "core/framework/ort_value.h"
#include "core/framework/op_kernel_info.h"
#include "core/framework/op_node_proto_helper.h"
#include "core/framework/tensor.h"
#include "core/framework/sparse_tensor.h"
#include "core/graph/constants.h"
#include "core/graph/graph_viewer.h"
#include "onnx/defs/schema.h"
#include "onnx/onnx_pb.h"
#include "onnx/onnx-operators_pb.h"
#include "core/common/gsl.h"
#include "core/framework/op_kernel_context.h"
+ Include dependency graph for op_kernel.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  onnxruntime::OpKernel
 
struct  onnxruntime::KernelCreateInfo
 
struct  onnxruntime::BuildKernelDefConstraintsImpl< Types >
 
struct  onnxruntime::BuildKernelDefSparseConstraintsImpl< Types >
 

Namespaces

 onnxruntime
 
 onnxruntime::ml
 
 onnxruntime::contrib
 
 onnxruntime::contrib::cuda
 
 onnxruntime::contrib::rocm
 
 onnxruntime::contrib::snpe
 

Macros

#define ONNX_OPERATOR_KERNEL_CLASS_NAME(provider, domain, ver, name)   provider##_##name##_##domain##_ver##ver
 
#define ONNX_CPU_OPERATOR_KERNEL(name, ver, builder,...)   ONNX_OPERATOR_KERNEL_EX(name, kOnnxDomain, ver, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_CPU_OPERATOR_ML_KERNEL(name, ver, builder,...)   ONNX_OPERATOR_KERNEL_EX(name, kMLDomain, ver, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_CPU_OPERATOR_MS_KERNEL(name, ver, builder,...)   ONNX_OPERATOR_KERNEL_EX(name, kMSDomain, ver, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_OPERATOR_KERNEL_EX(name, domain, ver, provider, builder,...)
 
#define ONNX_OPERATOR_VERSIONED_KERNEL_CLASS_NAME(provider, domain, startver, endver, name)   provider##_##name##_##domain##_ver##startver##_##endver
 
#define ONNX_CPU_OPERATOR_VERSIONED_KERNEL(name, startver, endver, builder,...)   ONNX_OPERATOR_VERSIONED_KERNEL_EX(name, kOnnxDomain, startver, endver, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_CPU_OPERATOR_VERSIONED_ML_KERNEL(name, startver, endver, builder,...)   ONNX_OPERATOR_VERSIONED_KERNEL_EX(name, kMLDomain, startver, endver, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_OPERATOR_VERSIONED_KERNEL_EX(name, domain, startver, endver, provider, builder,...)
 
#define ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type, name)   provider##_##name##_##domain##_ver##ver##_##type
 
#define ONNX_CPU_OPERATOR_TYPED_KERNEL(name, ver, type, builder,...)   ONNX_OPERATOR_TYPED_KERNEL_EX(name, kOnnxDomain, ver, type, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_CPU_OPERATOR_TYPED_ML_KERNEL(name, ver, type, builder,...)   ONNX_OPERATOR_TYPED_KERNEL_EX(name, kMLDomain, ver, type, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_CPU_OPERATOR_TYPED_MS_KERNEL(name, ver, type, builder,...)   ONNX_OPERATOR_TYPED_KERNEL_EX(name, kMSDomain, ver, type, kCpuExecutionProvider, builder, __VA_ARGS__)
 
#define ONNX_OPERATOR_TYPED_KERNEL_EX(name, domain, ver, type, provider, builder,...)
 
#define ONNX_OPERATOR_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type1, type2, name)   provider##_##name##_##domain##_ver##ver##_##type1##_##type2
 
#define ONNX_OPERATOR_TWO_TYPED_KERNEL_EX(name, domain, ver, type1, type2, provider, builder,...)
 
#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(provider, domain, startver, endver, type, name)   provider##_##name##_##domain##_ver##startver##_##endver##_##type
 
#define ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL(name, startver, endver, type, builder,...)
 
#define ONNX_CPU_OPERATOR_VERSIONED_TYPED_ML_KERNEL(name, startver, endver, type, builder,...)
 
#define ONNX_CPU_OPERATOR_VERSIONED_TYPED_MS_KERNEL(name, startver, endver, type, builder,...)
 
#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX(name, domain, startver, endver, type, provider, builder,...)
 
#define ONNX_OPERATOR_VERSIONED_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, startver, endver, type1, type2, name)   provider##_##name##_##domain##_ver##startver##_##endver##_##type1##_##type2
 
#define ONNX_OPERATOR_VERSIONED_TWO_TYPED_KERNEL_EX(name, domain, startver, endver, type1, type2,provider, builder,...)
 

Typedefs

using onnxruntime::KernelCreateFn = std::function< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>
 
using onnxruntime::KernelCreatePtrFn = std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type
 
using onnxruntime::BuildKernelCreateInfoFn ) = KernelCreateInfo(*)(
 

Functions

std::unique_ptr< OpKernelInfo > onnxruntime::CopyOpKernelInfo (const OpKernelInfo &info)
 
template<typename T >
KernelCreateInfo onnxruntime::BuildKernelCreateInfo ()
 
template<typename T >
KernelCreateInfo onnxruntime::ml::BuildKernelCreateInfo ()
 
template<typename T >
KernelCreateInfo onnxruntime::contrib::BuildKernelCreateInfo ()
 
template<typename T >
KernelCreateInfo onnxruntime::contrib::cuda::BuildKernelCreateInfo ()
 
template<typename T >
KernelCreateInfo onnxruntime::contrib::rocm::BuildKernelCreateInfo ()
 
template<typename T >
KernelCreateInfo onnxruntime::contrib::snpe::BuildKernelCreateInfo ()
 
template<typename... Types>
std::vector< MLDataType > onnxruntime::BuildKernelDefConstraints ()
 
template<typename... Types>
std::vector< MLDataType > onnxruntime::BuildKernelDefSparseConstraints ()
 
template<typename L >
std::vector< MLDataType > onnxruntime::BuildKernelDefConstraintsFromTypeList ()
 
template<typename L >
std::vector< MLDataType > onnxruntime::BuildKernelDefSparseConstraintsFromTypeList ()
 

Macro Definition Documentation

#define ONNX_CPU_OPERATOR_KERNEL (   name,
  ver,
  builder,
  ... 
)    ONNX_OPERATOR_KERNEL_EX(name, kOnnxDomain, ver, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 195 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_ML_KERNEL (   name,
  ver,
  builder,
  ... 
)    ONNX_OPERATOR_KERNEL_EX(name, kMLDomain, ver, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 198 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_MS_KERNEL (   name,
  ver,
  builder,
  ... 
)    ONNX_OPERATOR_KERNEL_EX(name, kMSDomain, ver, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 201 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_TYPED_KERNEL (   name,
  ver,
  type,
  builder,
  ... 
)    ONNX_OPERATOR_TYPED_KERNEL_EX(name, kOnnxDomain, ver, type, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 250 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_TYPED_ML_KERNEL (   name,
  ver,
  type,
  builder,
  ... 
)    ONNX_OPERATOR_TYPED_KERNEL_EX(name, kMLDomain, ver, type, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 253 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_TYPED_MS_KERNEL (   name,
  ver,
  type,
  builder,
  ... 
)    ONNX_OPERATOR_TYPED_KERNEL_EX(name, kMSDomain, ver, type, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 256 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_VERSIONED_KERNEL (   name,
  startver,
  endver,
  builder,
  ... 
)    ONNX_OPERATOR_VERSIONED_KERNEL_EX(name, kOnnxDomain, startver, endver, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 227 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_VERSIONED_ML_KERNEL (   name,
  startver,
  endver,
  builder,
  ... 
)    ONNX_OPERATOR_VERSIONED_KERNEL_EX(name, kMLDomain, startver, endver, kCpuExecutionProvider, builder, __VA_ARGS__)

Definition at line 230 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_VERSIONED_TYPED_KERNEL (   name,
  startver,
  endver,
  type,
  builder,
  ... 
)
Value:
__VA_ARGS__)
#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX(name, domain, startver, endver, type, provider, builder,...)
Definition: op_kernel.h:305
constexpr const char * kOnnxDomain
Definition: constants.h:12
GLuint const GLchar * name
Definition: glcorearb.h:786
constexpr const char * kCpuExecutionProvider
Definition: constants.h:26
type
Definition: core.h:1059

Definition at line 293 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_VERSIONED_TYPED_ML_KERNEL (   name,
  startver,
  endver,
  type,
  builder,
  ... 
)
Value:
__VA_ARGS__)
#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX(name, domain, startver, endver, type, provider, builder,...)
Definition: op_kernel.h:305
constexpr const char * kMLDomain
Definition: constants.h:15
GLuint const GLchar * name
Definition: glcorearb.h:786
constexpr const char * kCpuExecutionProvider
Definition: constants.h:26
type
Definition: core.h:1059

Definition at line 297 of file op_kernel.h.

#define ONNX_CPU_OPERATOR_VERSIONED_TYPED_MS_KERNEL (   name,
  startver,
  endver,
  type,
  builder,
  ... 
)
Value:
__VA_ARGS__)
#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX(name, domain, startver, endver, type, provider, builder,...)
Definition: op_kernel.h:305
constexpr const char * kMSDomain
Definition: constants.h:16
GLuint const GLchar * name
Definition: glcorearb.h:786
constexpr const char * kCpuExecutionProvider
Definition: constants.h:26
type
Definition: core.h:1059

Definition at line 301 of file op_kernel.h.

#define ONNX_OPERATOR_KERNEL_CLASS_NAME (   provider,
  domain,
  ver,
  name 
)    provider##_##name##_##domain##_ver##ver

Definition at line 192 of file op_kernel.h.

#define ONNX_OPERATOR_KERNEL_EX (   name,
  domain,
  ver,
  provider,
  builder,
  ... 
)
Value:
class ONNX_OPERATOR_KERNEL_CLASS_NAME(provider, domain, ver, name); \
template <> \
KernelCreateInfo \
BuildKernelCreateInfo<ONNX_OPERATOR_KERNEL_CLASS_NAME(provider, domain, ver, name)>() { \
return KernelCreateInfo( \
builder.SetName(#name) \
.SetDomain(domain) \
.SinceVersion(ver) \
.Provider(provider) \
.Build(), \
static_cast<KernelCreatePtrFn>( \
[](FuncManager&, \
const OpKernelInfo& info, \
std::unique_ptr<OpKernel>& out) -> Status { \
out = std::make_unique<__VA_ARGS__>(info); \
return Status::OK(); \
})); \
}
GLuint const GLchar * name
Definition: glcorearb.h:786
#define ONNX_OPERATOR_KERNEL_CLASS_NAME(provider, domain, ver, name)
Definition: op_kernel.h:192
std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type KernelCreatePtrFn
Definition: op_kernel.h:135
#define const
Definition: zconf.h:214

Definition at line 204 of file op_kernel.h.

#define ONNX_OPERATOR_TWO_TYPED_KERNEL_CLASS_NAME (   provider,
  domain,
  ver,
  type1,
  type2,
  name 
)    provider##_##name##_##domain##_ver##ver##_##type1##_##type2

Definition at line 273 of file op_kernel.h.

#define ONNX_OPERATOR_TWO_TYPED_KERNEL_EX (   name,
  domain,
  ver,
  type1,
  type2,
  provider,
  builder,
  ... 
)
Value:
class ONNX_OPERATOR_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type1, type2, name); \
template <> \
KernelCreateInfo \
BuildKernelCreateInfo<ONNX_OPERATOR_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type1, type2, name)>() { \
return KernelCreateInfo( \
builder.SetName(#name) \
.SetDomain(domain) \
.SinceVersion(ver) \
.Provider(provider) \
.Build(), \
static_cast<KernelCreatePtrFn>([](FuncManager&, const OpKernelInfo& info, std::unique_ptr<OpKernel>& out) -> Status { out = std::make_unique<__VA_ARGS__>(info); return Status::OK(); })); \
}
GLuint const GLchar * name
Definition: glcorearb.h:786
std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type KernelCreatePtrFn
Definition: op_kernel.h:135
#define ONNX_OPERATOR_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type1, type2, name)
Definition: op_kernel.h:273

Definition at line 276 of file op_kernel.h.

#define ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME (   provider,
  domain,
  ver,
  type,
  name 
)    provider##_##name##_##domain##_ver##ver##_##type

Definition at line 247 of file op_kernel.h.

#define ONNX_OPERATOR_TYPED_KERNEL_EX (   name,
  domain,
  ver,
  type,
  provider,
  builder,
  ... 
)
Value:
class ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type, name); \
template <> \
KernelCreateInfo \
BuildKernelCreateInfo<ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type, name)>() { \
return KernelCreateInfo( \
builder.SetName(#name) \
.SetDomain(domain) \
.SinceVersion(ver) \
.Provider(provider) \
.Build(), \
static_cast<KernelCreatePtrFn>([](FuncManager&, const OpKernelInfo& info, std::unique_ptr<OpKernel>& out) -> Status { out = std::make_unique<__VA_ARGS__>(info); return Status::OK(); })); \
}
#define ONNX_OPERATOR_TYPED_KERNEL_CLASS_NAME(provider, domain, ver, type, name)
Definition: op_kernel.h:247
GLuint const GLchar * name
Definition: glcorearb.h:786
std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type KernelCreatePtrFn
Definition: op_kernel.h:135
type
Definition: core.h:1059

Definition at line 259 of file op_kernel.h.

#define ONNX_OPERATOR_VERSIONED_KERNEL_CLASS_NAME (   provider,
  domain,
  startver,
  endver,
  name 
)    provider##_##name##_##domain##_ver##startver##_##endver

Definition at line 224 of file op_kernel.h.

#define ONNX_OPERATOR_VERSIONED_KERNEL_EX (   name,
  domain,
  startver,
  endver,
  provider,
  builder,
  ... 
)
Value:
class ONNX_OPERATOR_VERSIONED_KERNEL_CLASS_NAME(provider, domain, startver, endver, name); \
template <> \
KernelCreateInfo \
BuildKernelCreateInfo<ONNX_OPERATOR_VERSIONED_KERNEL_CLASS_NAME(provider, domain, startver, endver, name)>() { \
return KernelCreateInfo( \
builder.SetName(#name) \
.SetDomain(domain) \
.SinceVersion(startver, endver) \
.Provider(provider) \
.Build(), \
static_cast<KernelCreatePtrFn>([](FuncManager&, const OpKernelInfo& info, std::unique_ptr<OpKernel>& out) -> Status { out = std::make_unique<__VA_ARGS__>(info); return Status::OK(); })); \
}
GLuint const GLchar * name
Definition: glcorearb.h:786
#define ONNX_OPERATOR_VERSIONED_KERNEL_CLASS_NAME(provider, domain, startver, endver, name)
Definition: op_kernel.h:224
std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type KernelCreatePtrFn
Definition: op_kernel.h:135

Definition at line 233 of file op_kernel.h.

#define ONNX_OPERATOR_VERSIONED_TWO_TYPED_KERNEL_CLASS_NAME (   provider,
  domain,
  startver,
  endver,
  type1,
  type2,
  name 
)    provider##_##name##_##domain##_ver##startver##_##endver##_##type1##_##type2

Definition at line 320 of file op_kernel.h.

#define ONNX_OPERATOR_VERSIONED_TWO_TYPED_KERNEL_EX (   name,
  domain,
  startver,
  endver,
  type1,
  type2,
  provider,
  builder,
  ... 
)
Value:
class ONNX_OPERATOR_VERSIONED_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, startver, endver, type1, type2, name); \
template <> \
type1, type2, name)>() { \
return KernelCreateInfo( \
builder.SetName(#name) \
.SetDomain(domain) \
.SinceVersion(startver, endver) \
.Provider(provider) \
.Build(), \
static_cast<KernelCreatePtrFn>([](FuncManager&, const OpKernelInfo& info, std::unique_ptr<OpKernel>& out) -> Status { out = std::make_unique<__VA_ARGS__>(info); return Status::OK(); })); \
}
KernelCreateInfo BuildKernelCreateInfo()
GLuint const GLchar * name
Definition: glcorearb.h:786
std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type KernelCreatePtrFn
Definition: op_kernel.h:135
#define ONNX_OPERATOR_VERSIONED_TWO_TYPED_KERNEL_CLASS_NAME(provider, domain, startver, endver, type1, type2, name)
Definition: op_kernel.h:320

Definition at line 323 of file op_kernel.h.

#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME (   provider,
  domain,
  startver,
  endver,
  type,
  name 
)    provider##_##name##_##domain##_ver##startver##_##endver##_##type

Definition at line 290 of file op_kernel.h.

#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_EX (   name,
  domain,
  startver,
  endver,
  type,
  provider,
  builder,
  ... 
)
Value:
class ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(provider, domain, startver, endver, type, name); \
template <> \
type, name)>() { \
return KernelCreateInfo( \
builder.SetName(#name) \
.SetDomain(domain) \
.SinceVersion(startver, endver) \
.Provider(provider) \
.Build(), \
static_cast<KernelCreatePtrFn>([](FuncManager&, const OpKernelInfo& info, std::unique_ptr<OpKernel>& out) -> Status { out = std::make_unique<__VA_ARGS__>(info); return Status::OK(); })); \
}
#define ONNX_OPERATOR_VERSIONED_TYPED_KERNEL_CLASS_NAME(provider, domain, startver, endver, type, name)
Definition: op_kernel.h:290
KernelCreateInfo BuildKernelCreateInfo()
GLuint const GLchar * name
Definition: glcorearb.h:786
std::add_pointer< Status(FuncManager &func_mgr, const OpKernelInfo &info, std::unique_ptr< OpKernel > &out)>::type KernelCreatePtrFn
Definition: op_kernel.h:135
type
Definition: core.h:1059

Definition at line 305 of file op_kernel.h.