TensorRT 10.13.0
NvOnnxParser.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 1993-2024, NVIDIA CORPORATION. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"),
6 * to deal in the Software without restriction, including without limitation
7 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 * and/or sell copies of the Software, and to permit persons to whom the
9 * Software is furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
20 * DEALINGS IN THE SOFTWARE.
21 */
22
23#ifndef NV_ONNX_PARSER_H
24#define NV_ONNX_PARSER_H
25
26#include "NvInfer.h"
27#include <stddef.h>
28#include <string>
29#include <vector>
30
36
37#define NV_ONNX_PARSER_MAJOR 0
38#define NV_ONNX_PARSER_MINOR 1
39#define NV_ONNX_PARSER_PATCH 0
40
41static constexpr int32_t NV_ONNX_PARSER_VERSION
43
50typedef std::pair<std::vector<size_t>, bool> SubGraph_t;
51
58typedef std::vector<SubGraph_t> SubGraphCollection_t;
59
65namespace nvonnxparser
66{
67
68template <typename T>
69constexpr inline int32_t EnumMax() noexcept;
70
76enum class ErrorCode : int
77{
78 kSUCCESS = 0,
79 kINTERNAL_ERROR = 1,
84 kINVALID_NODE = 6,
92 kREFIT_FAILED = 14
93};
94
100template <>
101constexpr inline int32_t EnumMax<ErrorCode>() noexcept
102{
103 return 14;
104}
105
112using OnnxParserFlags = uint32_t;
113
114enum class OnnxParserFlag : int32_t
115{
125};
126
132template <>
133constexpr inline int32_t EnumMax<OnnxParserFlag>() noexcept
134{
135 return 2;
136}
137
144{
145public:
149 virtual ErrorCode code() const = 0;
153 virtual char const* desc() const = 0;
157 virtual char const* file() const = 0;
161 virtual int line() const = 0;
165 virtual char const* func() const = 0;
169 virtual int node() const = 0;
173 virtual char const* nodeName() const = 0;
177 virtual char const* nodeOperator() const = 0;
183 virtual char const* const* localFunctionStack() const = 0;
187 // a stack size of 0.
189 virtual int32_t localFunctionStackSize() const = 0;
190
191protected:
192 virtual ~IParserError() {}
193};
194
206{
207public:
222 virtual bool parse(
223 void const* serialized_onnx_model, size_t serialized_onnx_model_size, const char* model_path = nullptr) noexcept
224 = 0;
225
236 virtual bool parseFromFile(const char* onnxModelFile, int verbosity) noexcept = 0;
237
252 TRT_DEPRECATED virtual bool supportsModel(void const* serialized_onnx_model, size_t serialized_onnx_model_size,
253 SubGraphCollection_t& sub_graph_collection, const char* model_path = nullptr) noexcept = 0;
254
268 void const* serialized_onnx_model, size_t serialized_onnx_model_size) noexcept = 0;
269
279 virtual bool supportsOperator(const char* op_name) const noexcept = 0;
280
287 virtual int getNbErrors() const noexcept = 0;
288
294 virtual IParserError const* getError(int index) const noexcept = 0;
295
301 virtual void clearErrors() noexcept = 0;
302
303 virtual ~IParser() noexcept = default;
304
321 virtual char const* const* getUsedVCPluginLibraries(int64_t& nbPluginLibs) const noexcept = 0;
322
334 virtual void setFlags(OnnxParserFlags onnxParserFlags) noexcept = 0;
335
343 virtual OnnxParserFlags getFlags() const noexcept = 0;
344
352 virtual void clearFlag(OnnxParserFlag onnxParserFlag) noexcept = 0;
353
361 virtual void setFlag(OnnxParserFlag onnxParserFlag) noexcept = 0;
362
370 virtual bool getFlag(OnnxParserFlag onnxParserFlag) const noexcept = 0;
371
384 virtual nvinfer1::ITensor const* getLayerOutputTensor(char const* name, int64_t i) noexcept = 0;
385
398 virtual bool supportsModelV2(
399 void const* serializedOnnxModel, size_t serializedOnnxModelSize, char const* modelPath = nullptr) noexcept = 0;
400
408 virtual int64_t getNbSubgraphs() noexcept = 0;
409
418 virtual bool isSubgraphSupported(int64_t const index) noexcept = 0;
419
430 virtual int64_t* getSubgraphNodes(int64_t const index, int64_t& subgraphLength) noexcept = 0;
431
448 virtual bool loadModelProto(
449 void const* serializedOnnxModel, size_t serializedOnnxModelSize, char const* modelPath = nullptr) noexcept = 0;
450
473 virtual bool loadInitializer(char const* name, void const* data, size_t size) noexcept = 0;
474
480 virtual bool parseModelProto() noexcept = 0;
481};
482
491{
492public:
505 virtual bool refitFromBytes(
506 void const* serializedOnnxModel, size_t serializedOnnxModelSize, char const* modelPath = nullptr) noexcept
507 = 0;
508
519 virtual bool refitFromFile(char const* onnxModelFile) noexcept = 0;
520
526 virtual int32_t getNbErrors() const noexcept = 0;
527
533 virtual IParserError const* getError(int32_t index) const noexcept = 0;
534
540 virtual void clearErrors() = 0;
541
542 virtual ~IParserRefitter() noexcept = default;
543
559 virtual bool loadModelProto(
560 void const* serializedOnnxModel, size_t serializedOnnxModelSize, char const* modelPath = nullptr) noexcept = 0;
561
583 virtual bool loadInitializer(char const* name, void const* data, size_t size) noexcept = 0;
584
590 virtual bool refitModelProto() noexcept = 0;
591};
592
593} // namespace nvonnxparser
594
595extern "C" TENSORRTAPI void* createNvOnnxParser_INTERNAL(void* network, void* logger, int version) noexcept;
597 void* refitter, void* logger, int32_t version) noexcept;
598extern "C" TENSORRTAPI int getNvOnnxParserVersion() noexcept;
599
600namespace nvonnxparser
601{
602
603namespace
604{
605
622{
623 return static_cast<IParser*>(createNvOnnxParser_INTERNAL(&network, &logger, NV_ONNX_PARSER_VERSION));
624}
625
636{
637 return static_cast<IParserRefitter*>(
638 createNvOnnxParserRefitter_INTERNAL(&refitter, &logger, NV_ONNX_PARSER_VERSION));
639}
640
641} // namespace
642
643} // namespace nvonnxparser
644
645#endif // NV_ONNX_PARSER_H
#define TENSORRTAPI
Definition: NvInferRuntimeBase.h:69
#define TRT_DEPRECATED
Definition: NvInferRuntimeBase.h:42
TENSORRTAPI void * createNvOnnxParserRefitter_INTERNAL(void *refitter, void *logger, int32_t version) noexcept
std::vector< SubGraph_t > SubGraphCollection_t
The data structure containing all SubGraph_t partitioned out of an ONNX graph.
Definition: NvOnnxParser.h:58
TENSORRTAPI void * createNvOnnxParser_INTERNAL(void *network, void *logger, int version) noexcept
TENSORRTAPI int getNvOnnxParserVersion() noexcept
#define NV_ONNX_PARSER_PATCH
Definition: NvOnnxParser.h:39
#define NV_ONNX_PARSER_MINOR
Definition: NvOnnxParser.h:38
std::pair< std::vector< size_t >, bool > SubGraph_t
The data structure containing the parsing capability of a set of nodes in an ONNX graph.
Definition: NvOnnxParser.h:50
#define NV_ONNX_PARSER_MAJOR
Definition: NvOnnxParser.h:37
Application-implemented logging interface for the builder, refitter and runtime.
Definition: NvInferRuntime.h:1588
A network definition for input to the builder.
Definition: NvInfer.h:6682
Updates weights in an engine.
Definition: NvInferRuntime.h:2193
an object containing information about an error
Definition: NvOnnxParser.h:144
virtual char const * nodeOperator() const =0
name of the node operation in which the error occurred.
virtual char const * func() const =0
source function in which the error occurred.
virtual int line() const =0
source line at which the error occurred.
virtual char const * desc() const =0
description of the error.
virtual ~IParserError()
Definition: NvOnnxParser.h:192
virtual ErrorCode code() const =0
the error code.
virtual char const * nodeName() const =0
name of the node in which the error occurred.
virtual char const *const * localFunctionStack() const =0
A list of the local function names, from the top level down, constituting the current stack trace in ...
virtual int node() const =0
index of the ONNX model node in which the error occurred.
virtual char const * file() const =0
source file in which the error occurred.
virtual int32_t localFunctionStackSize() const =0
The size of the stack of local functions at the point where the error occurred. A top-level node that...
an object for parsing ONNX models into a TensorRT network definition
Definition: NvOnnxParser.h:206
virtual IParserError const * getError(int index) const noexcept=0
Get an error that occurred during prior calls to parse.
virtual char const *const * getUsedVCPluginLibraries(int64_t &nbPluginLibs) const noexcept=0
Query the plugin libraries needed to implement operations used by the parser in a version-compatible ...
virtual void setFlag(OnnxParserFlag onnxParserFlag) noexcept=0
Set a single parser flag.
virtual bool loadInitializer(char const *name, void const *data, size_t size) noexcept=0
Prompt the ONNX parser to load an initializer with user-provided binary data. The lifetime of the dat...
virtual bool supportsOperator(const char *op_name) const noexcept=0
Returns whether the specified operator may be supported by the parser.
virtual bool parseModelProto() noexcept=0
Begin the parsing and conversion process of the loaded ONNX model into a TensorRT INetworkDefinition.
virtual bool supportsModelV2(void const *serializedOnnxModel, size_t serializedOnnxModelSize, char const *modelPath=nullptr) noexcept=0
Check whether TensorRT supports a particular ONNX model. If the function returns True,...
virtual void clearErrors() noexcept=0
Clear errors from prior calls to parse.
virtual TRT_DEPRECATED bool supportsModel(void const *serialized_onnx_model, size_t serialized_onnx_model_size, SubGraphCollection_t &sub_graph_collection, const char *model_path=nullptr) noexcept=0
Check whether TensorRT supports a particular ONNX model. If the function returns True,...
virtual TRT_DEPRECATED bool parseWithWeightDescriptors(void const *serialized_onnx_model, size_t serialized_onnx_model_size) noexcept=0
Parse a serialized ONNX model into the TensorRT network with consideration of user provided weights.
virtual bool getFlag(OnnxParserFlag onnxParserFlag) const noexcept=0
Returns true if the parser flag is set.
virtual void clearFlag(OnnxParserFlag onnxParserFlag) noexcept=0
clear a parser flag.
virtual OnnxParserFlags getFlags() const noexcept=0
Get the parser flags. Defaults to 0.
virtual bool parseFromFile(const char *onnxModelFile, int verbosity) noexcept=0
Parse an onnx model file, which can be a binary protobuf or a text onnx model calls parse method insi...
virtual bool isSubgraphSupported(int64_t const index) noexcept=0
Returns whether the subgraph is supported. Calling this function before calling supportsModelV2 resul...
virtual int64_t getNbSubgraphs() noexcept=0
Get the number of subgraphs. Calling this function before calling supportsModelV2 results in undefine...
virtual bool loadModelProto(void const *serializedOnnxModel, size_t serializedOnnxModelSize, char const *modelPath=nullptr) noexcept=0
Load a serialized ONNX model into the parser. Unlike the parse(), parseFromFile(),...
virtual int64_t * getSubgraphNodes(int64_t const index, int64_t &subgraphLength) noexcept=0
Get the nodes of the specified subgraph. Calling this function before calling supportsModelV2 results...
virtual void setFlags(OnnxParserFlags onnxParserFlags) noexcept=0
Set the parser flags.
virtual bool parse(void const *serialized_onnx_model, size_t serialized_onnx_model_size, const char *model_path=nullptr) noexcept=0
Parse a serialized ONNX model into the TensorRT network. This method has very limited diagnostics....
virtual int getNbErrors() const noexcept=0
Get the number of errors that occurred during prior calls to parse.
virtual nvinfer1::ITensor const * getLayerOutputTensor(char const *name, int64_t i) noexcept=0
Return the i-th output ITensor object for the ONNX layer "name".
An interface designed to refit weights from an ONNX model.
Definition: NvOnnxParser.h:491
virtual bool refitFromBytes(void const *serializedOnnxModel, size_t serializedOnnxModelSize, char const *modelPath=nullptr) noexcept=0
Load a serialized ONNX model from memory and perform weight refit.
The TensorRT API version 1 namespace.
IParser * createParser(nvinfer1::INetworkDefinition &network, nvinfer1::ILogger &logger) noexcept
Create a new parser object.
Definition: NvOnnxParser.h:621
IParserRefitter * createParserRefitter(nvinfer1::IRefitter &refitter, nvinfer1::ILogger &logger) noexcept
Create a new ONNX refitter object.
Definition: NvOnnxParser.h:635
The TensorRT ONNX parser API namespace.
Definition: NvOnnxConfig.h:24
uint32_t OnnxParserFlags
Represents one or more OnnxParserFlag values using binary OR operations, e.g., 1U << OnnxParserFlag::...
Definition: NvOnnxParser.h:112
constexpr int32_t EnumMax() noexcept
ErrorCode
The type of error that the parser or refitter may return.
Definition: NvOnnxParser.h:77
OnnxParserFlag
Definition: NvOnnxParser.h:115
constexpr int32_t EnumMax< ErrorCode >() noexcept
Definition: NvOnnxParser.h:101
constexpr int32_t EnumMax< OnnxParserFlag >() noexcept
Definition: NvOnnxParser.h:133

  Copyright © 2024 NVIDIA Corporation
  Privacy Policy | Manage My Privacy | Do Not Sell or Share My Data | Terms of Service | Accessibility | Corporate Policies | Product Security | Contact