26 #ifndef CASADI_ORT_INTERFACE_HPP
27 #define CASADI_ORT_INTERFACE_HPP
29 #include "casadi/core/onnx_function_impl.hpp"
30 #include <casadi/interfaces/ort/casadi_onnx_ort_export.h>
32 #include <onnxruntime_c_api.h>
33 #include "ort_runtime.h"
47 casadi_onnxruntime_data
d{};
65 const std::vector<std::string>& inputs,
66 const std::vector<std::string>& outputs);
78 const std::vector<std::string>& inputs,
79 const std::vector<std::string>& outputs,
85 std::string
class_name()
const override {
return "OnnxRuntimeInterface"; }
94 void init(
const Dict& opts)
override;
100 int init_mem(
void* mem)
const override;
103 void free_mem(
void* mem)
const override;
106 int eval(
const double** arg,
double** res,
107 casadi_int* iw,
double* w,
void* mem)
const override;
134 void ort_check(OrtStatus* status,
const std::string& what)
const;
139 const OrtApi* ort_api_;
140 std::string provider_;
143 std::vector<const char*> in_names_c_, out_names_c_;
144 std::vector<casadi_int> in_elem_, out_elem_, in_ndim_, out_ndim_;
145 std::vector<casadi_int> in_dims_, out_dims_, in_numel_, out_numel_;
146 casadi_onnxruntime_prob prob_;
Helper class for C code generation.
Helper class for Serialization.
Internal class for GraphBuilder.
Black-box ONNX function base; backends (e.g. onnxruntime) derive from this.
static const std::string meta_doc
Documentation.
int init_mem(void *mem) const override
Initialize memory block: create the ONNX Runtime session.
~OnnxRuntimeInterface() override
static OnnxFunction * creator(const std::string &name, const GraphBuilderInternal *gb, const std::vector< std::string > &inputs, const std::vector< std::string > &outputs, const Dict &opts)
Plugin factory.
void free_mem(void *mem) const override
Free memory block: tear down the session and reusable scaffolding.
int eval(const double **arg, double **res, casadi_int *iw, double *w, void *mem) const override
Evaluate numerically.
const char * plugin_name() const override
std::string class_name() const override
Readable name of the internal class.
void init(const Dict &opts) override
Initialize.
void codegen_declarations(CodeGenerator &g) const override
Generate code for the declarations.
static const Options options_
Options.
const Options & get_options() const override
Options.
void codegen_body(CodeGenerator &g) const override
Generate code for the body.
void serialize_body(SerializingStream &s) const override
Serialize an object without type information.
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize into an OnnxRuntimeInterface.
OnnxRuntimeInterface(const std::string &name, const GraphBuilderInternal *gb, const std::vector< std::string > &inputs, const std::vector< std::string > &outputs)
void * alloc_mem() const override
Create memory block.
bool has_codegen() const override
Is codegen supported?
Base class for FunctionInternal and LinsolInternal.
Helper class for Serialization.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.
Per-checkout ONNX Runtime state (session + reusable eval scaffolding)
casadi_onnxruntime_data d
Options metadata for a class.