ONNX Runtime
Loading...
Searching...
No Matches
onnxruntime_c_api.h
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT License.
3
4// See docs\c_cxx\README.md on generating the Doxygen documentation from this file
5
31#pragma once
32#include <stdbool.h>
33#include <stdint.h>
34#include <stdlib.h>
35#include <string.h>
36
41#define ORT_API_VERSION 20
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
48// SAL2 Definitions
49#ifndef _WIN32
50#define _In_
51#define _In_z_
52#define _In_opt_
53#define _In_opt_z_
54#define _Out_
55#define _Outptr_
56#define _Out_opt_
57#define _Inout_
58#define _Inout_opt_
59#define _Frees_ptr_opt_
60#define _Ret_maybenull_
61#define _Ret_notnull_
62#define _Check_return_
63#define _Outptr_result_maybenull_
64#define _In_reads_(X)
65#define _Inout_updates_(X)
66#define _Out_writes_(X)
67#define _Inout_updates_all_(X)
68#define _Out_writes_bytes_all_(X)
69#define _Out_writes_all_(X)
70#define _Success_(X)
71#define _Outptr_result_buffer_maybenull_(X)
72#define ORT_ALL_ARGS_NONNULL __attribute__((nonnull))
73#else
74#include <specstrings.h>
75#define ORT_ALL_ARGS_NONNULL
76#endif
77
78#ifdef _WIN32
79// Define ORT_DLL_IMPORT if your program is dynamically linked to Ort.
80// dllexport is not used, we use a .def file.
81#ifdef ORT_DLL_IMPORT
82#define ORT_EXPORT __declspec(dllimport)
83#else
84#define ORT_EXPORT
85#endif
86#define ORT_API_CALL _stdcall
87#define ORT_MUST_USE_RESULT
88#define ORTCHAR_T wchar_t
89#else
90// To make symbols visible on macOS/iOS
91#ifdef __APPLE__
92#define ORT_EXPORT __attribute__((visibility("default")))
93#else
94#define ORT_EXPORT
95#endif
96#define ORT_API_CALL
97#define ORT_MUST_USE_RESULT __attribute__((warn_unused_result))
98#define ORTCHAR_T char
99#endif
100
103#ifndef ORT_TSTR
104#ifdef _WIN32
105#define ORT_TSTR(X) L##X
106// When X is a macro, L##X is not defined. In this case, we need to use ORT_TSTR_ON_MACRO.
107#define ORT_TSTR_ON_MACRO(X) L"" X
108#else
109#define ORT_TSTR(X) X
110#define ORT_TSTR_ON_MACRO(X) X
111#endif
112#endif
113
114// On Windows, ORT_FILE is a wchar_t version of the __FILE__ macro.
115// Otherwise, ORT_FILE is equivalent to __FILE__.
116#ifndef ORT_FILE
117#define ORT_FILE_INTERNAL(x) ORT_TSTR(x)
118#define ORT_FILE ORT_FILE_INTERNAL(__FILE__)
119#endif
120
121// Any pointer marked with _In_ or _Out_, cannot be NULL.
122
123// Windows users should use unicode paths when possible to bypass the MAX_PATH limitation
124// Every pointer marked with _In_ or _Out_, cannot be NULL. Caller should ensure that.
125// for ReleaseXXX(...) functions, they can accept NULL pointer.
126
127#ifdef __cplusplus
128// For any compiler with C++11 support, MSVC 2015 and greater, or Clang version supporting noexcept.
129// Such complex condition is needed because compilers set __cplusplus value differently.
130#ifndef __has_feature
131#define __has_feature(x) 0
132#endif
133#if ((__cplusplus >= 201103L) || (_MSC_VER >= 1900) || (defined(__has_feature) && __has_feature(cxx_noexcept)))
134#define NO_EXCEPTION noexcept
135#else
136#define NO_EXCEPTION throw()
137#endif
138#else
139#define NO_EXCEPTION
140#endif
141
142// __VA_ARGS__ on Windows and Linux are different
143#define ORT_API(RETURN_TYPE, NAME, ...) RETURN_TYPE ORT_API_CALL NAME(__VA_ARGS__) NO_EXCEPTION
144
145#define ORT_API_STATUS(NAME, ...) \
146 _Success_(return == 0) _Check_return_ _Ret_maybenull_ OrtStatusPtr ORT_API_CALL NAME(__VA_ARGS__) \
147 NO_EXCEPTION ORT_MUST_USE_RESULT
148
149// XXX: Unfortunately, SAL annotations are known to not work with function pointers
150#define ORT_API2_STATUS(NAME, ...) \
151 _Check_return_ _Ret_maybenull_ OrtStatusPtr(ORT_API_CALL* NAME)(__VA_ARGS__) NO_EXCEPTION ORT_MUST_USE_RESULT
152
153// Used in *.cc files. Almost as same as ORT_API_STATUS, except without ORT_MUST_USE_RESULT and ORT_EXPORT
154#define ORT_API_STATUS_IMPL(NAME, ...) \
155 _Success_(return == 0) _Check_return_ _Ret_maybenull_ OrtStatusPtr ORT_API_CALL NAME(__VA_ARGS__) NO_EXCEPTION
156
157#define ORT_CLASS_RELEASE(X) void(ORT_API_CALL * Release##X)(_Frees_ptr_opt_ Ort##X * input)
158
159#ifdef __DOXYGEN__
160#undef ORT_API_STATUS
161#define ORT_API_STATUS(NAME, ...) OrtStatus* NAME(__VA_ARGS__)
162#undef ORT_API2_STATUS
163#define ORT_API2_STATUS(NAME, ...) OrtStatus* NAME(__VA_ARGS__)
164#undef ORT_CLASS_RELEASE
165#define ORT_CLASS_RELEASE(X) void Release##X(Ort##X* input)
166#undef NO_EXCEPTION
167#define NO_EXCEPTION
168#endif
179 ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT, // maps to c type float
180 ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT8, // maps to c type uint8_t
181 ONNX_TENSOR_ELEMENT_DATA_TYPE_INT8, // maps to c type int8_t
182 ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT16, // maps to c type uint16_t
183 ONNX_TENSOR_ELEMENT_DATA_TYPE_INT16, // maps to c type int16_t
184 ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32, // maps to c type int32_t
185 ONNX_TENSOR_ELEMENT_DATA_TYPE_INT64, // maps to c type int64_t
186 ONNX_TENSOR_ELEMENT_DATA_TYPE_STRING, // maps to c++ type std::string
189 ONNX_TENSOR_ELEMENT_DATA_TYPE_DOUBLE, // maps to c type double
190 ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT32, // maps to c type uint32_t
191 ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT64, // maps to c type uint64_t
192 ONNX_TENSOR_ELEMENT_DATA_TYPE_COMPLEX64, // complex with float32 real and imaginary components
193 ONNX_TENSOR_ELEMENT_DATA_TYPE_COMPLEX128, // complex with float64 real and imaginary components
194 ONNX_TENSOR_ELEMENT_DATA_TYPE_BFLOAT16, // Non-IEEE floating-point format based on IEEE754 single-precision
195 // float 8 types were introduced in onnx 1.14, see https://onnx.ai/onnx/technical/float8.html
196 ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E4M3FN, // Non-IEEE floating-point format based on IEEE754 single-precision
197 ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E4M3FNUZ, // Non-IEEE floating-point format based on IEEE754 single-precision
198 ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E5M2, // Non-IEEE floating-point format based on IEEE754 single-precision
199 ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E5M2FNUZ, // Non-IEEE floating-point format based on IEEE754 single-precision
200 // Int4 types were introduced in ONNX 1.16. See https://onnx.ai/onnx/technical/int4.html
201 ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT4, // maps to a pair of packed uint4 values (size == 1 byte)
202 ONNX_TENSOR_ELEMENT_DATA_TYPE_INT4 // maps to a pair of packed int4 values (size == 1 byte)
204
205// Synced with onnx TypeProto oneof
215
216// These types are synced with internal
217// SparseFormatFlags
224
225// Enum allows to query sparse tensor indices
232
244
259
269
271#define ORT_RUNTIME_CLASS(X) \
272 struct Ort##X; \
273 typedef struct Ort##X Ort##X
274
279// The actual types defined have an Ort prefix
280ORT_RUNTIME_CLASS(Env);
281ORT_RUNTIME_CLASS(Status); // nullptr for Status* indicates success
282ORT_RUNTIME_CLASS(MemoryInfo);
283ORT_RUNTIME_CLASS(IoBinding);
284ORT_RUNTIME_CLASS(Session); // Don't call ReleaseSession from Dllmain (because session owns a thread pool)
285ORT_RUNTIME_CLASS(Value);
286ORT_RUNTIME_CLASS(RunOptions);
287ORT_RUNTIME_CLASS(TypeInfo);
288ORT_RUNTIME_CLASS(TensorTypeAndShapeInfo);
289ORT_RUNTIME_CLASS(MapTypeInfo);
290ORT_RUNTIME_CLASS(SequenceTypeInfo);
291ORT_RUNTIME_CLASS(OptionalTypeInfo);
292ORT_RUNTIME_CLASS(SessionOptions);
293ORT_RUNTIME_CLASS(CustomOpDomain);
294ORT_RUNTIME_CLASS(ModelMetadata);
295ORT_RUNTIME_CLASS(ThreadPoolParams);
296ORT_RUNTIME_CLASS(ThreadingOptions);
297ORT_RUNTIME_CLASS(ArenaCfg);
298ORT_RUNTIME_CLASS(PrepackedWeightsContainer);
299ORT_RUNTIME_CLASS(TensorRTProviderOptionsV2);
300ORT_RUNTIME_CLASS(CUDAProviderOptionsV2);
301ORT_RUNTIME_CLASS(CANNProviderOptions);
302ORT_RUNTIME_CLASS(DnnlProviderOptions);
303ORT_RUNTIME_CLASS(Op);
304ORT_RUNTIME_CLASS(OpAttr);
305ORT_RUNTIME_CLASS(Logger);
306ORT_RUNTIME_CLASS(ShapeInferContext);
307
308#ifdef _WIN32
309typedef _Return_type_success_(return == 0) OrtStatus* OrtStatusPtr;
310#else
312#endif
313
320typedef struct OrtAllocator {
321 uint32_t version;
322 void*(ORT_API_CALL* Alloc)(struct OrtAllocator* this_, size_t size);
323 void(ORT_API_CALL* Free)(struct OrtAllocator* this_, void* p);
324 const struct OrtMemoryInfo*(ORT_API_CALL* Info)(const struct OrtAllocator* this_);
330 void*(ORT_API_CALL* Reserve)(struct OrtAllocator* this_, size_t size);
332
333typedef void(ORT_API_CALL* OrtLoggingFunction)(
334 void* param, OrtLoggingLevel severity, const char* category, const char* logid, const char* code_location,
335 const char* message);
336
348
353
366
367struct OrtKernelInfo;
369struct OrtKernelContext;
371struct OrtCustomOp;
373
379
382// Whenever this struct is updated, please also update the MakeKey function in onnxruntime / core / framework / execution_provider.cc
389
397
401 OrtCudnnConvAlgoSearchExhaustive, // expensive exhaustive benchmarking using cudnnFindConvolutionForwardAlgorithmEx
402 OrtCudnnConvAlgoSearchHeuristic, // lightweight heuristic based search using cudnnGetConvolutionForwardAlgorithm_v7
403 OrtCudnnConvAlgoSearchDefault, // default algorithm using CUDNN_CONVOLUTION_FWD_ALGO_IMPLICIT_PRECOMP_GEMM
405
492
581
588 int has_user_compute_stream; // indicator of user specified CUDA compute stream.
589 void* user_compute_stream; // user specified CUDA compute stream.
590 int trt_max_partition_iterations; // maximum iterations for TensorRT parser to get capability
591 int trt_min_subgraph_size; // minimum size of TensorRT subgraphs
592 size_t trt_max_workspace_size; // maximum workspace size for TensorRT.
593 int trt_fp16_enable; // enable TensorRT FP16 precision. Default 0 = false, nonzero = true
594 int trt_int8_enable; // enable TensorRT INT8 precision. Default 0 = false, nonzero = true
595 const char* trt_int8_calibration_table_name; // TensorRT INT8 calibration table name.
596 int trt_int8_use_native_calibration_table; // use native TensorRT generated calibration table. Default 0 = false, nonzero = true
597 int trt_dla_enable; // enable DLA. Default 0 = false, nonzero = true
598 int trt_dla_core; // DLA core number. Default 0
599 int trt_dump_subgraphs; // dump TRT subgraph. Default 0 = false, nonzero = true
600 int trt_engine_cache_enable; // enable engine caching. Default 0 = false, nonzero = true
601 const char* trt_engine_cache_path; // specify engine cache path
602 int trt_engine_decryption_enable; // enable engine decryption. Default 0 = false, nonzero = true
603 const char* trt_engine_decryption_lib_path; // specify engine decryption library path
604 int trt_force_sequential_engine_build; // force building TensorRT engine sequentially. Default 0 = false, nonzero = true
605 // This is the legacy struct and don't add new fields here.
606 // For new field that can be represented by string, please add it in include/onnxruntime/core/providers/tensorrt/tensorrt_provider_options.h
607 // For non-string field, need to create a new separate api to handle it.
609
615 int device_id; // hip device id.
616 int migraphx_fp16_enable; // MIGraphX FP16 precision. Default 0 = false, nonzero = true
617 int migraphx_int8_enable; // MIGraphX INT8 precision. Default 0 = false, nonzero = true
618 int migraphx_use_native_calibration_table; // MIGraphx INT8 cal table. Default 0 = false, noznero = true
619 const char* migraphx_int8_calibration_table_name; // MIGraphx INT8 calibration table name
620 int migraphx_save_compiled_model; // migraphx save compiled model. Default 0 = false, noznero = true
621 const char* migraphx_save_model_path; // migraphx model path name
622 int migraphx_load_compiled_model; // migraphx int8 cal table. Default 0 = false, noznero = true
623 const char* migraphx_load_model_path; // migraphx model path name
624 bool migraphx_exhaustive_tune; // migraphx tuned compile Default = false
626
632#ifdef __cplusplus
641#endif
646 const char* device_type;
648 const char* device_id;
650 const char* cache_dir; // path is set to empty by default
651 void* context;
653 unsigned char enable_dynamic_shapes;
655
656struct OrtApi;
657typedef struct OrtApi OrtApi;
658
659struct OrtTrainingApi;
661
676 const OrtApi*(ORT_API_CALL* GetApi)(uint32_t version)NO_EXCEPTION;
677
682 const char*(ORT_API_CALL* GetVersionString)(void)NO_EXCEPTION;
683};
684
685typedef struct OrtApiBase OrtApiBase;
686
691ORT_EXPORT const OrtApiBase* ORT_API_CALL OrtGetApiBase(void) NO_EXCEPTION;
692
698typedef void (*OrtThreadWorkerFn)(void* ort_worker_fn_param);
699
703
709typedef OrtCustomThreadHandle (*OrtCustomCreateThreadFn)(void* ort_custom_thread_creation_options, OrtThreadWorkerFn ort_thread_worker_fn, void* ort_worker_fn_param);
710
716typedef void (*OrtCustomJoinThreadFn)(OrtCustomThreadHandle ort_custom_thread_handle);
717
718typedef OrtStatus*(ORT_API_CALL* RegisterCustomOpsFn)(OrtSessionOptions* options, const OrtApiBase* api);
719
727typedef void (*RunAsyncCallbackFn)(void* user_data, OrtValue** outputs, size_t num_outputs, OrtStatusPtr status);
728
736struct OrtApi {
739
747 OrtStatus*(ORT_API_CALL* CreateStatus)(OrtErrorCode code, _In_ const char* msg)NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
748
754 OrtErrorCode(ORT_API_CALL* GetErrorCode)(_In_ const OrtStatus* status) NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
755
761 const char*(ORT_API_CALL* GetErrorMessage)(_In_ const OrtStatus* status)NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
762
766
777 ORT_API2_STATUS(CreateEnv, OrtLoggingLevel log_severity_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
778
793 ORT_API2_STATUS(CreateEnvWithCustomLogger, _In_ OrtLoggingFunction logging_function, _In_opt_ void* logger_param,
794 _In_ OrtLoggingLevel log_severity_level, _In_ const char* logid, _Outptr_ OrtEnv** out);
795
803 ORT_API2_STATUS(EnableTelemetryEvents, _In_ const OrtEnv* env);
811 ORT_API2_STATUS(DisableTelemetryEvents, _In_ const OrtEnv* env);
812
816
826 // TODO: document the path separator convention? '/' vs '\'
827 // TODO: should specify the access characteristics of model_path. Is this read only during the
828 // execution of CreateSession, or does the OrtSession retain a handle to the file/directory
829 // and continue to access throughout the OrtSession lifetime?
830 // What sort of access is needed to model_path : read or read/write?
831 ORT_API2_STATUS(CreateSession, _In_ const OrtEnv* env, _In_ const ORTCHAR_T* model_path,
832 _In_ const OrtSessionOptions* options, _Outptr_ OrtSession** out);
833
844 ORT_API2_STATUS(CreateSessionFromArray, _In_ const OrtEnv* env, _In_ const void* model_data, size_t model_data_length,
845 _In_ const OrtSessionOptions* options, _Outptr_ OrtSession** out);
846
865 ORT_API2_STATUS(Run, _Inout_ OrtSession* session, _In_opt_ const OrtRunOptions* run_options,
866 _In_reads_(input_len) const char* const* input_names,
867 _In_reads_(input_len) const OrtValue* const* inputs, size_t input_len,
868 _In_reads_(output_names_len) const char* const* output_names, size_t output_names_len,
869 _Inout_updates_all_(output_names_len) OrtValue** outputs);
870
874
890 ORT_API2_STATUS(CreateSessionOptions, _Outptr_ OrtSessionOptions** options);
891
899 ORT_API2_STATUS(SetOptimizedModelFilePath, _Inout_ OrtSessionOptions* options,
900 _In_ const ORTCHAR_T* optimized_model_filepath);
901
909 ORT_API2_STATUS(CloneSessionOptions, _In_ const OrtSessionOptions* in_options,
910 _Outptr_ OrtSessionOptions** out_options);
911
923 ORT_API2_STATUS(SetSessionExecutionMode, _Inout_ OrtSessionOptions* options, ExecutionMode execution_mode);
924
932 ORT_API2_STATUS(EnableProfiling, _Inout_ OrtSessionOptions* options, _In_ const ORTCHAR_T* profile_file_prefix);
933
940 ORT_API2_STATUS(DisableProfiling, _Inout_ OrtSessionOptions* options);
941
955 ORT_API2_STATUS(EnableMemPattern, _Inout_ OrtSessionOptions* options);
956
965 ORT_API2_STATUS(DisableMemPattern, _Inout_ OrtSessionOptions* options);
966
975 ORT_API2_STATUS(EnableCpuMemArena, _Inout_ OrtSessionOptions* options);
976
983 ORT_API2_STATUS(DisableCpuMemArena, _Inout_ OrtSessionOptions* options);
984
992 ORT_API2_STATUS(SetSessionLogId, _Inout_ OrtSessionOptions* options, const char* logid);
993
1003 ORT_API2_STATUS(SetSessionLogVerbosityLevel, _Inout_ OrtSessionOptions* options, int session_log_verbosity_level);
1004
1012 ORT_API2_STATUS(SetSessionLogSeverityLevel, _Inout_ OrtSessionOptions* options, int session_log_severity_level);
1013
1022 ORT_API2_STATUS(SetSessionGraphOptimizationLevel, _Inout_ OrtSessionOptions* options,
1023 GraphOptimizationLevel graph_optimization_level);
1024
1038 ORT_API2_STATUS(SetIntraOpNumThreads, _Inout_ OrtSessionOptions* options, int intra_op_num_threads);
1039
1052 ORT_API2_STATUS(SetInterOpNumThreads, _Inout_ OrtSessionOptions* options, int inter_op_num_threads);
1053
1057
1065 ORT_API2_STATUS(CreateCustomOpDomain, _In_ const char* domain, _Outptr_ OrtCustomOpDomain** out);
1066
1076 ORT_API2_STATUS(CustomOpDomain_Add, _Inout_ OrtCustomOpDomain* custom_op_domain, _In_ const OrtCustomOp* op);
1077
1081
1091 ORT_API2_STATUS(AddCustomOpDomain, _Inout_ OrtSessionOptions* options, _In_ OrtCustomOpDomain* custom_op_domain);
1092
1109 ORT_API2_STATUS(RegisterCustomOpsLibrary, _Inout_ OrtSessionOptions* options, _In_ const char* library_path, _Outptr_ void** library_handle);
1110
1114
1126 ORT_API2_STATUS(SessionGetInputCount, _In_ const OrtSession* session, _Out_ size_t* out);
1127
1139 ORT_API2_STATUS(SessionGetOutputCount, _In_ const OrtSession* session, _Out_ size_t* out);
1140
1150 ORT_API2_STATUS(SessionGetOverridableInitializerCount, _In_ const OrtSession* session, _Out_ size_t* out);
1151
1160 ORT_API2_STATUS(SessionGetInputTypeInfo, _In_ const OrtSession* session, size_t index, _Outptr_ OrtTypeInfo** type_info);
1161
1170 ORT_API2_STATUS(SessionGetOutputTypeInfo, _In_ const OrtSession* session, size_t index, _Outptr_ OrtTypeInfo** type_info);
1171
1180 ORT_API2_STATUS(SessionGetOverridableInitializerTypeInfo, _In_ const OrtSession* session, size_t index, _Outptr_ OrtTypeInfo** type_info);
1181
1191 ORT_API2_STATUS(SessionGetInputName, _In_ const OrtSession* session, size_t index, _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
1192
1202 ORT_API2_STATUS(SessionGetOutputName, _In_ const OrtSession* session, size_t index, _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
1203
1213 ORT_API2_STATUS(SessionGetOverridableInitializerName, _In_ const OrtSession* session, size_t index,
1214 _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
1215
1219
1226 ORT_API2_STATUS(CreateRunOptions, _Outptr_ OrtRunOptions** out);
1227
1237 ORT_API2_STATUS(RunOptionsSetRunLogVerbosityLevel, _Inout_ OrtRunOptions* options, int log_verbosity_level);
1238
1246 ORT_API2_STATUS(RunOptionsSetRunLogSeverityLevel, _Inout_ OrtRunOptions* options, int log_severity_level);
1247
1257 ORT_API2_STATUS(RunOptionsSetRunTag, _Inout_ OrtRunOptions* options, _In_ const char* run_tag);
1258
1268 ORT_API2_STATUS(RunOptionsGetRunLogVerbosityLevel, _In_ const OrtRunOptions* options,
1269 _Out_ int* log_verbosity_level);
1270
1278 ORT_API2_STATUS(RunOptionsGetRunLogSeverityLevel, _In_ const OrtRunOptions* options, _Out_ int* log_severity_level);
1279
1291 ORT_API2_STATUS(RunOptionsGetRunTag, _In_ const OrtRunOptions* options, _Out_ const char** run_tag);
1292
1301 ORT_API2_STATUS(RunOptionsSetTerminate, _Inout_ OrtRunOptions* options);
1302
1311 ORT_API2_STATUS(RunOptionsUnsetTerminate, _Inout_ OrtRunOptions* options);
1312
1316
1329 ORT_API2_STATUS(CreateTensorAsOrtValue, _Inout_ OrtAllocator* allocator, _In_ const int64_t* shape, size_t shape_len,
1331
1347 ORT_API2_STATUS(CreateTensorWithDataAsOrtValue, _In_ const OrtMemoryInfo* info, _Inout_ void* p_data,
1348 size_t p_data_len, _In_ const int64_t* shape, size_t shape_len, ONNXTensorElementDataType type,
1349 _Outptr_ OrtValue** out);
1350
1358 ORT_API2_STATUS(IsTensor, _In_ const OrtValue* value, _Out_ int* out);
1359
1370 ORT_API2_STATUS(GetTensorMutableData, _In_ OrtValue* value, _Outptr_ void** out);
1371
1380 ORT_API2_STATUS(FillStringTensor, _Inout_ OrtValue* value, _In_ const char* const* s, size_t s_len);
1381
1391 ORT_API2_STATUS(GetStringTensorDataLength, _In_ const OrtValue* value, _Out_ size_t* len);
1392
1412 ORT_API2_STATUS(GetStringTensorContent, _In_ const OrtValue* value, _Out_writes_bytes_all_(s_len) void* s,
1413 size_t s_len, _Out_writes_all_(offsets_len) size_t* offsets, size_t offsets_len);
1414
1418
1427 ORT_API2_STATUS(CastTypeInfoToTensorInfo, _In_ const OrtTypeInfo* type_info,
1428 _Outptr_result_maybenull_ const OrtTensorTypeAndShapeInfo** out);
1429
1437 ORT_API2_STATUS(GetOnnxTypeFromTypeInfo, _In_ const OrtTypeInfo* type_info, _Out_ enum ONNXType* out);
1438
1442
1450
1459
1468 ORT_API2_STATUS(SetDimensions, OrtTensorTypeAndShapeInfo* info, _In_ const int64_t* dim_values, size_t dim_count);
1469
1479 ORT_API2_STATUS(GetTensorElementType, _In_ const OrtTensorTypeAndShapeInfo* info,
1481
1491 ORT_API2_STATUS(GetDimensionsCount, _In_ const OrtTensorTypeAndShapeInfo* info, _Out_ size_t* out);
1492
1501 ORT_API2_STATUS(GetDimensions, _In_ const OrtTensorTypeAndShapeInfo* info, _Out_ int64_t* dim_values,
1502 size_t dim_values_length);
1503
1512 ORT_API2_STATUS(GetSymbolicDimensions, _In_ const OrtTensorTypeAndShapeInfo* info,
1513 _Out_writes_all_(dim_params_length) const char* dim_params[], size_t dim_params_length);
1514
1531 ORT_API2_STATUS(GetTensorShapeElementCount, _In_ const OrtTensorTypeAndShapeInfo* info, _Out_ size_t* out);
1532
1536
1544 ORT_API2_STATUS(GetTensorTypeAndShape, _In_ const OrtValue* value, _Outptr_ OrtTensorTypeAndShapeInfo** out);
1545
1553 ORT_API2_STATUS(GetTypeInfo, _In_ const OrtValue* value, _Outptr_result_maybenull_ OrtTypeInfo** out);
1554
1562 ORT_API2_STATUS(GetValueType, _In_ const OrtValue* value, _Out_ enum ONNXType* out);
1563
1567
1578 ORT_API2_STATUS(CreateMemoryInfo, _In_ const char* name, enum OrtAllocatorType type, int id,
1579 enum OrtMemType mem_type, _Outptr_ OrtMemoryInfo** out);
1580
1591 ORT_API2_STATUS(CreateCpuMemoryInfo, enum OrtAllocatorType type, enum OrtMemType mem_type,
1592 _Outptr_ OrtMemoryInfo** out);
1593
1604 ORT_API2_STATUS(CompareMemoryInfo, _In_ const OrtMemoryInfo* info1, _In_ const OrtMemoryInfo* info2, _Out_ int* out);
1605
1613 ORT_API2_STATUS(MemoryInfoGetName, _In_ const OrtMemoryInfo* ptr, _Out_ const char** out);
1614
1617 ORT_API2_STATUS(MemoryInfoGetId, _In_ const OrtMemoryInfo* ptr, _Out_ int* out);
1618
1621 ORT_API2_STATUS(MemoryInfoGetMemType, _In_ const OrtMemoryInfo* ptr, _Out_ OrtMemType* out);
1622
1625 ORT_API2_STATUS(MemoryInfoGetType, _In_ const OrtMemoryInfo* ptr, _Out_ OrtAllocatorType* out);
1626
1630
1632 ORT_API2_STATUS(AllocatorAlloc, _Inout_ OrtAllocator* ort_allocator, size_t size, _Outptr_ void** out);
1634 ORT_API2_STATUS(AllocatorFree, _Inout_ OrtAllocator* ort_allocator, void* p);
1636 ORT_API2_STATUS(AllocatorGetInfo, _In_ const OrtAllocator* ort_allocator, _Outptr_ const struct OrtMemoryInfo** out);
1637
1646 ORT_API2_STATUS(GetAllocatorWithDefaultOptions, _Outptr_ OrtAllocator** out);
1647
1651
1663 ORT_API2_STATUS(AddFreeDimensionOverride, _Inout_ OrtSessionOptions* options, _In_ const char* dim_denotation,
1664 _In_ int64_t dim_value);
1665
1669
1670 /* Internal information (not seen in Doxygen)
1671 *
1672 * APIs to support non-tensor types - map and sequence.
1673 * Currently only the following types are supported
1674 * Note: the following types should be kept in sync with data_types.h
1675 * Map types
1676 * =========
1677 * std::map<std::string, std::string>
1678 * std::map<std::string, int64_t>
1679 * std::map<std::string, float>
1680 * std::map<std::string, double>
1681 * std::map<int64_t, std::string>
1682 * std::map<int64_t, int64_t>
1683 * std::map<int64_t, float>
1684 * std::map<int64_t, double>
1685 *
1686 * Sequence types
1687 * ==============
1688 * std::vector<std::string>
1689 * std::vector<int64_t>
1690 * std::vector<float>
1691 * std::vector<double>
1692 * std::vector<std::map<std::string, float>>
1693 * std::vector<std::map<int64_t, float>
1694 */
1695
1710 ORT_API2_STATUS(GetValue, _In_ const OrtValue* value, int index, _Inout_ OrtAllocator* allocator,
1711 _Outptr_ OrtValue** out);
1712
1723 ORT_API2_STATUS(GetValueCount, _In_ const OrtValue* value, _Out_ size_t* out);
1724
1740 ORT_API2_STATUS(CreateValue, _In_reads_(num_values) const OrtValue* const* in, size_t num_values,
1741 enum ONNXType value_type, _Outptr_ OrtValue** out);
1742
1765 ORT_API2_STATUS(CreateOpaqueValue, _In_z_ const char* domain_name, _In_z_ const char* type_name,
1766 _In_ const void* data_container, size_t data_container_size, _Outptr_ OrtValue** out);
1767
1782 ORT_API2_STATUS(GetOpaqueValue, _In_ const char* domain_name, _In_ const char* type_name, _In_ const OrtValue* in,
1783 _Out_ void* data_container, size_t data_container_size);
1784
1789
1798 ORT_API2_STATUS(KernelInfoGetAttribute_float, _In_ const OrtKernelInfo* info, _In_ const char* name,
1799 _Out_ float* out);
1800
1809 ORT_API2_STATUS(KernelInfoGetAttribute_int64, _In_ const OrtKernelInfo* info, _In_ const char* name,
1810 _Out_ int64_t* out);
1811
1832 ORT_API2_STATUS(KernelInfoGetAttribute_string, _In_ const OrtKernelInfo* info, _In_ const char* name, _Out_ char* out,
1833 _Inout_ size_t* size);
1834
1839
1844 ORT_API2_STATUS(KernelContext_GetInputCount, _In_ const OrtKernelContext* context, _Out_ size_t* out);
1845
1850 ORT_API2_STATUS(KernelContext_GetOutputCount, _In_ const OrtKernelContext* context, _Out_ size_t* out);
1851
1863 ORT_API2_STATUS(KernelContext_GetInput, _In_ const OrtKernelContext* context, _In_ size_t index,
1864 _Out_ const OrtValue** out);
1865
1879 ORT_API2_STATUS(KernelContext_GetOutput, _Inout_ OrtKernelContext* context, _In_ size_t index,
1880 _In_ const int64_t* dim_values, size_t dim_count, _Outptr_ OrtValue** out);
1881
1885 ORT_CLASS_RELEASE(Env);
1889 ORT_CLASS_RELEASE(Status);
1893 ORT_CLASS_RELEASE(MemoryInfo);
1897 ORT_CLASS_RELEASE(Session); // Don't call ReleaseSession from Dllmain (because session owns a thread pool)
1901 ORT_CLASS_RELEASE(Value);
1905 ORT_CLASS_RELEASE(RunOptions);
1909 ORT_CLASS_RELEASE(TypeInfo);
1913 ORT_CLASS_RELEASE(TensorTypeAndShapeInfo);
1917 ORT_CLASS_RELEASE(SessionOptions);
1921 ORT_CLASS_RELEASE(CustomOpDomain);
1922
1926
1939 ORT_API2_STATUS(GetDenotationFromTypeInfo, _In_ const OrtTypeInfo* type_info, _Out_ const char** const denotation,
1940 _Out_ size_t* len);
1941
1955 ORT_API2_STATUS(CastTypeInfoToMapTypeInfo, _In_ const OrtTypeInfo* type_info,
1956 _Outptr_result_maybenull_ const OrtMapTypeInfo** out);
1957
1971 ORT_API2_STATUS(CastTypeInfoToSequenceTypeInfo, _In_ const OrtTypeInfo* type_info,
1972 _Outptr_result_maybenull_ const OrtSequenceTypeInfo** out);
1973
1977
1989 ORT_API2_STATUS(GetMapKeyType, _In_ const OrtMapTypeInfo* map_type_info, _Out_ enum ONNXTensorElementDataType* out);
1990
1998 ORT_API2_STATUS(GetMapValueType, _In_ const OrtMapTypeInfo* map_type_info, _Outptr_ OrtTypeInfo** type_info);
1999
2003
2013 ORT_API2_STATUS(GetSequenceElementType, _In_ const OrtSequenceTypeInfo* sequence_type_info,
2014 _Outptr_ OrtTypeInfo** type_info);
2015
2019 ORT_CLASS_RELEASE(MapTypeInfo);
2023 ORT_CLASS_RELEASE(SequenceTypeInfo);
2024
2028
2039 ORT_API2_STATUS(SessionEndProfiling, _In_ OrtSession* session, _Inout_ OrtAllocator* allocator, _Outptr_ char** out);
2040
2048 ORT_API2_STATUS(SessionGetModelMetadata, _In_ const OrtSession* session, _Outptr_ OrtModelMetadata** out);
2049
2053
2062 ORT_API2_STATUS(ModelMetadataGetProducerName, _In_ const OrtModelMetadata* model_metadata,
2063 _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
2064
2073 ORT_API2_STATUS(ModelMetadataGetGraphName, _In_ const OrtModelMetadata* model_metadata,
2074 _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
2075
2084 ORT_API2_STATUS(ModelMetadataGetDomain, _In_ const OrtModelMetadata* model_metadata, _Inout_ OrtAllocator* allocator,
2085 _Outptr_ char** value);
2086
2095 ORT_API2_STATUS(ModelMetadataGetDescription, _In_ const OrtModelMetadata* model_metadata,
2096 _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
2097
2108 ORT_API2_STATUS(ModelMetadataLookupCustomMetadataMap, _In_ const OrtModelMetadata* model_metadata,
2109 _Inout_ OrtAllocator* allocator, _In_ const char* key, _Outptr_result_maybenull_ char** value);
2110
2118 ORT_API2_STATUS(ModelMetadataGetVersion, _In_ const OrtModelMetadata* model_metadata, _Out_ int64_t* value);
2119
2120 ORT_CLASS_RELEASE(ModelMetadata);
2121
2125
2139 ORT_API2_STATUS(CreateEnvWithGlobalThreadPools, OrtLoggingLevel log_severity_level, _In_ const char* logid,
2140 _In_ const OrtThreadingOptions* tp_options, _Outptr_ OrtEnv** out);
2141
2145
2155 ORT_API2_STATUS(DisablePerSessionThreads, _Inout_ OrtSessionOptions* options);
2156
2160
2166 ORT_API2_STATUS(CreateThreadingOptions, _Outptr_ OrtThreadingOptions** out);
2167
2168 ORT_CLASS_RELEASE(ThreadingOptions);
2169
2173
2185 ORT_API2_STATUS(ModelMetadataGetCustomMetadataMapKeys, _In_ const OrtModelMetadata* model_metadata,
2186 _Inout_ OrtAllocator* allocator, _Outptr_result_buffer_maybenull_(*num_keys) char*** keys, _Out_ int64_t* num_keys);
2187
2191
2199 ORT_API2_STATUS(AddFreeDimensionOverrideByName,
2200 _Inout_ OrtSessionOptions* options, _In_ const char* dim_name,
2201 _In_ int64_t dim_value);
2202
2206
2218 ORT_API2_STATUS(GetAvailableProviders, _Outptr_ char*** out_ptr, _Out_ int* provider_length);
2219
2228 ORT_API2_STATUS(ReleaseAvailableProviders, _In_ char** ptr,
2229 _In_ int providers_length);
2230
2234
2243 ORT_API2_STATUS(GetStringTensorElementLength, _In_ const OrtValue* value, size_t index, _Out_ size_t* out);
2244
2254 ORT_API2_STATUS(GetStringTensorElement, _In_ const OrtValue* value, size_t s_len, size_t index, _Out_writes_bytes_all_(s_len) void* s);
2255
2264 ORT_API2_STATUS(FillStringTensorElement, _Inout_ OrtValue* value, _In_ const char* s, size_t index);
2265
2269
2282 ORT_API2_STATUS(AddSessionConfigEntry, _Inout_ OrtSessionOptions* options,
2283 _In_z_ const char* config_key, _In_z_ const char* config_value);
2284
2288
2297 ORT_API2_STATUS(CreateAllocator, _In_ const OrtSession* session, _In_ const OrtMemoryInfo* mem_info,
2298 _Outptr_ OrtAllocator** out);
2299
2302 ORT_CLASS_RELEASE(Allocator);
2303
2307
2318 ORT_API2_STATUS(RunWithBinding, _Inout_ OrtSession* session, _In_ const OrtRunOptions* run_options, _In_ const OrtIoBinding* binding_ptr);
2319
2331 ORT_API2_STATUS(CreateIoBinding, _Inout_ OrtSession* session, _Outptr_ OrtIoBinding** out);
2332
2336
2339 ORT_CLASS_RELEASE(IoBinding);
2340
2351 ORT_API2_STATUS(BindInput, _Inout_ OrtIoBinding* binding_ptr, _In_ const char* name, _In_ const OrtValue* val_ptr);
2352
2363 ORT_API2_STATUS(BindOutput, _Inout_ OrtIoBinding* binding_ptr, _In_ const char* name, _In_ const OrtValue* val_ptr);
2364
2380 ORT_API2_STATUS(BindOutputToDevice, _Inout_ OrtIoBinding* binding_ptr, _In_ const char* name, _In_ const OrtMemoryInfo* mem_info_ptr);
2381
2399 ORT_API2_STATUS(GetBoundOutputNames, _In_ const OrtIoBinding* binding_ptr, _In_ OrtAllocator* allocator,
2400 _Out_ char** buffer, _Out_writes_all_(count) size_t** lengths, _Out_ size_t* count);
2401
2419 ORT_API2_STATUS(GetBoundOutputValues, _In_ const OrtIoBinding* binding_ptr, _In_ OrtAllocator* allocator,
2420 _Out_writes_all_(output_count) OrtValue*** output, _Out_ size_t* output_count);
2421
2424 void(ORT_API_CALL* ClearBoundInputs)(_Inout_ OrtIoBinding* binding_ptr) NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
2425
2428 void(ORT_API_CALL* ClearBoundOutputs)(_Inout_ OrtIoBinding* binding_ptr) NO_EXCEPTION ORT_ALL_ARGS_NONNULL;
2429
2433
2448 ORT_API2_STATUS(TensorAt, _Inout_ OrtValue* value, const int64_t* location_values, size_t location_values_count, _Outptr_ void** out);
2449
2453
2468 ORT_API2_STATUS(CreateAndRegisterAllocator, _Inout_ OrtEnv* env, _In_ const OrtMemoryInfo* mem_info,
2469 _In_ const OrtArenaCfg* arena_cfg);
2470
2482 ORT_API2_STATUS(SetLanguageProjection, _In_ const OrtEnv* ort_env, _In_ OrtLanguageProjection projection);
2483
2487
2497 ORT_API2_STATUS(SessionGetProfilingStartTimeNs, _In_ const OrtSession* session, _Outptr_ uint64_t* out);
2498
2502
2514 ORT_API2_STATUS(SetGlobalIntraOpNumThreads, _Inout_ OrtThreadingOptions* tp_options, int intra_op_num_threads);
2515
2527 ORT_API2_STATUS(SetGlobalInterOpNumThreads, _Inout_ OrtThreadingOptions* tp_options, int inter_op_num_threads);
2528
2542 ORT_API2_STATUS(SetGlobalSpinControl, _Inout_ OrtThreadingOptions* tp_options, int allow_spinning);
2543
2547
2562 ORT_API2_STATUS(AddInitializer, _Inout_ OrtSessionOptions* options, _In_z_ const char* name,
2563 _In_ const OrtValue* val);
2564
2568
2584 ORT_API2_STATUS(CreateEnvWithCustomLoggerAndGlobalThreadPools, OrtLoggingFunction logging_function, _In_opt_ void* logger_param, OrtLoggingLevel log_severity_level,
2585 _In_ const char* logid, _In_ const struct OrtThreadingOptions* tp_options, _Outptr_ OrtEnv** out);
2586
2590
2601 _In_ OrtSessionOptions* options, _In_ const OrtCUDAProviderOptions* cuda_options);
2602
2613 _In_ OrtSessionOptions* options, _In_ const OrtROCMProviderOptions* rocm_options);
2614
2625 _In_ OrtSessionOptions* options, _In_ const OrtOpenVINOProviderOptions* provider_options);
2626
2630
2641 ORT_API2_STATUS(SetGlobalDenormalAsZero, _Inout_ OrtThreadingOptions* tp_options);
2642
2646
2659 ORT_API2_STATUS(CreateArenaCfg, _In_ size_t max_mem, int arena_extend_strategy, int initial_chunk_size_bytes,
2660 int max_dead_bytes_per_chunk, _Outptr_ OrtArenaCfg** out);
2661
2662 ORT_CLASS_RELEASE(ArenaCfg);
2663
2667
2679 ORT_API2_STATUS(ModelMetadataGetGraphDescription, _In_ const OrtModelMetadata* model_metadata,
2680 _Inout_ OrtAllocator* allocator, _Outptr_ char** value);
2681
2685
2696 _In_ OrtSessionOptions* options, _In_ const OrtTensorRTProviderOptions* tensorrt_options);
2697
2701
2712 ORT_API2_STATUS(SetCurrentGpuDeviceId, _In_ int device_id);
2713
2724 ORT_API2_STATUS(GetCurrentGpuDeviceId, _In_ int* device_id);
2725
2730
2753 ORT_API2_STATUS(KernelInfoGetAttributeArray_float, _In_ const OrtKernelInfo* info, _In_ const char* name,
2754 _Out_ float* out, _Inout_ size_t* size);
2755
2777 ORT_API2_STATUS(KernelInfoGetAttributeArray_int64, _In_ const OrtKernelInfo* info, _In_ const char* name,
2778 _Out_ int64_t* out, _Inout_ size_t* size);
2779
2783
2815 ORT_API2_STATUS(CreateArenaCfgV2, _In_reads_(num_keys) const char* const* arena_config_keys,
2816 _In_reads_(num_keys) const size_t* arena_config_values, _In_ size_t num_keys,
2817 _Outptr_ OrtArenaCfg** out);
2818
2822
2835 ORT_API2_STATUS(AddRunConfigEntry, _Inout_ OrtRunOptions* options,
2836 _In_z_ const char* config_key, _In_z_ const char* config_value);
2837
2841
2855
2860 ORT_CLASS_RELEASE(PrepackedWeightsContainer);
2861
2865
2883 ORT_API2_STATUS(CreateSessionWithPrepackedWeightsContainer, _In_ const OrtEnv* env, _In_ const ORTCHAR_T* model_path,
2884 _In_ const OrtSessionOptions* options, _Inout_ OrtPrepackedWeightsContainer* prepacked_weights_container,
2885 _Outptr_ OrtSession** out);
2886
2905 ORT_API2_STATUS(CreateSessionFromArrayWithPrepackedWeightsContainer, _In_ const OrtEnv* env,
2906 _In_ const void* model_data, size_t model_data_length,
2907 _In_ const OrtSessionOptions* options, _Inout_ OrtPrepackedWeightsContainer* prepacked_weights_container,
2908 _Outptr_ OrtSession** out);
2909
2913
2932 _In_ OrtSessionOptions* options, _In_ const OrtTensorRTProviderOptionsV2* tensorrt_options);
2933
2937
2945
2961 ORT_API2_STATUS(UpdateTensorRTProviderOptions, _Inout_ OrtTensorRTProviderOptionsV2* tensorrt_options,
2962 _In_reads_(num_keys) const char* const* provider_options_keys,
2963 _In_reads_(num_keys) const char* const* provider_options_values,
2964 _In_ size_t num_keys);
2965
2977 ORT_API2_STATUS(GetTensorRTProviderOptionsAsString, _In_ const OrtTensorRTProviderOptionsV2* tensorrt_options, _Inout_ OrtAllocator* allocator, _Outptr_ char** ptr);
2978
2983 void(ORT_API_CALL* ReleaseTensorRTProviderOptions)(_Frees_ptr_opt_ OrtTensorRTProviderOptionsV2* input);
2984
2988
2995 ORT_API2_STATUS(EnableOrtCustomOps, _Inout_ OrtSessionOptions* options);
2996
3000
3016 ORT_API2_STATUS(RegisterAllocator, _Inout_ OrtEnv* env, _In_ OrtAllocator* allocator);
3017
3028 ORT_API2_STATUS(UnregisterAllocator, _Inout_ OrtEnv* env,
3029 _In_ const OrtMemoryInfo* mem_info);
3030
3034
3043 ORT_API2_STATUS(IsSparseTensor, _In_ const OrtValue* value, _Out_ int* out);
3044
3061 ORT_API2_STATUS(CreateSparseTensorAsOrtValue, _Inout_ OrtAllocator* allocator, _In_ const int64_t* dense_shape,
3062 size_t dense_shape_len, ONNXTensorElementDataType type, _Outptr_ OrtValue** out);
3063
3081 ORT_API2_STATUS(FillSparseTensorCoo, _Inout_ OrtValue* ort_value, _In_ const OrtMemoryInfo* data_mem_info,
3082 _In_ const int64_t* values_shape, size_t values_shape_len, _In_ const void* values,
3083 _In_ const int64_t* indices_data, size_t indices_num);
3084
3104 ORT_API2_STATUS(FillSparseTensorCsr, _Inout_ OrtValue* ort_value, _In_ const OrtMemoryInfo* data_mem_info,
3105 _In_ const int64_t* values_shape, size_t values_shape_len, _In_ const void* values,
3106 _In_ const int64_t* inner_indices_data, size_t inner_indices_num,
3107 _In_ const int64_t* outer_indices_data, size_t outer_indices_num);
3108
3127 ORT_API2_STATUS(FillSparseTensorBlockSparse, _Inout_ OrtValue* ort_value, _In_ const OrtMemoryInfo* data_mem_info,
3128 _In_ const int64_t* values_shape, size_t values_shape_len, _In_ const void* values,
3129 _In_ const int64_t* indices_shape_data, size_t indices_shape_len,
3130 _In_ const int32_t* indices_data);
3131
3156 ORT_API2_STATUS(CreateSparseTensorWithValuesAsOrtValue, _In_ const OrtMemoryInfo* info, _Inout_ void* p_data,
3157 _In_ const int64_t* dense_shape, size_t dense_shape_len,
3158 _In_ const int64_t* values_shape, size_t values_shape_len,
3160
3175 ORT_API2_STATUS(UseCooIndices, _Inout_ OrtValue* ort_value, _Inout_ int64_t* indices_data, size_t indices_num);
3176
3193 ORT_API2_STATUS(UseCsrIndices, _Inout_ OrtValue* ort_value, _Inout_ int64_t* inner_data, size_t inner_num,
3194 _Inout_ int64_t* outer_data, size_t outer_num);
3195
3209 ORT_API2_STATUS(UseBlockSparseIndices, _Inout_ OrtValue* ort_value, const int64_t* indices_shape, size_t indices_shape_len, _Inout_ int32_t* indices_data);
3210
3218 ORT_API2_STATUS(GetSparseTensorFormat, _In_ const OrtValue* ort_value, _Out_ enum OrtSparseFormat* out);
3219
3227 ORT_API2_STATUS(GetSparseTensorValuesTypeAndShape, _In_ const OrtValue* ort_value, _Outptr_ OrtTensorTypeAndShapeInfo** out);
3228
3236 ORT_API2_STATUS(GetSparseTensorValues, _In_ const OrtValue* ort_value, _Outptr_ const void** out);
3237
3247 ORT_API2_STATUS(GetSparseTensorIndicesTypeShape, _In_ const OrtValue* ort_value, enum OrtSparseIndicesFormat indices_format, _Outptr_ OrtTensorTypeAndShapeInfo** out);
3248
3258 ORT_API2_STATUS(GetSparseTensorIndices, _In_ const OrtValue* ort_value, enum OrtSparseIndicesFormat indices_format, _Out_ size_t* num_indices, _Outptr_ const void** indices);
3262
3275 ORT_API2_STATUS(HasValue, _In_ const OrtValue* value, _Out_ int* out);
3276
3281
3293 ORT_API2_STATUS(KernelContext_GetGPUComputeStream, _In_ const OrtKernelContext* context, _Outptr_ void** out);
3294
3298
3304 ORT_API2_STATUS(GetTensorMemoryInfo, _In_ const OrtValue* value, _Out_ const OrtMemoryInfo** mem_info);
3305
3309
3319 ORT_API2_STATUS(GetExecutionProviderApi, _In_ const char* provider_name, _In_ uint32_t version, _Outptr_ const void** provider_api);
3320
3322
3325
3332 ORT_API2_STATUS(SessionOptionsSetCustomCreateThreadFn, _Inout_ OrtSessionOptions* options, _In_ OrtCustomCreateThreadFn ort_custom_create_thread_fn);
3333
3341 ORT_API2_STATUS(SessionOptionsSetCustomThreadCreationOptions, _Inout_ OrtSessionOptions* options, _In_ void* ort_custom_thread_creation_options);
3342
3350 ORT_API2_STATUS(SessionOptionsSetCustomJoinThreadFn, _Inout_ OrtSessionOptions* options, _In_ OrtCustomJoinThreadFn ort_custom_join_thread_fn);
3352
3355
3362 ORT_API2_STATUS(SetGlobalCustomCreateThreadFn, _Inout_ OrtThreadingOptions* tp_options, _In_ OrtCustomCreateThreadFn ort_custom_create_thread_fn);
3363
3371 ORT_API2_STATUS(SetGlobalCustomThreadCreationOptions, _Inout_ OrtThreadingOptions* tp_options, _In_ void* ort_custom_thread_creation_options);
3372
3380 ORT_API2_STATUS(SetGlobalCustomJoinThreadFn, _Inout_ OrtThreadingOptions* tp_options, _In_ OrtCustomJoinThreadFn ort_custom_join_thread_fn);
3382
3391 ORT_API2_STATUS(SynchronizeBoundInputs, _Inout_ OrtIoBinding* binding_ptr);
3392
3401 ORT_API2_STATUS(SynchronizeBoundOutputs, _Inout_ OrtIoBinding* binding_ptr);
3402
3405
3426 _In_ OrtSessionOptions* options, _In_ const OrtCUDAProviderOptionsV2* cuda_options);
3427
3431
3440 ORT_API2_STATUS(CreateCUDAProviderOptions, _Outptr_ OrtCUDAProviderOptionsV2** out);
3441
3459 ORT_API2_STATUS(UpdateCUDAProviderOptions, _Inout_ OrtCUDAProviderOptionsV2* cuda_options,
3460 _In_reads_(num_keys) const char* const* provider_options_keys,
3461 _In_reads_(num_keys) const char* const* provider_options_values,
3462 _In_ size_t num_keys);
3463
3478 ORT_API2_STATUS(GetCUDAProviderOptionsAsString, _In_ const OrtCUDAProviderOptionsV2* cuda_options, _Inout_ OrtAllocator* allocator, _Outptr_ char** ptr);
3479
3486 void(ORT_API_CALL* ReleaseCUDAProviderOptions)(_Frees_ptr_opt_ OrtCUDAProviderOptionsV2* input);
3487
3489
3502 _In_ OrtSessionOptions* options, _In_ const OrtMIGraphXProviderOptions* migraphx_options);
3503
3525 ORT_API2_STATUS(AddExternalInitializers, _In_ OrtSessionOptions* options,
3526 _In_reads_(num_initializers) const char* const* initializer_names,
3527 _In_reads_(num_initializers) const OrtValue* const* initializers, size_t num_initializers);
3528
3539 ORT_API2_STATUS(CreateOpAttr,
3540 _In_ const char* name,
3541 _In_ const void* data,
3542 _In_ int len,
3543 _In_ OrtOpAttrType type,
3544 _Outptr_ OrtOpAttr** op_attr);
3545
3546 /* \brief: Release op attribute
3547 *
3548 * \param[in] opAttr Attribute created by OrtApi::CreateOpAttr
3549 *
3550 * \since Version 1.12.
3551 */
3552 ORT_CLASS_RELEASE(OpAttr);
3553
3571 ORT_API2_STATUS(CreateOp,
3572 _In_ const OrtKernelInfo* info,
3573 _In_z_ const char* op_name,
3574 _In_z_ const char* domain,
3575 int version,
3576 _In_reads_(type_constraint_count) const char** type_constraint_names,
3577 _In_reads_(type_constraint_count) const ONNXTensorElementDataType* type_constraint_values,
3578 int type_constraint_count,
3579 _In_reads_(attr_count) const OrtOpAttr* const* attr_values,
3580 int attr_count,
3581 int input_count,
3582 int output_count,
3583 _Outptr_ OrtOp** ort_op);
3584
3597 ORT_API2_STATUS(InvokeOp,
3598 _In_ const OrtKernelContext* context,
3599 _In_ const OrtOp* ort_op,
3600 _In_ const OrtValue* const* input_values,
3601 _In_ int input_count,
3602 _Inout_ OrtValue* const* output_values,
3603 _In_ int output_count);
3604
3605 /* \brief: Release an onnxruntime operator
3606 *
3607 * \param[in] Op Operator created by OrtApi::CreateOp
3608 *
3609 * \since Version 1.12.
3610 */
3611 ORT_CLASS_RELEASE(Op);
3612
3682 ORT_API2_STATUS(SessionOptionsAppendExecutionProvider, _In_ OrtSessionOptions* options,
3683 _In_ const char* provider_name,
3684 _In_reads_(num_keys) const char* const* provider_options_keys,
3685 _In_reads_(num_keys) const char* const* provider_options_values,
3686 _In_ size_t num_keys);
3687
3688 /* \brief: Get a copy of kernel info
3689 *
3690 * \param[in] info Kernel info
3691 * \param[out] info_copy Copy of kernel info
3692 *
3693 * \since Version 1.12.
3694 */
3695 ORT_API2_STATUS(CopyKernelInfo,
3696 _In_ const OrtKernelInfo* info,
3697 _Outptr_ OrtKernelInfo** info_copy);
3698
3699 /* \brief: Release kernel info
3700 *
3701 * \param[in] KernelInfo A copy of kernel info returned by CopyKernelInfo
3702 *
3703 * \since Version 1.12.
3704 */
3705 ORT_CLASS_RELEASE(KernelInfo);
3706
3709
3723 const OrtTrainingApi*(ORT_API_CALL* GetTrainingApi)(uint32_t version)NO_EXCEPTION;
3724
3726
3739 _In_ OrtSessionOptions* options, _In_ const OrtCANNProviderOptions* cann_options);
3740
3749 ORT_API2_STATUS(CreateCANNProviderOptions, _Outptr_ OrtCANNProviderOptions** out);
3750
3762 ORT_API2_STATUS(UpdateCANNProviderOptions, _Inout_ OrtCANNProviderOptions* cann_options,
3763 _In_reads_(num_keys) const char* const* provider_options_keys,
3764 _In_reads_(num_keys) const char* const* provider_options_values,
3765 _In_ size_t num_keys);
3766
3780 ORT_API2_STATUS(GetCANNProviderOptionsAsString, _In_ const OrtCANNProviderOptions* cann_options,
3781 _Inout_ OrtAllocator* allocator, _Outptr_ char** ptr);
3782
3789 void(ORT_API_CALL* ReleaseCANNProviderOptions)(_Frees_ptr_opt_ OrtCANNProviderOptions* input);
3790
3791 /* \brief Get OrtDevice type from MemoryInfo
3792 *
3793 * \since Version 1.14
3794 */
3795 void(ORT_API_CALL* MemoryInfoGetDeviceType)(_In_ const OrtMemoryInfo* ptr, _Out_ OrtMemoryInfoDeviceType* out);
3796
3797 /* \brief Update the OrtEnv instance with custom log severity level
3798 *
3799 * \param[in] ort_env The OrtEnv instance being used
3800 * \param[in] log_severity_level The log severity level.
3801 *
3802 * \since Version 1.14.
3803 */
3804 ORT_API2_STATUS(UpdateEnvWithCustomLogLevel, _In_ OrtEnv* ort_env, OrtLoggingLevel log_severity_level);
3805
3806 /* \brief Set affinities for intra op threads
3807 *
3808 * Affinity string follows format:
3809 * logical_processor_id,logical_processor_id;logical_processor_id,logical_processor_id
3810 * Semicolon isolates configurations among threads, while comma split processors where ith thread expected to attach to.
3811 * e.g. 1,2,3;4,5
3812 * specifies affinities for two threads, with the 1st thread attach to the 1st, 2nd, and 3rd processor, and 2nd thread to the 4th and 5th.
3813 * To ease the configuration, an "interval" is also allowed:
3814 * e.g. 1-8;8-16;17-24
3815 * orders that the 1st thread runs on first eight processors, 2nd thread runs on next eight processors, and so forth.
3816 * Note:
3817 * 1. Once set, the number of thread affinities must equal to intra_op_num_threads - 1,
3818 * ort does not set affinity on the main thread which is started and managed by the calling app;
3819 * 2. For windows, ort will infer the group id from a logical processor id, for example, assuming there are two groups with each has 64 logical processors,
3820 * an id of 64 will be inferred as the last processor of the 1st group, while 65 will be interpreted as the 1st processor of the second group.
3821 * Hence 64-65 is an invalid configuration, because a windows thread cannot be attached to processors across group boundary.
3822 *
3823 * \since Version 1.14
3824 */
3825 ORT_API2_STATUS(SetGlobalIntraOpThreadAffinity, _Inout_ OrtThreadingOptions* tp_options, const char* affinity_string);
3826
3845 ORT_API2_STATUS(RegisterCustomOpsLibrary_V2, _Inout_ OrtSessionOptions* options, _In_ const ORTCHAR_T* library_name);
3846
3871 ORT_API2_STATUS(RegisterCustomOpsUsingFunction, _Inout_ OrtSessionOptions* options,
3872 _In_ const char* registration_func_name);
3873
3877
3889 ORT_API2_STATUS(KernelInfo_GetInputCount, _In_ const OrtKernelInfo* info, _Out_ size_t* out);
3890
3902 ORT_API2_STATUS(KernelInfo_GetOutputCount, _In_ const OrtKernelInfo* info, _Out_ size_t* out);
3903
3928 ORT_API2_STATUS(KernelInfo_GetInputName, _In_ const OrtKernelInfo* info, size_t index, _Out_ char* out,
3929 _Inout_ size_t* size);
3930
3956 ORT_API2_STATUS(KernelInfo_GetOutputName, _In_ const OrtKernelInfo* info, size_t index, _Out_ char* out,
3957 _Inout_ size_t* size);
3958
3971 ORT_API2_STATUS(KernelInfo_GetInputTypeInfo, _In_ const OrtKernelInfo* info, size_t index,
3972 _Outptr_ OrtTypeInfo** type_info);
3973
3986 ORT_API2_STATUS(KernelInfo_GetOutputTypeInfo, _In_ const OrtKernelInfo* info, size_t index,
3987 _Outptr_ OrtTypeInfo** type_info);
3988
4001 ORT_API2_STATUS(KernelInfoGetAttribute_tensor, _In_ const OrtKernelInfo* info, _In_z_ const char* name,
4002 _Inout_ OrtAllocator* allocator, _Outptr_ OrtValue** out);
4003
4008
4024 ORT_API2_STATUS(HasSessionConfigEntry, _In_ const OrtSessionOptions* options,
4025 _In_z_ const char* config_key, _Out_ int* out);
4026
4055 ORT_API2_STATUS(GetSessionConfigEntry, _In_ const OrtSessionOptions* options,
4056 _In_z_ const char* config_key, _Out_ char* config_value, _Inout_ size_t* size);
4057
4059
4072 _In_ OrtSessionOptions* options, _In_ const OrtDnnlProviderOptions* dnnl_options);
4073
4082 ORT_API2_STATUS(CreateDnnlProviderOptions, _Outptr_ OrtDnnlProviderOptions** out);
4083
4100 ORT_API2_STATUS(UpdateDnnlProviderOptions, _Inout_ OrtDnnlProviderOptions* dnnl_options,
4101 _In_reads_(num_keys) const char* const* provider_options_keys,
4102 _In_reads_(num_keys) const char* const* provider_options_values,
4103 _In_ size_t num_keys);
4104
4119 ORT_API2_STATUS(GetDnnlProviderOptionsAsString, _In_ const OrtDnnlProviderOptions* dnnl_options, _Inout_ OrtAllocator* allocator, _Outptr_ char** ptr);
4120
4125 void(ORT_API_CALL* ReleaseDnnlProviderOptions)(_Frees_ptr_opt_ OrtDnnlProviderOptions* input);
4126
4130
4153 ORT_API2_STATUS(KernelInfo_GetNodeName, _In_ const OrtKernelInfo* info, _Out_ char* out, _Inout_ size_t* size);
4154
4166 ORT_API2_STATUS(KernelInfo_GetLogger, _In_ const OrtKernelInfo* info, _Outptr_ const OrtLogger** logger);
4167
4172
4184 ORT_API2_STATUS(KernelContext_GetLogger, _In_ const OrtKernelContext* context, _Outptr_ const OrtLogger** logger);
4185
4190
4209 ORT_API2_STATUS(Logger_LogMessage, _In_ const OrtLogger* logger, OrtLoggingLevel log_severity_level,
4210 _In_z_ const char* message, _In_z_ const ORTCHAR_T* file_path, int line_number,
4211 _In_z_ const char* func_name);
4212
4224 ORT_API2_STATUS(Logger_GetLoggingSeverityLevel, _In_ const OrtLogger* logger, _Out_ OrtLoggingLevel* out);
4225
4227
4241 ORT_API2_STATUS(KernelInfoGetConstantInput_tensor, _In_ const OrtKernelInfo* info, size_t index, _Out_ int* is_constant, _Outptr_ const OrtValue** out);
4242
4263 ORT_API2_STATUS(CastTypeInfoToOptionalTypeInfo, _In_ const OrtTypeInfo* type_info,
4264 _Outptr_result_maybenull_ const OrtOptionalTypeInfo** out);
4265
4282 ORT_API2_STATUS(GetOptionalContainedTypeInfo, _In_ const OrtOptionalTypeInfo* optional_type_info,
4283 _Outptr_ OrtTypeInfo** out);
4284
4295 ORT_API2_STATUS(GetResizedStringTensorElementBuffer, _Inout_ OrtValue* value, _In_ size_t index, _In_ size_t length_in_bytes, _Inout_ char** buffer);
4296
4307 ORT_API2_STATUS(KernelContext_GetAllocator, _In_ const OrtKernelContext* context, _In_ const OrtMemoryInfo* mem_info, _Outptr_ OrtAllocator** out);
4308
4315 const char*(ORT_API_CALL* GetBuildInfoString)(void);
4316
4319
4328 ORT_API2_STATUS(CreateROCMProviderOptions, _Outptr_ OrtROCMProviderOptions** out);
4329
4347 ORT_API2_STATUS(UpdateROCMProviderOptions, _Inout_ OrtROCMProviderOptions* rocm_options,
4348 _In_reads_(num_keys) const char* const* provider_options_keys,
4349 _In_reads_(num_keys) const char* const* provider_options_values,
4350 _In_ size_t num_keys);
4351
4366 ORT_API2_STATUS(GetROCMProviderOptionsAsString, _In_ const OrtROCMProviderOptions* rocm_options, _Inout_ OrtAllocator* allocator, _Outptr_ char** ptr);
4367
4374 void(ORT_API_CALL* ReleaseROCMProviderOptions)(_Frees_ptr_opt_ OrtROCMProviderOptions* input);
4375
4389 ORT_API2_STATUS(CreateAndRegisterAllocatorV2, _Inout_ OrtEnv* env, _In_ const char* provider_type, _In_ const OrtMemoryInfo* mem_info, _In_ const OrtArenaCfg* arena_cfg,
4390 _In_reads_(num_keys) const char* const* provider_options_keys, _In_reads_(num_keys) const char* const* provider_options_values, _In_ size_t num_keys);
4391
4410 ORT_API2_STATUS(RunAsync, _Inout_ OrtSession* session, _In_opt_ const OrtRunOptions* run_options,
4411 _In_reads_(input_len) const char* const* input_names,
4412 _In_reads_(input_len) const OrtValue* const* input, size_t input_len,
4413 _In_reads_(output_names_len) const char* const* output_names, size_t output_names_len,
4414 _Inout_updates_all_(output_names_len) OrtValue** output,
4415 _In_ RunAsyncCallbackFn run_async_callback, _In_opt_ void* user_data);
4416
4429 ORT_API2_STATUS(UpdateTensorRTProviderOptionsWithValue, _Inout_ OrtTensorRTProviderOptionsV2* tensorrt_options, _In_ const char* key, _In_ void* value);
4430
4441 ORT_API2_STATUS(GetTensorRTProviderOptionsByName, _In_ const OrtTensorRTProviderOptionsV2* tensorrt_options, _In_ const char* key, _Outptr_ void** ptr);
4442
4455 ORT_API2_STATUS(UpdateCUDAProviderOptionsWithValue, _Inout_ OrtCUDAProviderOptionsV2* cuda_options, _In_ const char* key, _In_ void* value);
4456
4467 ORT_API2_STATUS(GetCUDAProviderOptionsByName, _In_ const OrtCUDAProviderOptionsV2* cuda_options, _In_ const char* key, _Outptr_ void** ptr);
4468
4480 ORT_API2_STATUS(KernelContext_GetResource, _In_ const OrtKernelContext* context, _In_ int resource_version,
4481 _In_ int resource_id, _Outptr_ void** resource);
4482
4500 ORT_API2_STATUS(SetUserLoggingFunction, _Inout_ OrtSessionOptions* options,
4501 _In_ OrtLoggingFunction user_logging_function, _In_opt_ void* user_logging_param);
4502
4511 ORT_API2_STATUS(ShapeInferContext_GetInputCount, _In_ const OrtShapeInferContext* context, _Out_ size_t* out);
4512
4522 ORT_API2_STATUS(ShapeInferContext_GetInputTypeShape, _In_ const OrtShapeInferContext* context, _In_ size_t index, _Outptr_ OrtTensorTypeAndShapeInfo** info);
4523
4533 ORT_API2_STATUS(ShapeInferContext_GetAttribute, _In_ const OrtShapeInferContext* context, _In_ const char* attr_name, _Outptr_ const OrtOpAttr** attr);
4534
4544 ORT_API2_STATUS(ShapeInferContext_SetOutputTypeShape, _In_ const OrtShapeInferContext* context, _In_ size_t index, _In_ const OrtTensorTypeAndShapeInfo* info);
4545
4555 ORT_API2_STATUS(SetSymbolicDimensions, _In_ OrtTensorTypeAndShapeInfo* info, _In_ const char* dim_params[], _In_ size_t dim_params_length);
4556
4568 ORT_API2_STATUS(ReadOpAttr, _In_ const OrtOpAttr* op_attr, _In_ OrtOpAttrType type, _Inout_ void* data, _In_ size_t len, _Out_ size_t* out);
4569
4580 ORT_API2_STATUS(SetDeterministicCompute, _Inout_ OrtSessionOptions* options, bool value);
4581
4593 ORT_API2_STATUS(KernelContext_ParallelFor, _In_ const OrtKernelContext* context, _In_ void (*fn)(void*, size_t), _In_ size_t total, _In_ size_t num_batch, _In_ void* usr_data);
4594
4607 _In_ OrtSessionOptions* options,
4608 _In_reads_(num_keys) const char* const* provider_options_keys,
4609 _In_reads_(num_keys) const char* const* provider_options_values,
4610 _In_ size_t num_keys);
4611
4624 _In_ OrtSessionOptions* options,
4625 _In_reads_(num_keys) const char* const* provider_options_keys,
4626 _In_reads_(num_keys) const char* const* provider_options_values,
4627 _In_ size_t num_keys);
4628
4637 ORT_API2_STATUS(KernelContext_GetScratchBuffer, _In_ const OrtKernelContext* context, _In_ const OrtMemoryInfo* mem_info, _In_ size_t count_or_bytes, _Outptr_ void** out);
4638
4647 ORT_API2_STATUS(KernelInfoGetAllocator, _In_ const OrtKernelInfo* info, _In_ OrtMemType mem_type, _Outptr_ OrtAllocator** out);
4648
4668 ORT_API2_STATUS(AddExternalInitializersFromFilesInMemory, _In_ OrtSessionOptions* options,
4669 _In_reads_(num_external_initializer_files) const ORTCHAR_T* const* external_initializer_file_names,
4670 _In_reads_(num_external_initializer_files) char* const* external_initializer_file_buffer_array,
4671 _In_reads_(num_external_initializer_files) const size_t* external_initializer_file_lengths,
4672 size_t num_external_initializer_files);
4673};
4674
4675/*
4676 * Steps to use a custom op:
4677 * 1 Create an OrtCustomOpDomain with the domain name used by the custom ops
4678 * 2 Create an OrtCustomOp structure for each op and add them to the domain
4679 * 3 Call OrtAddCustomOpDomain to add the custom domain of ops to the session options
4680 */
4681
4682// Specifies some characteristics of inputs/outputs of custom ops:
4683// Specify if the inputs/outputs are one of:
4684// 1) Non-optional (input/output must be present in the node)
4685// 2) Optional (input/output may be absent in the node)
4686// 3) Variadic: A variadic input or output specifies N (i.e., the minimum arity) or more operands.
4687// Only the last input or output of a custom op may be marked as variadic.
4688// The homogeneity of the variadic input or output determines whether all operands must be of the same
4689// tensor element type.
4695
4696/*
4697 * The OrtCustomOp structure defines a custom op's schema and its kernel callbacks. The callbacks are filled in by
4698 * the implementor of the custom op.
4699 */
4701 uint32_t version; // Must be initialized to ORT_API_VERSION
4702
4703 // This callback creates the kernel, which is a user defined
4704 // parameter that is passed to the Kernel* callbacks below. It is
4705 // recommended to use CreateKernelV2 which allows for a safe error
4706 // propagation by returning an OrtStatusPtr.
4707 void*(ORT_API_CALL* CreateKernel)(_In_ const struct OrtCustomOp* op, _In_ const OrtApi* api,
4708 _In_ const OrtKernelInfo* info);
4709
4710 // Returns the name of the op
4711 const char*(ORT_API_CALL* GetName)(_In_ const struct OrtCustomOp* op);
4712
4713 // Returns the type of the execution provider, return nullptr to use CPU execution provider
4714 const char*(ORT_API_CALL* GetExecutionProviderType)(_In_ const struct OrtCustomOp* op);
4715
4716 // Returns the count and types of the input & output tensors
4717 ONNXTensorElementDataType(ORT_API_CALL* GetInputType)(_In_ const struct OrtCustomOp* op, _In_ size_t index);
4718 size_t(ORT_API_CALL* GetInputTypeCount)(_In_ const struct OrtCustomOp* op);
4719 ONNXTensorElementDataType(ORT_API_CALL* GetOutputType)(_In_ const struct OrtCustomOp* op, _In_ size_t index);
4720 size_t(ORT_API_CALL* GetOutputTypeCount)(_In_ const struct OrtCustomOp* op);
4721
4722 // Perform a computation step. It is recommended to use
4723 // KernelComputeV2 which allows for a safe error propagation by
4724 // returning an OrtStatusPtr.
4725 void(ORT_API_CALL* KernelCompute)(_In_ void* op_kernel, _In_ OrtKernelContext* context);
4726 void(ORT_API_CALL* KernelDestroy)(_In_ void* op_kernel);
4727
4728 // Returns the characteristics of the input & output tensors
4729 OrtCustomOpInputOutputCharacteristic(ORT_API_CALL* GetInputCharacteristic)(_In_ const struct OrtCustomOp* op, _In_ size_t index);
4730 OrtCustomOpInputOutputCharacteristic(ORT_API_CALL* GetOutputCharacteristic)(_In_ const struct OrtCustomOp* op, _In_ size_t index);
4731
4732 // Returns the memory type of the input tensors. This API allows the custom op
4733 // to place the inputs on specific devices. By default, it returns
4734 // OrtMemTypeDefault, which means the input is placed on the default device for
4735 // the execution provider. If the inputs need to be with different memory tyeps,
4736 // this function can be overridden to return the specific memory types.
4737 OrtMemType(ORT_API_CALL* GetInputMemoryType)(_In_ const struct OrtCustomOp* op, _In_ size_t index);
4738
4739 // Returns the minimum number of input arguments expected for the variadic input.
4740 // Applicable only for custom ops that have a variadic input.
4741 int(ORT_API_CALL* GetVariadicInputMinArity)(_In_ const struct OrtCustomOp* op);
4742
4743 // Returns true (non-zero) if all arguments of a variadic input have to be of the same type (homogeneous),
4744 // and false (zero) otherwise.
4745 // Applicable only for custom ops that have a variadic input.
4746 int(ORT_API_CALL* GetVariadicInputHomogeneity)(_In_ const struct OrtCustomOp* op);
4747
4748 // Returns the minimum number of output values expected for the variadic output.
4749 // Applicable only for custom ops that have a variadic output.
4750 int(ORT_API_CALL* GetVariadicOutputMinArity)(_In_ const struct OrtCustomOp* op);
4751
4752 // Returns true (non-zero) if all outputs values of a variadic output have to be of the same type (homogeneous),
4753 // and false (zero) otherwise.
4754 // Applicable only for custom ops that have a variadic output.
4755 int(ORT_API_CALL* GetVariadicOutputHomogeneity)(_In_ const struct OrtCustomOp* op);
4756
4757 // Create the kernel state which is passed to each compute call.
4758 OrtStatusPtr(ORT_API_CALL* CreateKernelV2)(_In_ const struct OrtCustomOp* op, _In_ const OrtApi* api,
4759 _In_ const OrtKernelInfo* info,
4760 _Out_ void** kernel);
4761
4762 // Perform the computation step.
4763 OrtStatusPtr(ORT_API_CALL* KernelComputeV2)(_In_ void* op_kernel, _In_ OrtKernelContext* context);
4764
4765 OrtStatusPtr(ORT_API_CALL* InferOutputShapeFn)(_In_ const struct OrtCustomOp* op, _In_ OrtShapeInferContext*);
4766
4767 // Get start range
4768 int(ORT_API_CALL* GetStartVersion)(_In_ const struct OrtCustomOp* op);
4769 int(ORT_API_CALL* GetEndVersion)(_In_ const struct OrtCustomOp* op);
4770
4771 // Get the inplace_map that defines which output can reuse which input
4772 // Callers will provide 2 raw int* and pass in their address, this function will fill these 2 arrays
4773 // when return, output (*output_index)[i] may reuse the input (*input_index[i]).
4774 // The return value is the size of these 2 arrays.
4775 // Callers are responsible to delete these 2 arrays after use by calling OrtCustomOp::ReleaseMayInplace().
4776 size_t(ORT_API_CALL* GetMayInplace)(_Out_ int** input_index, _Out_ int** output_index);
4777
4778 // Release the pointer input_index and output_index allocated from GetMayInplace() function.
4779 // If GetMayInplace() is defined, this function MUST be defined as well.
4780 void(ORT_API_CALL* ReleaseMayInplace)(_Frees_ptr_opt_ int* input_index, _Frees_ptr_opt_ int* output_index);
4781
4782 // Same as GetMayInplace() and ReleaseMayInplace()
4783 size_t(ORT_API_CALL* GetAliasMap)(_Out_ int** input_index, _Out_ int** output_index);
4784 void(ORT_API_CALL* ReleaseAliasMap)(_Frees_ptr_opt_ int* input_index, _Frees_ptr_opt_ int* output_index);
4785};
4786
4787/*
4788 * This is the old way to add the CUDA provider to the session, please use SessionOptionsAppendExecutionProvider_CUDA above to access the latest functionality
4789 * This function always exists, but will only succeed if Onnxruntime was built with CUDA support and the CUDA provider shared library exists
4790 *
4791 * \param device_id CUDA device id, starts from zero.
4792 */
4793ORT_API_STATUS(OrtSessionOptionsAppendExecutionProvider_CUDA, _In_ OrtSessionOptions* options, int device_id);
4794
4795/*
4796 * This is the old way to add the ROCm provider to the session, please use
4797 * SessionOptionsAppendExecutionProvider_ROCM above to access the latest functionality
4798 * This function always exists, but will only succeed if Onnxruntime was built with
4799 * HIP support and the ROCm provider shared library exists
4800 *
4801 * \param device_id HIP device id, starts from zero.
4802 */
4803ORT_API_STATUS(OrtSessionOptionsAppendExecutionProvider_ROCM, _In_ OrtSessionOptions* options, int device_id);
4804
4805/*
4806 * This is the old way to add the MIGraphX provider to the session, please use
4807 * SessionOptionsAppendExecutionProvider_MIGraphX above to access the latest functionality
4808 * This function always exists, but will only succeed if Onnxruntime was built with
4809 * HIP support and the MIGraphX provider shared library exists
4810 *
4811 * \param device_id HIP device id, starts from zero.
4812 */
4813ORT_API_STATUS(OrtSessionOptionsAppendExecutionProvider_MIGraphX, _In_ OrtSessionOptions* options, int device_id);
4814
4815/*
4816 * This is the old way to add the oneDNN provider to the session, please use
4817 * SessionOptionsAppendExecutionProvider_oneDNN above to access the latest functionality
4818 * This function always exists, but will only succeed if Onnxruntime was built with
4819 * oneDNN support and the oneDNN provider shared library exists
4820 *
4821 * \param use_arena zero: false. non-zero: true.
4822 */
4823ORT_API_STATUS(OrtSessionOptionsAppendExecutionProvider_Dnnl, _In_ OrtSessionOptions* options, int use_arena);
4824
4825/*
4826 * This is the old way to add the TensorRT provider to the session, please use SessionOptionsAppendExecutionProvider_TensorRT_V2 above to access the latest functionality
4827 * This function always exists, but will only succeed if Onnxruntime was built with TensorRT support and the TensorRT provider shared library exists
4828 *
4829 * \param device_id CUDA device id, starts from zero.
4830 */
4831ORT_API_STATUS(OrtSessionOptionsAppendExecutionProvider_Tensorrt, _In_ OrtSessionOptions* options, int device_id);
4832
4833#ifdef __cplusplus
4834}
4835#endif
OrtStatus * OrtSessionOptionsAppendExecutionProvider_MIGraphX(OrtSessionOptions *options, int device_id)
struct OrtMemoryInfo OrtMemoryInfo
Definition onnxruntime_c_api.h:282
struct OrtKernelInfo OrtKernelInfo
Definition onnxruntime_c_api.h:368
OrtStatus * OrtSessionOptionsAppendExecutionProvider_Tensorrt(OrtSessionOptions *options, int device_id)
OrtLoggingLevel
Logging severity levels.
Definition onnxruntime_c_api.h:237
const struct OrtCustomHandleType * OrtCustomThreadHandle
OrtMemoryInfoDeviceType
This mimics OrtDevice type constants so they can be returned in the API.
Definition onnxruntime_c_api.h:392
struct OrtShapeInferContext OrtShapeInferContext
Definition onnxruntime_c_api.h:306
void(* OrtLoggingFunction)(void *param, OrtLoggingLevel severity, const char *category, const char *logid, const char *code_location, const char *message)
Definition onnxruntime_c_api.h:333
void(* OrtCustomJoinThreadFn)(OrtCustomThreadHandle ort_custom_thread_handle)
Custom thread join function.
Definition onnxruntime_c_api.h:716
OrtStatus *(* RegisterCustomOpsFn)(OrtSessionOptions *options, const OrtApiBase *api)
Definition onnxruntime_c_api.h:718
OrtCustomOpInputOutputCharacteristic
Definition onnxruntime_c_api.h:4690
struct OrtTensorRTProviderOptionsV2 OrtTensorRTProviderOptionsV2
Definition onnxruntime_c_api.h:299
struct OrtOpAttr OrtOpAttr
Definition onnxruntime_c_api.h:304
struct OrtThreadingOptions OrtThreadingOptions
Definition onnxruntime_c_api.h:296
struct OrtSequenceTypeInfo OrtSequenceTypeInfo
Definition onnxruntime_c_api.h:290
OrtLanguageProjection
Language projection identifiers /see OrtApi::SetLanguageProjection.
Definition onnxruntime_c_api.h:357
struct OrtDnnlProviderOptions OrtDnnlProviderOptions
Definition onnxruntime_c_api.h:302
OrtSparseIndicesFormat
Definition onnxruntime_c_api.h:226
struct OrtPrepackedWeightsContainer OrtPrepackedWeightsContainer
Definition onnxruntime_c_api.h:298
struct OrtSession OrtSession
Definition onnxruntime_c_api.h:284
struct OrtCustomOpDomain OrtCustomOpDomain
Definition onnxruntime_c_api.h:293
struct OrtIoBinding OrtIoBinding
Definition onnxruntime_c_api.h:283
OrtAllocatorType
Definition onnxruntime_c_api.h:374
struct OrtOp OrtOp
Definition onnxruntime_c_api.h:303
struct OrtModelMetadata OrtModelMetadata
Definition onnxruntime_c_api.h:294
struct OrtTypeInfo OrtTypeInfo
Definition onnxruntime_c_api.h:287
struct OrtTensorTypeAndShapeInfo OrtTensorTypeAndShapeInfo
Definition onnxruntime_c_api.h:288
struct OrtCUDAProviderOptionsV2 OrtCUDAProviderOptionsV2
Definition onnxruntime_c_api.h:300
struct OrtKernelContext OrtKernelContext
Definition onnxruntime_c_api.h:370
OrtStatus * OrtSessionOptionsAppendExecutionProvider_Dnnl(OrtSessionOptions *options, int use_arena)
OrtCudnnConvAlgoSearch
Algorithm to use for cuDNN Convolution Op.
Definition onnxruntime_c_api.h:400
struct OrtCANNProviderOptions OrtCANNProviderOptions
Definition onnxruntime_c_api.h:301
void(* RunAsyncCallbackFn)(void *user_data, OrtValue **outputs, size_t num_outputs, OrtStatusPtr status)
Callback function for RunAsync.
Definition onnxruntime_c_api.h:727
struct OrtRunOptions OrtRunOptions
Definition onnxruntime_c_api.h:286
void(* OrtThreadWorkerFn)(void *ort_worker_fn_param)
Thread work loop function.
Definition onnxruntime_c_api.h:698
OrtStatus * OrtSessionOptionsAppendExecutionProvider_ROCM(OrtSessionOptions *options, int device_id)
struct OrtOptionalTypeInfo OrtOptionalTypeInfo
Definition onnxruntime_c_api.h:291
struct OrtSessionOptions OrtSessionOptions
Definition onnxruntime_c_api.h:292
struct OrtValue OrtValue
Definition onnxruntime_c_api.h:285
GraphOptimizationLevel
Graph optimization level.
Definition onnxruntime_c_api.h:342
OrtStatus * OrtStatusPtr
Definition onnxruntime_c_api.h:311
OrtMemType
Memory types for allocated memory, execution provider specific types should be extended in each provi...
Definition onnxruntime_c_api.h:383
OrtSparseFormat
Definition onnxruntime_c_api.h:218
ONNXType
Definition onnxruntime_c_api.h:206
struct OrtEnv OrtEnv
Definition onnxruntime_c_api.h:280
OrtErrorCode
Definition onnxruntime_c_api.h:245
struct OrtStatus OrtStatus
Definition onnxruntime_c_api.h:281
struct OrtLogger OrtLogger
Definition onnxruntime_c_api.h:305
struct OrtMapTypeInfo OrtMapTypeInfo
Definition onnxruntime_c_api.h:289
struct OrtArenaCfg OrtArenaCfg
Definition onnxruntime_c_api.h:297
ExecutionMode
Definition onnxruntime_c_api.h:349
OrtStatus * OrtSessionOptionsAppendExecutionProvider_CUDA(OrtSessionOptions *options, int device_id)
OrtOpAttrType
Definition onnxruntime_c_api.h:260
OrtCustomThreadHandle(* OrtCustomCreateThreadFn)(void *ort_custom_thread_creation_options, OrtThreadWorkerFn ort_thread_worker_fn, void *ort_worker_fn_param)
Ort custom thread creation function.
Definition onnxruntime_c_api.h:709
ONNXTensorElementDataType
Definition onnxruntime_c_api.h:177
const OrtApiBase * OrtGetApiBase(void)
The Onnxruntime library's entry point to access the C API.
@ ORT_LOGGING_LEVEL_VERBOSE
Verbose informational messages (least severe).
Definition onnxruntime_c_api.h:238
@ ORT_LOGGING_LEVEL_INFO
Informational messages.
Definition onnxruntime_c_api.h:239
@ ORT_LOGGING_LEVEL_ERROR
Error messages.
Definition onnxruntime_c_api.h:241
@ ORT_LOGGING_LEVEL_WARNING
Warning messages.
Definition onnxruntime_c_api.h:240
@ ORT_LOGGING_LEVEL_FATAL
Fatal error messages (most severe).
Definition onnxruntime_c_api.h:242
@ OrtMemoryInfoDeviceType_GPU
Definition onnxruntime_c_api.h:394
@ OrtMemoryInfoDeviceType_FPGA
Definition onnxruntime_c_api.h:395
@ OrtMemoryInfoDeviceType_CPU
Definition onnxruntime_c_api.h:393
@ INPUT_OUTPUT_VARIADIC
Definition onnxruntime_c_api.h:4693
@ INPUT_OUTPUT_REQUIRED
Definition onnxruntime_c_api.h:4691
@ INPUT_OUTPUT_OPTIONAL
Definition onnxruntime_c_api.h:4692
@ ORT_PROJECTION_C
Definition onnxruntime_c_api.h:358
@ ORT_PROJECTION_PYTHON
Definition onnxruntime_c_api.h:361
@ ORT_PROJECTION_CPLUSPLUS
Definition onnxruntime_c_api.h:359
@ ORT_PROJECTION_WINML
Definition onnxruntime_c_api.h:363
@ ORT_PROJECTION_CSHARP
Definition onnxruntime_c_api.h:360
@ ORT_PROJECTION_JAVA
Definition onnxruntime_c_api.h:362
@ ORT_PROJECTION_NODEJS
Definition onnxruntime_c_api.h:364
@ ORT_SPARSE_COO_INDICES
Definition onnxruntime_c_api.h:227
@ ORT_SPARSE_BLOCK_SPARSE_INDICES
Definition onnxruntime_c_api.h:230
@ ORT_SPARSE_CSR_OUTER_INDICES
Definition onnxruntime_c_api.h:229
@ ORT_SPARSE_CSR_INNER_INDICES
Definition onnxruntime_c_api.h:228
@ OrtDeviceAllocator
Definition onnxruntime_c_api.h:376
@ OrtArenaAllocator
Definition onnxruntime_c_api.h:377
@ OrtInvalidAllocator
Definition onnxruntime_c_api.h:375
@ OrtCudnnConvAlgoSearchDefault
Definition onnxruntime_c_api.h:403
@ OrtCudnnConvAlgoSearchExhaustive
Definition onnxruntime_c_api.h:401
@ OrtCudnnConvAlgoSearchHeuristic
Definition onnxruntime_c_api.h:402
@ ORT_ENABLE_BASIC
Definition onnxruntime_c_api.h:344
@ ORT_ENABLE_ALL
Definition onnxruntime_c_api.h:346
@ ORT_DISABLE_ALL
Definition onnxruntime_c_api.h:343
@ ORT_ENABLE_EXTENDED
Definition onnxruntime_c_api.h:345
@ OrtMemTypeCPUInput
Any CPU memory used by non-CPU execution provider.
Definition onnxruntime_c_api.h:384
@ OrtMemTypeCPU
Temporary CPU accessible memory allocated by non-CPU execution provider, i.e. CUDA_PINNED.
Definition onnxruntime_c_api.h:386
@ OrtMemTypeDefault
The default allocator for execution provider.
Definition onnxruntime_c_api.h:387
@ OrtMemTypeCPUOutput
CPU accessible memory outputted by non-CPU execution provider, i.e. CUDA_PINNED.
Definition onnxruntime_c_api.h:385
@ ORT_SPARSE_CSRC
Definition onnxruntime_c_api.h:221
@ ORT_SPARSE_COO
Definition onnxruntime_c_api.h:220
@ ORT_SPARSE_BLOCK_SPARSE
Definition onnxruntime_c_api.h:222
@ ORT_SPARSE_UNDEFINED
Definition onnxruntime_c_api.h:219
@ ONNX_TYPE_SEQUENCE
Definition onnxruntime_c_api.h:209
@ ONNX_TYPE_MAP
Definition onnxruntime_c_api.h:210
@ ONNX_TYPE_OPAQUE
Definition onnxruntime_c_api.h:211
@ ONNX_TYPE_UNKNOWN
Definition onnxruntime_c_api.h:207
@ ONNX_TYPE_TENSOR
Definition onnxruntime_c_api.h:208
@ ONNX_TYPE_SPARSETENSOR
Definition onnxruntime_c_api.h:212
@ ONNX_TYPE_OPTIONAL
Definition onnxruntime_c_api.h:213
@ ORT_NO_SUCHFILE
Definition onnxruntime_c_api.h:249
@ ORT_OK
Definition onnxruntime_c_api.h:246
@ ORT_INVALID_ARGUMENT
Definition onnxruntime_c_api.h:248
@ ORT_EP_FAIL
Definition onnxruntime_c_api.h:257
@ ORT_NOT_IMPLEMENTED
Definition onnxruntime_c_api.h:255
@ ORT_RUNTIME_EXCEPTION
Definition onnxruntime_c_api.h:252
@ ORT_ENGINE_ERROR
Definition onnxruntime_c_api.h:251
@ ORT_FAIL
Definition onnxruntime_c_api.h:247
@ ORT_INVALID_PROTOBUF
Definition onnxruntime_c_api.h:253
@ ORT_NO_MODEL
Definition onnxruntime_c_api.h:250
@ ORT_INVALID_GRAPH
Definition onnxruntime_c_api.h:256
@ ORT_MODEL_LOADED
Definition onnxruntime_c_api.h:254
@ ORT_PARALLEL
Definition onnxruntime_c_api.h:351
@ ORT_SEQUENTIAL
Definition onnxruntime_c_api.h:350
@ ORT_OP_ATTR_INT
Definition onnxruntime_c_api.h:262
@ ORT_OP_ATTR_FLOATS
Definition onnxruntime_c_api.h:265
@ ORT_OP_ATTR_STRINGS
Definition onnxruntime_c_api.h:267
@ ORT_OP_ATTR_UNDEFINED
Definition onnxruntime_c_api.h:261
@ ORT_OP_ATTR_INTS
Definition onnxruntime_c_api.h:263
@ ORT_OP_ATTR_STRING
Definition onnxruntime_c_api.h:266
@ ORT_OP_ATTR_FLOAT
Definition onnxruntime_c_api.h:264
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_STRING
Definition onnxruntime_c_api.h:186
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_INT32
Definition onnxruntime_c_api.h:184
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT32
Definition onnxruntime_c_api.h:190
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT16
Definition onnxruntime_c_api.h:182
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_UNDEFINED
Definition onnxruntime_c_api.h:178
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_COMPLEX128
Definition onnxruntime_c_api.h:193
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E5M2FNUZ
Definition onnxruntime_c_api.h:199
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT64
Definition onnxruntime_c_api.h:191
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT4
Definition onnxruntime_c_api.h:201
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_INT64
Definition onnxruntime_c_api.h:185
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E5M2
Definition onnxruntime_c_api.h:198
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_BOOL
Definition onnxruntime_c_api.h:187
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT16
Definition onnxruntime_c_api.h:188
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_UINT8
Definition onnxruntime_c_api.h:180
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_INT16
Definition onnxruntime_c_api.h:183
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_DOUBLE
Definition onnxruntime_c_api.h:189
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_INT8
Definition onnxruntime_c_api.h:181
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT
Definition onnxruntime_c_api.h:179
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E4M3FN
Definition onnxruntime_c_api.h:196
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_BFLOAT16
Definition onnxruntime_c_api.h:194
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_INT4
Definition onnxruntime_c_api.h:202
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_COMPLEX64
Definition onnxruntime_c_api.h:192
@ ONNX_TENSOR_ELEMENT_DATA_TYPE_FLOAT8E4M3FNUZ
Definition onnxruntime_c_api.h:197
Memory allocation interface.
Definition onnxruntime_c_api.h:320
void(* Free)(struct OrtAllocator *this_, void *p)
Free a block of memory previously allocated with OrtAllocator::Alloc.
Definition onnxruntime_c_api.h:323
const struct OrtMemoryInfo *(* Info)(const struct OrtAllocator *this_)
Return a pointer to an OrtMemoryInfo that describes this allocator.
Definition onnxruntime_c_api.h:324
uint32_t version
Must be initialized to ORT_API_VERSION.
Definition onnxruntime_c_api.h:321
void *(* Alloc)(struct OrtAllocator *this_, size_t size)
Returns a pointer to an allocated block of size bytes.
Definition onnxruntime_c_api.h:322
void *(* Reserve)(struct OrtAllocator *this_, size_t size)
Optional allocation function to use for memory allocations made during session initialization....
Definition onnxruntime_c_api.h:330
The helper interface to get the right version of OrtApi.
Definition onnxruntime_c_api.h:666
const char *(* GetVersionString)(void)
Returns a null terminated string of the version of the Onnxruntime library (eg: "1....
Definition onnxruntime_c_api.h:682
const OrtApi *(* GetApi)(uint32_t version)
Get a pointer to the requested version of the OrtApi.
Definition onnxruntime_c_api.h:676
The C API.
Definition onnxruntime_c_api.h:736
OrtStatus * SetGlobalIntraOpThreadAffinity(OrtThreadingOptions *tp_options, const char *affinity_string)
OrtStatus * ShapeInferContext_SetOutputTypeShape(const OrtShapeInferContext *context, size_t index, const OrtTensorTypeAndShapeInfo *info)
OrtStatus * SessionGetOverridableInitializerTypeInfo(const OrtSession *session, size_t index, OrtTypeInfo **type_info)
Get overridable initializer type information.
OrtStatus * SessionOptionsSetCustomJoinThreadFn(OrtSessionOptions *options, OrtCustomJoinThreadFn ort_custom_join_thread_fn)
Set custom thread join function.
OrtStatus * KernelInfoGetAttributeArray_int64(const OrtKernelInfo *info, const char *name, int64_t *out, size_t *size)
Fetch an array of int64_t values stored as an attribute in the graph node.
OrtStatus * CreateSessionOptions(OrtSessionOptions **options)
Create an OrtSessionOptions object.
void(* ReleaseDnnlProviderOptions)(OrtDnnlProviderOptions *input)
Release an OrtDnnlProviderOptions.
Definition onnxruntime_c_api.h:4125
OrtStatus * TensorAt(OrtValue *value, const int64_t *location_values, size_t location_values_count, void **out)
Direct memory access to a specified tensor element.
OrtStatus * KernelInfoGetAttribute_float(const OrtKernelInfo *info, const char *name, float *out)
Get a float stored as an attribute in the graph node.
OrtStatus * GetCANNProviderOptionsAsString(const OrtCANNProviderOptions *cann_options, OrtAllocator *allocator, char **ptr)
Get serialized CANN provider options string.
OrtStatus * InvokeOp(const OrtKernelContext *context, const OrtOp *ort_op, const OrtValue *const *input_values, int input_count, OrtValue *const *output_values, int output_count)
: Invoke the operator created by OrtApi::CreateOp The inputs must follow the order as specified in on...
OrtStatus * HasSessionConfigEntry(const OrtSessionOptions *options, const char *config_key, int *out)
Checks if the given session configuration entry exists.
const char *(* GetBuildInfoString)(void)
Returns a null terminated string of the build info including git info and cxx flags.
Definition onnxruntime_c_api.h:4315
OrtStatus * AddExternalInitializersFromFilesInMemory(OrtSessionOptions *options, const char *const *external_initializer_file_names, char *const *external_initializer_file_buffer_array, const size_t *external_initializer_file_lengths, size_t num_external_initializer_files)
Replace initialized Tensors with external data with the provided files in memory.
OrtStatus * GetTensorMemoryInfo(const OrtValue *value, const OrtMemoryInfo **mem_info)
Returns a pointer to the OrtMemoryInfo of a Tensor.
OrtStatus * EnableCpuMemArena(OrtSessionOptions *options)
Enable the memory arena on CPU.
OrtStatus * CreateSparseTensorWithValuesAsOrtValue(const OrtMemoryInfo *info, void *p_data, const int64_t *dense_shape, size_t dense_shape_len, const int64_t *values_shape, size_t values_shape_len, ONNXTensorElementDataType type, OrtValue **out)
OrtStatus * GetValueCount(const OrtValue *value, size_t *out)
Get non tensor value count from an OrtValue.
OrtStatus * SetGlobalCustomJoinThreadFn(OrtThreadingOptions *tp_options, OrtCustomJoinThreadFn ort_custom_join_thread_fn)
Set custom thread join function for global thread pools.
OrtStatus * CreateCUDAProviderOptions(OrtCUDAProviderOptionsV2 **out)
Create an OrtCUDAProviderOptionsV2.
OrtStatus * DisableProfiling(OrtSessionOptions *options)
Disable profiling for a session.
OrtStatus * KernelInfoGetAttributeArray_float(const OrtKernelInfo *info, const char *name, float *out, size_t *size)
Fetch an array of int64_t values stored as an attribute in the graph node.
OrtStatus * CreatePrepackedWeightsContainer(OrtPrepackedWeightsContainer **out)
Create an OrtPrepackedWeightsContainer.
OrtStatus * SetDeterministicCompute(OrtSessionOptions *options, bool value)
Set whether to use deterministic compute.
OrtStatus * UpdateTensorRTProviderOptionsWithValue(OrtTensorRTProviderOptionsV2 *tensorrt_options, const char *key, void *value)
OrtStatus * CreateSessionFromArrayWithPrepackedWeightsContainer(const OrtEnv *env, const void *model_data, size_t model_data_length, const OrtSessionOptions *options, OrtPrepackedWeightsContainer *prepacked_weights_container, OrtSession **out)
Create session from memory with prepacked weights container.
OrtStatus * AddFreeDimensionOverrideByName(OrtSessionOptions *options, const char *dim_name, int64_t dim_value)
OrtStatus * KernelInfo_GetInputCount(const OrtKernelInfo *info, size_t *out)
Get the number of inputs from OrtKernelInfo.
OrtStatus * GetSparseTensorFormat(const OrtValue *ort_value, enum OrtSparseFormat *out)
Returns sparse tensor format enum iff a given ort value contains an instance of sparse tensor.
OrtStatus * KernelContext_GetGPUComputeStream(const OrtKernelContext *context, void **out)
Used for custom operators, gets the GPU compute stream to use to launch the custom a GPU kernel.
OrtStatus * UpdateCANNProviderOptions(OrtCANNProviderOptions *cann_options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Set options in a CANN Execution Provider.
OrtStatus * CreateAndRegisterAllocatorV2(OrtEnv *env, const char *provider_type, const OrtMemoryInfo *mem_info, const OrtArenaCfg *arena_cfg, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Create an allocator with specific type and register it with the OrtEnv This API enhance CreateAndRegi...
OrtStatus * SessionGetOutputName(const OrtSession *session, size_t index, OrtAllocator *allocator, char **value)
Get output name.
OrtStatus * SessionOptionsAppendExecutionProvider_TensorRT(OrtSessionOptions *options, const OrtTensorRTProviderOptions *tensorrt_options)
Append TensorRT provider to session options.
const OrtTrainingApi *(* GetTrainingApi)(uint32_t version)
Gets the Training C Api struct.
Definition onnxruntime_c_api.h:3723
OrtStatus * SetIntraOpNumThreads(OrtSessionOptions *options, int intra_op_num_threads)
Sets the number of threads used to parallelize the execution within nodes.
OrtStatus * GetTypeInfo(const OrtValue *value, OrtTypeInfo **out)
Get type information of an OrtValue.
OrtStatus * CastTypeInfoToMapTypeInfo(const OrtTypeInfo *type_info, const OrtMapTypeInfo **out)
Get detailed map information from an OrtTypeInfo.
OrtStatus * KernelContext_GetLogger(const OrtKernelContext *context, const OrtLogger **logger)
Get the runtime logger from OrtKernelContext.
OrtStatus * SetGlobalCustomThreadCreationOptions(OrtThreadingOptions *tp_options, void *ort_custom_thread_creation_options)
Set custom thread creation options for global thread pools.
OrtStatus * AddSessionConfigEntry(OrtSessionOptions *options, const char *config_key, const char *config_value)
Set a session configuration entry as a pair of strings.
OrtStatus * SetGlobalDenormalAsZero(OrtThreadingOptions *tp_options)
Set threading flush-to-zero and denormal-as-zero.
void(* ClearBoundInputs)(OrtIoBinding *binding_ptr) __attribute__((nonnull))
Clears any previously set Inputs for an OrtIoBinding.
Definition onnxruntime_c_api.h:2424
OrtStatus * KernelInfo_GetInputTypeInfo(const OrtKernelInfo *info, size_t index, OrtTypeInfo **type_info)
Get the type information for a OrtKernelInfo's input.
OrtStatus * KernelInfoGetAttribute_string(const OrtKernelInfo *info, const char *name, char *out, size_t *size)
Fetch a string stored as an attribute in the graph node.
OrtStatus * GetSparseTensorIndicesTypeShape(const OrtValue *ort_value, enum OrtSparseIndicesFormat indices_format, OrtTensorTypeAndShapeInfo **out)
Returns data type, shape for the type of indices specified by indices_format.
OrtStatus * SessionOptionsAppendExecutionProvider_MIGraphX(OrtSessionOptions *options, const OrtMIGraphXProviderOptions *migraphx_options)
Append MIGraphX provider to session options.
OrtStatus * RunOptionsSetRunLogVerbosityLevel(OrtRunOptions *options, int log_verbosity_level)
Set per-run log verbosity level.
OrtStatus * AddInitializer(OrtSessionOptions *options, const char *name, const OrtValue *val)
Add a pre-allocated initializer to a session.
OrtStatus * CreateEnv(OrtLoggingLevel log_severity_level, const char *logid, OrtEnv **out)
Create an OrtEnv.
OrtStatus * UseCooIndices(OrtValue *ort_value, int64_t *indices_data, size_t indices_num)
OrtStatus * GetTensorMutableData(OrtValue *value, void **out)
Get a pointer to the raw data inside a tensor.
OrtStatus * KernelInfoGetAllocator(const OrtKernelInfo *info, OrtMemType mem_type, OrtAllocator **out)
Get allocator from KernelInfo for a specific memory type. Please use C API ReleaseAllocator to releas...
OrtStatus * SessionOptionsAppendExecutionProvider_OpenVINO(OrtSessionOptions *options, const OrtOpenVINOProviderOptions *provider_options)
Append OpenVINO execution provider to the session options.
OrtStatus * IsSparseTensor(const OrtValue *value, int *out)
Sets *out to 1 iff an OrtValue is a SparseTensor, and 0 otherwise.
OrtStatus * GetTensorElementType(const OrtTensorTypeAndShapeInfo *info, enum ONNXTensorElementDataType *out)
Get element type in OrtTensorTypeAndShapeInfo.
OrtStatus * CreateSparseTensorAsOrtValue(OrtAllocator *allocator, const int64_t *dense_shape, size_t dense_shape_len, ONNXTensorElementDataType type, OrtValue **out)
Create an OrtValue with a sparse tensor that is empty.
OrtStatus * FillStringTensorElement(OrtValue *value, const char *s, size_t index)
Set a single string in a string tensor.
OrtStatus * CreateTensorWithDataAsOrtValue(const OrtMemoryInfo *info, void *p_data, size_t p_data_len, const int64_t *shape, size_t shape_len, ONNXTensorElementDataType type, OrtValue **out)
Create a tensor backed by a user supplied buffer.
OrtStatus * AddExternalInitializers(OrtSessionOptions *options, const char *const *initializer_names, const OrtValue *const *initializers, size_t num_initializers)
Replace initialized Tensors with external data with the data provided in initializers.
OrtStatus * ModelMetadataGetGraphDescription(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, char **value)
OrtStatus * UpdateDnnlProviderOptions(OrtDnnlProviderOptions *dnnl_options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Set options in a oneDNN Execution Provider.
OrtStatus * GetStringTensorElementLength(const OrtValue *value, size_t index, size_t *out)
Get the length of a single string in a string tensor.
void(* MemoryInfoGetDeviceType)(const OrtMemoryInfo *ptr, OrtMemoryInfoDeviceType *out)
Definition onnxruntime_c_api.h:3795
OrtStatus * AddRunConfigEntry(OrtRunOptions *options, const char *config_key, const char *config_value)
Set a single run configuration entry as a pair of strings.
OrtStatus * GetBoundOutputValues(const OrtIoBinding *binding_ptr, OrtAllocator *allocator, OrtValue ***output, size_t *output_count)
Get the output OrtValue objects from an OrtIoBinding.
OrtStatus * ModelMetadataGetDomain(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, char **value)
Get domain from an OrtModelMetadata.
OrtStatus * SetLanguageProjection(const OrtEnv *ort_env, OrtLanguageProjection projection)
Set language projection.
OrtStatus * FillStringTensor(OrtValue *value, const char *const *s, size_t s_len)
Set all strings at once in a string tensor.
OrtStatus * SetSessionLogId(OrtSessionOptions *options, const char *logid)
Set session log id.
OrtStatus * SessionOptionsAppendExecutionProvider_CUDA(OrtSessionOptions *options, const OrtCUDAProviderOptions *cuda_options)
Append CUDA provider to session options.
OrtStatus * RegisterAllocator(OrtEnv *env, OrtAllocator *allocator)
Register a custom allocator.
OrtStatus * SetGlobalSpinControl(OrtThreadingOptions *tp_options, int allow_spinning)
Set global spin control options.
OrtStatus * MemoryInfoGetId(const OrtMemoryInfo *ptr, int *out)
Get the id from OrtMemoryInfo.
OrtStatus * KernelInfo_GetOutputName(const OrtKernelInfo *info, size_t index, char *out, size_t *size)
Get the name of a OrtKernelInfo's output.
OrtStatus * Logger_LogMessage(const OrtLogger *logger, OrtLoggingLevel log_severity_level, const char *message, const char *file_path, int line_number, const char *func_name)
Logs a message at the given severity level using the provided OrtLogger.
OrtStatus * CreateEnvWithCustomLogger(OrtLoggingFunction logging_function, void *logger_param, OrtLoggingLevel log_severity_level, const char *logid, OrtEnv **out)
Create an OrtEnv.
OrtStatus * UpdateCUDAProviderOptionsWithValue(OrtCUDAProviderOptionsV2 *cuda_options, const char *key, void *value)
OrtStatus * MemoryInfoGetName(const OrtMemoryInfo *ptr, const char **out)
Get name from OrtMemoryInfo.
OrtStatus * Logger_GetLoggingSeverityLevel(const OrtLogger *logger, OrtLoggingLevel *out)
Get the logging severity level of the OrtLogger.
OrtStatus * GetExecutionProviderApi(const char *provider_name, uint32_t version, const void **provider_api)
Get a pointer to the requested version of the Execution Provider specific API extensions to the OrtAp...
OrtStatus * KernelContext_GetOutputCount(const OrtKernelContext *context, size_t *out)
Used for custom operators, get the output count of a kernel.
OrtStatus * GetTensorShapeElementCount(const OrtTensorTypeAndShapeInfo *info, size_t *out)
Get total number of elements in a tensor shape from an OrtTensorTypeAndShapeInfo.
OrtStatus * CastTypeInfoToTensorInfo(const OrtTypeInfo *type_info, const OrtTensorTypeAndShapeInfo **out)
Get OrtTensorTypeAndShapeInfo from an OrtTypeInfo.
OrtStatus * GetOptionalContainedTypeInfo(const OrtOptionalTypeInfo *optional_type_info, OrtTypeInfo **out)
Get OrtTypeInfo for the allowed contained type from an OrtOptionalTypeInfo.
OrtStatus * CreateOp(const OrtKernelInfo *info, const char *op_name, const char *domain, int version, const char **type_constraint_names, const ONNXTensorElementDataType *type_constraint_values, int type_constraint_count, const OrtOpAttr *const *attr_values, int attr_count, int input_count, int output_count, OrtOp **ort_op)
: Create onnxruntime native operator
OrtStatus * MemoryInfoGetType(const OrtMemoryInfo *ptr, OrtAllocatorType *out)
Get the OrtAllocatorType from OrtMemoryInfo.
OrtStatus * HasValue(const OrtValue *value, int *out)
Sets out to 1 iff an optional type OrtValue has an element, 0 otherwise (OrtValue is None) Use this A...
OrtStatus * CreateEnvWithGlobalThreadPools(OrtLoggingLevel log_severity_level, const char *logid, const OrtThreadingOptions *tp_options, OrtEnv **out)
Create an OrtEnv.
OrtStatus * KernelContext_GetAllocator(const OrtKernelContext *context, const OrtMemoryInfo *mem_info, OrtAllocator **out)
Get Allocator from KernelContext for a specific memoryInfo. Please use C API ReleaseAllocator to rele...
OrtStatus * KernelInfoGetConstantInput_tensor(const OrtKernelInfo *info, size_t index, int *is_constant, const OrtValue **out)
Get a OrtValue tensor stored as a constant initializer in the graph node.
OrtStatus * GetCUDAProviderOptionsAsString(const OrtCUDAProviderOptionsV2 *cuda_options, OrtAllocator *allocator, char **ptr)
OrtStatus * UpdateCUDAProviderOptions(OrtCUDAProviderOptionsV2 *cuda_options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Set options in a CUDA Execution Provider.
OrtStatus * CopyKernelInfo(const OrtKernelInfo *info, OrtKernelInfo **info_copy)
OrtStatus * GetTensorRTProviderOptionsAsString(const OrtTensorRTProviderOptionsV2 *tensorrt_options, OrtAllocator *allocator, char **ptr)
Get serialized TensorRT provider options string.
OrtStatus * SessionOptionsSetCustomThreadCreationOptions(OrtSessionOptions *options, void *ort_custom_thread_creation_options)
Set creation options for custom thread.
OrtStatus * GetDimensionsCount(const OrtTensorTypeAndShapeInfo *info, size_t *out)
Get dimension count in OrtTensorTypeAndShapeInfo.
void(* ReleaseROCMProviderOptions)(OrtROCMProviderOptions *input)
Release an OrtROCMProviderOptions.
Definition onnxruntime_c_api.h:4374
OrtStatus * UpdateROCMProviderOptions(OrtROCMProviderOptions *rocm_options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Set options in a ROCm Execution Provider.
OrtStatus * KernelInfo_GetInputName(const OrtKernelInfo *info, size_t index, char *out, size_t *size)
Get the name of a OrtKernelInfo's input.
OrtStatus * KernelContext_GetResource(const OrtKernelContext *context, int resource_version, int resource_id, void **resource)
OrtStatus * RegisterCustomOpsLibrary(OrtSessionOptions *options, const char *library_path, void **library_handle)
OrtStatus * SetCurrentGpuDeviceId(int device_id)
Set current GPU device ID.
OrtStatus * GetOnnxTypeFromTypeInfo(const OrtTypeInfo *type_info, enum ONNXType *out)
Get ONNXType from OrtTypeInfo.
OrtStatus * GetDenotationFromTypeInfo(const OrtTypeInfo *type_info, const char **const denotation, size_t *len)
Get denotation from type information.
OrtStatus * KernelContext_ParallelFor(const OrtKernelContext *context, void(*fn)(void *, size_t), size_t total, size_t num_batch, void *usr_data)
void(* ReleaseCANNProviderOptions)(OrtCANNProviderOptions *input)
Release an OrtCANNProviderOptions.
Definition onnxruntime_c_api.h:3789
OrtStatus * SetGlobalInterOpNumThreads(OrtThreadingOptions *tp_options, int inter_op_num_threads)
Set global inter-op thread count.
OrtStatus * CloneSessionOptions(const OrtSessionOptions *in_options, OrtSessionOptions **out_options)
Create a copy of an existing OrtSessionOptions.
OrtStatus * GetSessionConfigEntry(const OrtSessionOptions *options, const char *config_key, char *config_value, size_t *size)
Get a session configuration value.
OrtStatus * SessionOptionsAppendExecutionProvider_TensorRT_V2(OrtSessionOptions *options, const OrtTensorRTProviderOptionsV2 *tensorrt_options)
Append TensorRT execution provider to the session options.
OrtStatus * AddFreeDimensionOverride(OrtSessionOptions *options, const char *dim_denotation, int64_t dim_value)
Override session symbolic dimensions.
OrtStatus * KernelContext_GetOutput(OrtKernelContext *context, size_t index, const int64_t *dim_values, size_t dim_count, OrtValue **out)
Used for custom operators, get an output of a kernel.
OrtStatus * EnableTelemetryEvents(const OrtEnv *env)
Enable Telemetry.
OrtStatus * CreateMemoryInfo(const char *name, enum OrtAllocatorType type, int id, enum OrtMemType mem_type, OrtMemoryInfo **out)
Create an OrtMemoryInfo.
OrtStatus * SessionOptionsAppendExecutionProvider_ROCM(OrtSessionOptions *options, const OrtROCMProviderOptions *rocm_options)
Append ROCM execution provider to the session options.
OrtStatus * SessionGetInputTypeInfo(const OrtSession *session, size_t index, OrtTypeInfo **type_info)
Get input type information.
OrtStatus * GetSymbolicDimensions(const OrtTensorTypeAndShapeInfo *info, const char *dim_params[], size_t dim_params_length)
Get symbolic dimension names in OrtTensorTypeAndShapeInfo.
OrtStatus * SessionOptionsAppendExecutionProvider_OpenVINO_V2(OrtSessionOptions *options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Append OpenVINO execution provider to the session options.
OrtStatus * GetStringTensorDataLength(const OrtValue *value, size_t *len)
Get total byte length for all strings in a string tensor.
OrtStatus * KernelContext_GetInputCount(const OrtKernelContext *context, size_t *out)
Used for custom operators, get the input count of a kernel.
OrtStatus * BindOutputToDevice(OrtIoBinding *binding_ptr, const char *name, const OrtMemoryInfo *mem_info_ptr)
Bind an OrtIoBinding output to a device.
OrtStatus * SessionOptionsAppendExecutionProvider(OrtSessionOptions *options, const char *provider_name, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
: Append execution provider to the session options.
OrtStatus * SetSessionGraphOptimizationLevel(OrtSessionOptions *options, GraphOptimizationLevel graph_optimization_level)
Set the optimization level to apply when loading a graph.
OrtStatus * ModelMetadataGetDescription(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, char **value)
Get description from an OrtModelMetadata.
OrtStatus * CreateCANNProviderOptions(OrtCANNProviderOptions **out)
Create an OrtCANNProviderOptions.
OrtStatus * ReadOpAttr(const OrtOpAttr *op_attr, OrtOpAttrType type, void *data, size_t len, size_t *out)
OrtStatus * DisablePerSessionThreads(OrtSessionOptions *options)
Use global thread pool on a session.
OrtStatus * SetDimensions(OrtTensorTypeAndShapeInfo *info, const int64_t *dim_values, size_t dim_count)
Set shape information in OrtTensorTypeAndShapeInfo.
OrtStatus * SetInterOpNumThreads(OrtSessionOptions *options, int inter_op_num_threads)
Sets the number of threads used to parallelize the execution of the graph.
OrtStatus * CustomOpDomain_Add(OrtCustomOpDomain *custom_op_domain, const OrtCustomOp *op)
Add a custom op to a custom op domain.
OrtStatus * GetSequenceElementType(const OrtSequenceTypeInfo *sequence_type_info, OrtTypeInfo **type_info)
Get element type from an OrtSequenceTypeInfo.
OrtStatus * RunOptionsGetRunLogVerbosityLevel(const OrtRunOptions *options, int *log_verbosity_level)
Get per-run log verbosity level.
OrtStatus * FillSparseTensorCsr(OrtValue *ort_value, const OrtMemoryInfo *data_mem_info, const int64_t *values_shape, size_t values_shape_len, const void *values, const int64_t *inner_indices_data, size_t inner_indices_num, const int64_t *outer_indices_data, size_t outer_indices_num)
OrtStatus * CreateAndRegisterAllocator(OrtEnv *env, const OrtMemoryInfo *mem_info, const OrtArenaCfg *arena_cfg)
Create an allocator and register it with the OrtEnv.
OrtStatus * CreateCpuMemoryInfo(enum OrtAllocatorType type, enum OrtMemType mem_type, OrtMemoryInfo **out)
Create an OrtMemoryInfo for CPU memory.
OrtStatus * AddCustomOpDomain(OrtSessionOptions *options, OrtCustomOpDomain *custom_op_domain)
Add custom op domain to a session options.
OrtStatus * KernelInfo_GetOutputTypeInfo(const OrtKernelInfo *info, size_t index, OrtTypeInfo **type_info)
Get the type information for a OrtKernelInfo's output.
OrtStatus * KernelContext_GetInput(const OrtKernelContext *context, size_t index, const OrtValue **out)
Used for custom operators, get an input of a kernel.
OrtStatus * CreateEnvWithCustomLoggerAndGlobalThreadPools(OrtLoggingFunction logging_function, void *logger_param, OrtLoggingLevel log_severity_level, const char *logid, const struct OrtThreadingOptions *tp_options, OrtEnv **out)
OrtStatus * DisableTelemetryEvents(const OrtEnv *env)
Disable Telemetry.
OrtStatus * KernelInfo_GetOutputCount(const OrtKernelInfo *info, size_t *out)
Get the number of outputs from OrtKernelInfo.
OrtStatus * ShapeInferContext_GetInputCount(const OrtShapeInferContext *context, size_t *out)
OrtStatus * ModelMetadataGetGraphName(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, char **value)
Get graph name from an OrtModelMetadata.
OrtStatus * CreateROCMProviderOptions(OrtROCMProviderOptions **out)
Create an OrtROCMProviderOptions.
OrtStatus * ModelMetadataLookupCustomMetadataMap(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, const char *key, char **value)
Return data for a key in the custom metadata map in an OrtModelMetadata.
OrtStatus * RunOptionsSetRunLogSeverityLevel(OrtRunOptions *options, int log_severity_level)
Set per-run log severity level.
OrtStatus * GetCUDAProviderOptionsByName(const OrtCUDAProviderOptionsV2 *cuda_options, const char *key, void **ptr)
OrtStatus * SetSessionExecutionMode(OrtSessionOptions *options, ExecutionMode execution_mode)
Set execution mode.
OrtStatus * SessionGetInputName(const OrtSession *session, size_t index, OrtAllocator *allocator, char **value)
Get input name.
OrtStatus * GetDnnlProviderOptionsAsString(const OrtDnnlProviderOptions *dnnl_options, OrtAllocator *allocator, char **ptr)
OrtStatus * CreateRunOptions(OrtRunOptions **out)
Create an OrtRunOptions.
OrtStatus * RunOptionsGetRunTag(const OrtRunOptions *options, const char **run_tag)
Get per-run tag.
OrtStatus * CreateCustomOpDomain(const char *domain, OrtCustomOpDomain **out)
Create a custom op domain.
OrtStatus * ModelMetadataGetCustomMetadataMapKeys(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, char ***keys, int64_t *num_keys)
const char *(* GetErrorMessage)(const OrtStatus *status) __attribute__((nonnull))
Get error string from OrtStatus.
Definition onnxruntime_c_api.h:761
OrtStatus * IsTensor(const OrtValue *value, int *out)
Return if an OrtValue is a tensor type.
OrtStatus * AllocatorFree(OrtAllocator *ort_allocator, void *p)
Calls OrtAllocator::Free function.
OrtStatus * GetMapValueType(const OrtMapTypeInfo *map_type_info, OrtTypeInfo **type_info)
Get the value type from an OrtMapTypeInfo.
OrtStatus * CreateSessionFromArray(const OrtEnv *env, const void *model_data, size_t model_data_length, const OrtSessionOptions *options, OrtSession **out)
Create an OrtSession from memory.
OrtStatus * CreateArenaCfgV2(const char *const *arena_config_keys, const size_t *arena_config_values, size_t num_keys, OrtArenaCfg **out)
Create an OrtArenaCfg.
OrtStatus * GetAllocatorWithDefaultOptions(OrtAllocator **out)
Get the default allocator.
OrtStatus * CreateSession(const OrtEnv *env, const char *model_path, const OrtSessionOptions *options, OrtSession **out)
Create an OrtSession from a model file.
OrtStatus * SessionOptionsAppendExecutionProvider_Dnnl(OrtSessionOptions *options, const OrtDnnlProviderOptions *dnnl_options)
Append dnnl provider to session options.
OrtStatus * CreateArenaCfg(size_t max_mem, int arena_extend_strategy, int initial_chunk_size_bytes, int max_dead_bytes_per_chunk, OrtArenaCfg **out)
OrtStatus * SessionGetInputCount(const OrtSession *session, size_t *out)
Get input count for a session.
OrtStatus * GetValue(const OrtValue *value, int index, OrtAllocator *allocator, OrtValue **out)
Get non tensor data from an OrtValue.
OrtStatus * ShapeInferContext_GetAttribute(const OrtShapeInferContext *context, const char *attr_name, const OrtOpAttr **attr)
OrtStatus * GetSparseTensorIndices(const OrtValue *ort_value, enum OrtSparseIndicesFormat indices_format, size_t *num_indices, const void **indices)
Returns indices data for the type of the indices specified by indices_format.
OrtStatus * EnableProfiling(OrtSessionOptions *options, const char *profile_file_prefix)
Enable profiling for a session.
OrtStatus * SetUserLoggingFunction(OrtSessionOptions *options, OrtLoggingFunction user_logging_function, void *user_logging_param)
Set user logging function.
OrtStatus * GetStringTensorElement(const OrtValue *value, size_t s_len, size_t index, void *s)
Get a single string from a string tensor.
OrtStatus * GetTensorTypeAndShape(const OrtValue *value, OrtTensorTypeAndShapeInfo **out)
Get type and shape information from a tensor OrtValue.
OrtStatus * BindInput(OrtIoBinding *binding_ptr, const char *name, const OrtValue *val_ptr)
Bind an OrtValue to an OrtIoBinding input.
OrtStatus * GetResizedStringTensorElementBuffer(OrtValue *value, size_t index, size_t length_in_bytes, char **buffer)
Set a single string in a string tensor Do not zero terminate the string data.
OrtStatus * DisableCpuMemArena(OrtSessionOptions *options)
Disable the memory arena on CPU.
void(* ClearBoundOutputs)(OrtIoBinding *binding_ptr) __attribute__((nonnull))
Clears any previously set Outputs for an OrtIoBinding.
Definition onnxruntime_c_api.h:2428
OrtStatus * SetSymbolicDimensions(OrtTensorTypeAndShapeInfo *info, const char *dim_params[], size_t dim_params_length)
OrtStatus * SessionOptionsAppendExecutionProvider_CANN(OrtSessionOptions *options, const OrtCANNProviderOptions *cann_options)
Append CANN provider to session options.
OrtStatus * MemoryInfoGetMemType(const OrtMemoryInfo *ptr, OrtMemType *out)
Get the OrtMemType from OrtMemoryInfo.
OrtStatus * AllocatorGetInfo(const OrtAllocator *ort_allocator, const struct OrtMemoryInfo **out)
Calls OrtAllocator::Info function.
OrtStatus * CompareMemoryInfo(const OrtMemoryInfo *info1, const OrtMemoryInfo *info2, int *out)
Compare OrtMemoryInfo objects for equality.
OrtStatus * GetAvailableProviders(char ***out_ptr, int *provider_length)
Get the names of all available providers.
OrtStatus * SynchronizeBoundInputs(OrtIoBinding *binding_ptr)
Synchronize bound inputs. The call may be necessary for some providers, such as cuda,...
OrtStatus * GetOpaqueValue(const char *domain_name, const char *type_name, const OrtValue *in, void *data_container, size_t data_container_size)
Get internal data from an opaque (custom user defined type) OrtValue.
OrtStatus * AllocatorAlloc(OrtAllocator *ort_allocator, size_t size, void **out)
Calls OrtAllocator::Alloc function.
OrtStatus * RunAsync(OrtSession *session, const OrtRunOptions *run_options, const char *const *input_names, const OrtValue *const *input, size_t input_len, const char *const *output_names, size_t output_names_len, OrtValue **output, RunAsyncCallbackFn run_async_callback, void *user_data)
Run the model asynchronously in a thread owned by intra op thread pool.
OrtStatus * GetTensorRTProviderOptionsByName(const OrtTensorRTProviderOptionsV2 *tensorrt_options, const char *key, void **ptr)
OrtStatus * RegisterCustomOpsLibrary_V2(OrtSessionOptions *options, const char *library_name)
Register custom ops from a shared library.
OrtStatus * SessionGetOverridableInitializerName(const OrtSession *session, size_t index, OrtAllocator *allocator, char **value)
Get overridable initializer name.
OrtStatus * GetROCMProviderOptionsAsString(const OrtROCMProviderOptions *rocm_options, OrtAllocator *allocator, char **ptr)
OrtStatus * UnregisterAllocator(OrtEnv *env, const OrtMemoryInfo *mem_info)
Unregister a custom allocator.
OrtStatus * DisableMemPattern(OrtSessionOptions *options)
Disable the memory pattern optimization.
OrtStatus * UseBlockSparseIndices(OrtValue *ort_value, const int64_t *indices_shape, size_t indices_shape_len, int32_t *indices_data)
OrtStatus *(* CreateStatus)(OrtErrorCode code, const char *msg) __attribute__((nonnull))
Create an OrtStatus from a null terminated string.
Definition onnxruntime_c_api.h:747
OrtStatus * RunWithBinding(OrtSession *session, const OrtRunOptions *run_options, const OrtIoBinding *binding_ptr)
Run a model using Io Bindings for the inputs & outputs.
OrtStatus * CreateDnnlProviderOptions(OrtDnnlProviderOptions **out)
Create an OrtDnnlProviderOptions.
OrtStatus * GetMapKeyType(const OrtMapTypeInfo *map_type_info, enum ONNXTensorElementDataType *out)
Get key type from an OrtMapTypeInfo.
OrtStatus * RunOptionsGetRunLogSeverityLevel(const OrtRunOptions *options, int *log_severity_level)
Get per-run log severity level.
OrtStatus * CastTypeInfoToOptionalTypeInfo(const OrtTypeInfo *type_info, const OrtOptionalTypeInfo **out)
Get Optional Type information from an OrtTypeInfo.
OrtStatus * SessionGetModelMetadata(const OrtSession *session, OrtModelMetadata **out)
Get OrtModelMetadata from an OrtSession.
OrtStatus * GetCurrentGpuDeviceId(int *device_id)
Get current GPU device ID.
OrtStatus * SessionGetOutputTypeInfo(const OrtSession *session, size_t index, OrtTypeInfo **type_info)
Get output type information.
OrtStatus * KernelContext_GetScratchBuffer(const OrtKernelContext *context, const OrtMemoryInfo *mem_info, size_t count_or_bytes, void **out)
Get scratch buffer from the corresponding allocator under the sepcific OrtMemoryInfo object....
OrtStatus * EnableOrtCustomOps(OrtSessionOptions *options)
Enable custom operators.
OrtStatus * UpdateEnvWithCustomLogLevel(OrtEnv *ort_env, OrtLoggingLevel log_severity_level)
OrtStatus * CreateValue(const OrtValue *const *in, size_t num_values, enum ONNXType value_type, OrtValue **out)
Create a map or sequence OrtValue.
OrtStatus * SessionOptionsAppendExecutionProvider_VitisAI(OrtSessionOptions *options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Append VitisAI provider to session options.
OrtStatus * RegisterCustomOpsUsingFunction(OrtSessionOptions *options, const char *registration_func_name)
Register custom ops by calling a RegisterCustomOpsFn function.
OrtStatus * RunOptionsSetTerminate(OrtRunOptions *options)
Set terminate flag.
OrtStatus * SetSessionLogVerbosityLevel(OrtSessionOptions *options, int session_log_verbosity_level)
Set session log verbosity level.
OrtStatus * SetSessionLogSeverityLevel(OrtSessionOptions *options, int session_log_severity_level)
Set session log severity level.
OrtStatus * CreateThreadingOptions(OrtThreadingOptions **out)
Create an OrtThreadingOptions.
OrtStatus * UseCsrIndices(OrtValue *ort_value, int64_t *inner_data, size_t inner_num, int64_t *outer_data, size_t outer_num)
OrtStatus * SessionGetOverridableInitializerCount(const OrtSession *session, size_t *out)
Get overridable initializer count.
OrtStatus * CreateSessionWithPrepackedWeightsContainer(const OrtEnv *env, const char *model_path, const OrtSessionOptions *options, OrtPrepackedWeightsContainer *prepacked_weights_container, OrtSession **out)
Create session with prepacked weights container.
OrtStatus * KernelInfo_GetLogger(const OrtKernelInfo *info, const OrtLogger **logger)
Get the session logger from OrtKernelInfo.
OrtStatus * UpdateTensorRTProviderOptions(OrtTensorRTProviderOptionsV2 *tensorrt_options, const char *const *provider_options_keys, const char *const *provider_options_values, size_t num_keys)
Set options in a TensorRT Execution Provider.
OrtStatus * KernelInfoGetAttribute_tensor(const OrtKernelInfo *info, const char *name, OrtAllocator *allocator, OrtValue **out)
Get a OrtValue tensor stored as an attribute in the graph node.
OrtStatus * EnableMemPattern(OrtSessionOptions *options)
Enable the memory pattern optimization.
OrtStatus * SetOptimizedModelFilePath(OrtSessionOptions *options, const char *optimized_model_filepath)
Set filepath to save optimized model after graph level transformations.
OrtStatus * CreateAllocator(const OrtSession *session, const OrtMemoryInfo *mem_info, OrtAllocator **out)
Create an allocator for an OrtSession following an OrtMemoryInfo.
OrtStatus * SynchronizeBoundOutputs(OrtIoBinding *binding_ptr)
Synchronize bound outputs. The call may be necessary for some providers, such as cuda,...
OrtStatus * SessionGetOutputCount(const OrtSession *session, size_t *out)
Get output count for a session.
OrtStatus * CastTypeInfoToSequenceTypeInfo(const OrtTypeInfo *type_info, const OrtSequenceTypeInfo **out)
Cast OrtTypeInfo to an OrtSequenceTypeInfo.
OrtStatus * Run(OrtSession *session, const OrtRunOptions *run_options, const char *const *input_names, const OrtValue *const *inputs, size_t input_len, const char *const *output_names, size_t output_names_len, OrtValue **outputs)
Run the model in an OrtSession.
OrtStatus * GetValueType(const OrtValue *value, enum ONNXType *out)
Get ONNXType of an OrtValue.
OrtStatus * ShapeInferContext_GetInputTypeShape(const OrtShapeInferContext *context, size_t index, OrtTensorTypeAndShapeInfo **info)
OrtStatus * KernelInfo_GetNodeName(const OrtKernelInfo *info, char *out, size_t *size)
Get the graph node name from OrtKernelInfo.
OrtStatus * CreateTensorRTProviderOptions(OrtTensorRTProviderOptionsV2 **out)
Create an OrtTensorRTProviderOptionsV2.
OrtStatus * GetDimensions(const OrtTensorTypeAndShapeInfo *info, int64_t *dim_values, size_t dim_values_length)
Get dimensions in OrtTensorTypeAndShapeInfo.
OrtStatus * SessionGetProfilingStartTimeNs(const OrtSession *session, uint64_t *out)
Return the time that profiling was started.
OrtStatus * RunOptionsUnsetTerminate(OrtRunOptions *options)
Clears the terminate flag.
OrtStatus * CreateOpaqueValue(const char *domain_name, const char *type_name, const void *data_container, size_t data_container_size, OrtValue **out)
Create an opaque (custom user defined type) OrtValue.
OrtStatus * GetSparseTensorValuesTypeAndShape(const OrtValue *ort_value, OrtTensorTypeAndShapeInfo **out)
Returns data type and shape of sparse tensor values (nnz) iff OrtValue contains a SparseTensor.
void(* ReleaseTensorRTProviderOptions)(OrtTensorRTProviderOptionsV2 *input)
Release an OrtTensorRTProviderOptionsV2.
Definition onnxruntime_c_api.h:2983
OrtStatus * ReleaseAvailableProviders(char **ptr, int providers_length)
Release data from OrtApi::GetAvailableProviders. This API will never fail so you can rely on it in a ...
OrtStatus * RunOptionsSetRunTag(OrtRunOptions *options, const char *run_tag)
Set per-run tag.
OrtStatus * CreateIoBinding(OrtSession *session, OrtIoBinding **out)
Create an OrtIoBinding instance.
OrtStatus * SetGlobalIntraOpNumThreads(OrtThreadingOptions *tp_options, int intra_op_num_threads)
Set global intra-op thread count.
OrtStatus * CreateOpAttr(const char *name, const void *data, int len, OrtOpAttrType type, OrtOpAttr **op_attr)
: Create attribute of onnxruntime operator
OrtStatus * FillSparseTensorBlockSparse(OrtValue *ort_value, const OrtMemoryInfo *data_mem_info, const int64_t *values_shape, size_t values_shape_len, const void *values, const int64_t *indices_shape_data, size_t indices_shape_len, const int32_t *indices_data)
OrtStatus * ModelMetadataGetVersion(const OrtModelMetadata *model_metadata, int64_t *value)
Get version number from an OrtModelMetadata.
OrtStatus * GetStringTensorContent(const OrtValue *value, void *s, size_t s_len, size_t *offsets, size_t offsets_len)
Get all strings from a string tensor.
OrtStatus * GetBoundOutputNames(const OrtIoBinding *binding_ptr, OrtAllocator *allocator, char **buffer, size_t **lengths, size_t *count)
Get the names of an OrtIoBinding's outputs.
OrtStatus * CreateTensorTypeAndShapeInfo(OrtTensorTypeAndShapeInfo **out)
Create an OrtTensorTypeAndShapeInfo object.
OrtStatus * FillSparseTensorCoo(OrtValue *ort_value, const OrtMemoryInfo *data_mem_info, const int64_t *values_shape, size_t values_shape_len, const void *values, const int64_t *indices_data, size_t indices_num)
OrtStatus * SessionEndProfiling(OrtSession *session, OrtAllocator *allocator, char **out)
End profiling and return filename of the profile data.
OrtStatus * ModelMetadataGetProducerName(const OrtModelMetadata *model_metadata, OrtAllocator *allocator, char **value)
Get producer name from an OrtModelMetadata.
OrtStatus * SessionOptionsSetCustomCreateThreadFn(OrtSessionOptions *options, OrtCustomCreateThreadFn ort_custom_create_thread_fn)
Set custom thread creation function.
OrtStatus * SetGlobalCustomCreateThreadFn(OrtThreadingOptions *tp_options, OrtCustomCreateThreadFn ort_custom_create_thread_fn)
Set custom thread creation function for global thread pools.
OrtStatus * SessionOptionsAppendExecutionProvider_CUDA_V2(OrtSessionOptions *options, const OrtCUDAProviderOptionsV2 *cuda_options)
Append CUDA execution provider to the session options.
OrtStatus * CreateTensorAsOrtValue(OrtAllocator *allocator, const int64_t *shape, size_t shape_len, ONNXTensorElementDataType type, OrtValue **out)
Create a tensor.
void(* ReleaseCUDAProviderOptions)(OrtCUDAProviderOptionsV2 *input)
Release an OrtCUDAProviderOptionsV2.
Definition onnxruntime_c_api.h:3486
OrtStatus * KernelInfoGetAttribute_int64(const OrtKernelInfo *info, const char *name, int64_t *out)
Fetch a 64-bit int stored as an attribute in the graph node.
OrtErrorCode(* GetErrorCode)(const OrtStatus *status) __attribute__((nonnull))
Get OrtErrorCode from OrtStatus.
Definition onnxruntime_c_api.h:754
OrtStatus * SetTensorElementType(OrtTensorTypeAndShapeInfo *info, enum ONNXTensorElementDataType type)
Set element type in OrtTensorTypeAndShapeInfo.
OrtStatus * BindOutput(OrtIoBinding *binding_ptr, const char *name, const OrtValue *val_ptr)
Bind an OrtValue to an OrtIoBinding output.
OrtStatus * GetSparseTensorValues(const OrtValue *ort_value, const void **out)
Returns numeric data for sparse tensor values (nnz). For string values use GetStringTensor*().
CUDA Provider Options.
Definition onnxruntime_c_api.h:410
int tunable_op_max_tuning_duration_ms
Max tuning duration time limit for each instance of TunableOp. Defaults to 0 to disable the limit.
Definition onnxruntime_c_api.h:489
int has_user_compute_stream
Flag indicating if there is a user provided compute stream Defaults to 0.
Definition onnxruntime_c_api.h:463
int do_copy_in_default_stream
Flag indicating if copying needs to take place on the same stream as the compute stream in the CUDA E...
Definition onnxruntime_c_api.h:458
void * user_compute_stream
User provided compute stream. If provided, please set has_user_compute_stream to 1.
Definition onnxruntime_c_api.h:468
int tunable_op_enable
Enable TunableOp for using. Set it to 1/0 to enable/disable TunableOp. Otherwise, it is disabled by d...
Definition onnxruntime_c_api.h:478
size_t gpu_mem_limit
CUDA memory limit (To use all possible memory pass in maximum size_t) Defaults to SIZE_MAX.
Definition onnxruntime_c_api.h:441
int arena_extend_strategy
Strategy used to grow the memory arena 0 = kNextPowerOfTwo 1 = kSameAsRequested Defaults to 0.
Definition onnxruntime_c_api.h:449
OrtCUDAProviderOptions()
Definition onnxruntime_c_api.h:412
OrtArenaCfg * default_memory_arena_cfg
CUDA memory arena configuration parameters.
Definition onnxruntime_c_api.h:472
int tunable_op_tuning_enable
Enable TunableOp for tuning. Set it to 1/0 to enable/disable TunableOp tuning. Otherwise,...
Definition onnxruntime_c_api.h:484
OrtCudnnConvAlgoSearch cudnn_conv_algo_search
CUDA Convolution algorithm search configuration. See enum OrtCudnnConvAlgoSearch for more details....
Definition onnxruntime_c_api.h:435
int device_id
CUDA device Id Defaults to 0.
Definition onnxruntime_c_api.h:429
Definition onnxruntime_c_api.h:700
char __place_holder
Definition onnxruntime_c_api.h:701
Definition onnxruntime_c_api.h:4700
int(* GetVariadicInputHomogeneity)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4746
OrtCustomOpInputOutputCharacteristic(* GetOutputCharacteristic)(const struct OrtCustomOp *op, size_t index)
Definition onnxruntime_c_api.h:4730
size_t(* GetInputTypeCount)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4718
int(* GetVariadicOutputMinArity)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4750
size_t(* GetAliasMap)(int **input_index, int **output_index)
Definition onnxruntime_c_api.h:4783
int(* GetStartVersion)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4768
void(* ReleaseMayInplace)(int *input_index, int *output_index)
Definition onnxruntime_c_api.h:4780
const char *(* GetName)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4711
size_t(* GetOutputTypeCount)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4720
void(* KernelDestroy)(void *op_kernel)
Definition onnxruntime_c_api.h:4726
int(* GetVariadicOutputHomogeneity)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4755
OrtMemType(* GetInputMemoryType)(const struct OrtCustomOp *op, size_t index)
Definition onnxruntime_c_api.h:4737
void *(* CreateKernel)(const struct OrtCustomOp *op, const OrtApi *api, const OrtKernelInfo *info)
Definition onnxruntime_c_api.h:4707
uint32_t version
Definition onnxruntime_c_api.h:4701
ONNXTensorElementDataType(* GetInputType)(const struct OrtCustomOp *op, size_t index)
Definition onnxruntime_c_api.h:4717
void(* ReleaseAliasMap)(int *input_index, int *output_index)
Definition onnxruntime_c_api.h:4784
OrtCustomOpInputOutputCharacteristic(* GetInputCharacteristic)(const struct OrtCustomOp *op, size_t index)
Definition onnxruntime_c_api.h:4729
const char *(* GetExecutionProviderType)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4714
ONNXTensorElementDataType(* GetOutputType)(const struct OrtCustomOp *op, size_t index)
Definition onnxruntime_c_api.h:4719
int(* GetVariadicInputMinArity)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4741
OrtStatusPtr(* InferOutputShapeFn)(const struct OrtCustomOp *op, OrtShapeInferContext *)
Definition onnxruntime_c_api.h:4765
int(* GetEndVersion)(const struct OrtCustomOp *op)
Definition onnxruntime_c_api.h:4769
OrtStatusPtr(* CreateKernelV2)(const struct OrtCustomOp *op, const OrtApi *api, const OrtKernelInfo *info, void **kernel)
Definition onnxruntime_c_api.h:4758
size_t(* GetMayInplace)(int **input_index, int **output_index)
Definition onnxruntime_c_api.h:4776
OrtStatusPtr(* KernelComputeV2)(void *op_kernel, OrtKernelContext *context)
Definition onnxruntime_c_api.h:4763
void(* KernelCompute)(void *op_kernel, OrtKernelContext *context)
Definition onnxruntime_c_api.h:4725
MIGraphX Provider Options.
Definition onnxruntime_c_api.h:614
bool migraphx_exhaustive_tune
Definition onnxruntime_c_api.h:624
int migraphx_save_compiled_model
Definition onnxruntime_c_api.h:620
int migraphx_int8_enable
Definition onnxruntime_c_api.h:617
int migraphx_load_compiled_model
Definition onnxruntime_c_api.h:622
int migraphx_fp16_enable
Definition onnxruntime_c_api.h:616
int device_id
Definition onnxruntime_c_api.h:615
int migraphx_use_native_calibration_table
Definition onnxruntime_c_api.h:618
const char * migraphx_load_model_path
Definition onnxruntime_c_api.h:623
const char * migraphx_save_model_path
Definition onnxruntime_c_api.h:621
const char * migraphx_int8_calibration_table_name
Definition onnxruntime_c_api.h:619
OpenVINO Provider Options.
Definition onnxruntime_c_api.h:631
unsigned char enable_opencl_throttling
0 = disabled, nonzero = enabled
Definition onnxruntime_c_api.h:652
size_t num_of_threads
0 = Use default number of threads
Definition onnxruntime_c_api.h:649
void * context
Definition onnxruntime_c_api.h:651
const char * cache_dir
Definition onnxruntime_c_api.h:650
const char * device_type
Device type string.
Definition onnxruntime_c_api.h:646
const char * device_id
Definition onnxruntime_c_api.h:648
unsigned char enable_npu_fast_compile
0 = disabled, nonzero = enabled
Definition onnxruntime_c_api.h:647
OrtOpenVINOProviderOptions()
Definition onnxruntime_c_api.h:633
unsigned char enable_dynamic_shapes
0 = disabled, nonzero = enabled
Definition onnxruntime_c_api.h:653
ROCM Provider Options.
Definition onnxruntime_c_api.h:497
int device_id
ROCM device Id Defaults to 0.
Definition onnxruntime_c_api.h:517
int tunable_op_max_tuning_duration_ms
Max tuning duration time limit for each instance of TunableOp. Defaults to 0 to disable the limit.
Definition onnxruntime_c_api.h:578
int do_copy_in_default_stream
Flag indicating if copying needs to take place on the same stream as the compute stream in the ROCM E...
Definition onnxruntime_c_api.h:545
OrtArenaCfg * default_memory_arena_cfg
ROCM memory arena configuration parameters.
Definition onnxruntime_c_api.h:559
size_t gpu_mem_limit
ROCM memory limit (To use all possible memory pass in maximum size_t) Defaults to SIZE_MAX.
Definition onnxruntime_c_api.h:528
OrtROCMProviderOptions()
Definition onnxruntime_c_api.h:499
int enable_hip_graph
Definition onnxruntime_c_api.h:561
int tunable_op_enable
Enable TunableOp for using. Set it to 1/0 to enable/disable TunableOp. Otherwise, it is disabled by d...
Definition onnxruntime_c_api.h:567
void * user_compute_stream
User provided compute stream. If provided, please set has_user_compute_stream to 1.
Definition onnxruntime_c_api.h:555
int arena_extend_strategy
Strategy used to grow the memory arena 0 = kNextPowerOfTwo 1 = kSameAsRequested Defaults to 0.
Definition onnxruntime_c_api.h:536
int tunable_op_tuning_enable
Enable TunableOp for tuning. Set it to 1/0 to enable/disable TunableOp tuning. Otherwise,...
Definition onnxruntime_c_api.h:573
int has_user_compute_stream
Flag indicating if there is a user provided compute stream Defaults to 0.
Definition onnxruntime_c_api.h:550
int miopen_conv_exhaustive_search
ROCM MIOpen Convolution algorithm exaustive search option. Defaults to 0 (false).
Definition onnxruntime_c_api.h:522
TensorRT Provider Options.
Definition onnxruntime_c_api.h:586
int trt_engine_cache_enable
Definition onnxruntime_c_api.h:600
void * user_compute_stream
Definition onnxruntime_c_api.h:589
int device_id
CUDA device id (0 = default device)
Definition onnxruntime_c_api.h:587
const char * trt_engine_cache_path
Definition onnxruntime_c_api.h:601
int trt_engine_decryption_enable
Definition onnxruntime_c_api.h:602
int trt_max_partition_iterations
Definition onnxruntime_c_api.h:590
size_t trt_max_workspace_size
Definition onnxruntime_c_api.h:592
int trt_dla_enable
Definition onnxruntime_c_api.h:597
const char * trt_int8_calibration_table_name
Definition onnxruntime_c_api.h:595
int has_user_compute_stream
Definition onnxruntime_c_api.h:588
int trt_dla_core
Definition onnxruntime_c_api.h:598
int trt_int8_use_native_calibration_table
Definition onnxruntime_c_api.h:596
int trt_min_subgraph_size
Definition onnxruntime_c_api.h:591
int trt_force_sequential_engine_build
Definition onnxruntime_c_api.h:604
int trt_dump_subgraphs
Definition onnxruntime_c_api.h:599
int trt_fp16_enable
Definition onnxruntime_c_api.h:593
const char * trt_engine_decryption_lib_path
Definition onnxruntime_c_api.h:603
int trt_int8_enable
Definition onnxruntime_c_api.h:594
The Training C API that holds onnxruntime training function pointers.
Definition onnxruntime_training_c_api.h:122