TensorRT 11.3.0
NvInferRuntimeBase.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: Copyright (c) 1993-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3 * SPDX-License-Identifier: Apache-2.0
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef NV_INFER_RUNTIME_BASE_H
19#define NV_INFER_RUNTIME_BASE_H
20
21#include "NvInferVersion.h"
22#include <cstddef>
23#include <cstdint>
24#include <cuda_runtime_api.h>
25
26// Items that are marked as deprecated will be removed in a future release.
27#if __cplusplus >= 201402L
28#define TRT_DEPRECATED [[deprecated]]
29#define TRT_DEPRECATED_BECAUSE(REASON) [[deprecated(REASON)]]
30#define TRT_DEPRECATED_ENUM TRT_DEPRECATED
31#ifdef _MSC_VER
32#define TRT_DEPRECATED_API __declspec(dllexport)
33#else
34#define TRT_DEPRECATED_API [[deprecated]] __attribute__((visibility("default")))
35#endif
36#else
37#ifdef _MSC_VER
38#define TRT_DEPRECATED
39#define TRT_DEPRECATED_ENUM
40#define TRT_DEPRECATED_API __declspec(dllexport)
41#else
42#define TRT_DEPRECATED __attribute__((deprecated))
43#define TRT_DEPRECATED_ENUM
44#define TRT_DEPRECATED_API __attribute__((deprecated, visibility("default")))
45#endif
46#define TRT_DEPRECATED_BECAUSE(REASON) TRT_DEPRECATED
47#endif
48
50#if __cplusplus >= 201907L
51#define TRT_NODISCARD [[nodiscard]]
52#define TRT_NODISCARD_BECAUSE(REASON) [[nodiscard(REASON)]]
53#elif __cplusplus >= 201603L
54#define TRT_NODISCARD [[nodiscard]]
55#define TRT_NODISCARD_BECAUSE(REASON) [[nodiscard]]
56#else
57#define TRT_NODISCARD
58#define TRT_NODISCARD_BECAUSE(REASON)
59#endif
60
61// Defines which symbols are exported.
62#ifdef TENSORRT_BUILD_LIB
63#ifdef _MSC_VER
64//On Windows, exports are controlled by .def files; not by dllexport.
65#define TENSORRTAPI
66#else
67#define TENSORRTAPI __attribute__((visibility("default")))
68#endif
69#else
70#define TENSORRTAPI
71#endif
72#define TRTNOEXCEPT
82#if !defined(NV_INFER_INTERNAL_INCLUDE)
83static_assert(false, "Do not directly include this file. Include NvInferRuntime.h or NvInferPluginUtils.h");
84#endif
85
87
88extern "C"
89{
91 struct cublasContext;
93 struct cudnnContext;
94}
95
98#define NV_TENSORRT_VERSION_INT(major, minor, patch) ((major) *10000L + (minor) *100L + (patch) *1L)
99
102#define NV_TENSORRT_VERSION NV_TENSORRT_VERSION_INT(NV_TENSORRT_MAJOR, NV_TENSORRT_MINOR, NV_TENSORRT_PATCH)
103
109namespace nvinfer1
110{
112using char_t = char;
113
117
119namespace v_1_0
120{
121class IErrorRecorder;
122class ILogger;
123} // namespace v_1_0
126
127namespace impl
128{
130template <typename T>
132{
133};
134} // namespace impl
135
138template <typename T>
139constexpr int32_t EnumMax() noexcept
140{
142}
143
150enum class DataType : int32_t
151{
153 kFLOAT = 0,
154
156 kHALF = 1,
157
159 kINT8 = 2,
160
162 kINT32 = 3,
163
165 kBOOL = 4,
166
179 kUINT8 = 5,
180
183 kFP8 = 6,
184
186 kBF16 = 7,
187
189 kINT64 = 8,
190
192 kINT4 = 9,
193
196 kFP4 = 10,
197
199 kE8M0 = 11,
200};
201
202namespace impl
203{
205template <>
207{
209 static constexpr int32_t kVALUE = 12;
210};
211} // namespace impl
212
224{
225public:
227 static constexpr int32_t MAX_DIMS{8};
228
230 int32_t nbDims;
231
233 int64_t d[MAX_DIMS];
234};
235
239using Dims = Dims64;
240
241using InterfaceKind = char const*;
242
249{
250public:
252 int32_t major;
253 int32_t minor;
254};
255
261enum class APILanguage : int32_t
262{
263 kCPP = 0,
264 kPYTHON = 1
265};
266
267namespace impl
268{
270template <>
272{
274 static constexpr int32_t kVALUE = 2;
275};
276} // namespace impl
277
284{
285public:
291 virtual APILanguage getAPILanguage() const noexcept
292 {
293 return APILanguage::kCPP;
294 }
295
299 virtual InterfaceInfo getInterfaceInfo() const noexcept = 0;
300
301 virtual ~IVersionedInterface() noexcept = default;
302
303protected:
307 IVersionedInterface& operator=(IVersionedInterface const&) & = default;
308 IVersionedInterface& operator=(IVersionedInterface&&) & = default;
309};
310
316enum class ErrorCode : int32_t
317{
321 kSUCCESS = 0,
322
327
332 kINTERNAL_ERROR = 2,
333
339
347 kINVALID_CONFIG = 4,
348
355
361
369
378
391 kINVALID_STATE = 9,
392
404
405};
406
407namespace impl
408{
410template <>
412{
414 static constexpr int32_t kVALUE = 11;
415};
416} // namespace impl
417
418namespace v_1_0
419{
421{
422public:
426 InterfaceInfo getInterfaceInfo() const noexcept override
427 {
428 return InterfaceInfo{"IErrorRecorder", 1, 0};
429 }
430
434 using ErrorDesc = char const*;
435
441 static constexpr size_t kMAX_DESC_LENGTH{127U};
442
446 using RefCount = int32_t;
447
448 IErrorRecorder() = default;
449 ~IErrorRecorder() noexcept override = default;
450
451 // Public API used to retrieve information from the error recorder.
452
476 virtual int32_t getNbErrors() const noexcept = 0;
477
496 virtual ErrorCode getErrorCode(int32_t errorIdx) const noexcept = 0;
497
519 virtual ErrorDesc getErrorDesc(int32_t errorIdx) const noexcept = 0;
520
535 virtual bool hasOverflowed() const noexcept = 0;
536
551 virtual void clear() noexcept = 0;
552
553 // API used by TensorRT to report Error information to the application.
554
581 virtual bool reportError(ErrorCode val, ErrorDesc desc) noexcept = 0;
582
599 virtual RefCount incRefCount() noexcept = 0;
600
617 virtual RefCount decRefCount() noexcept = 0;
618
619protected:
620 // @cond SuppressDoxyWarnings
621 IErrorRecorder(IErrorRecorder const&) = default;
622 IErrorRecorder(IErrorRecorder&&) = default;
623 IErrorRecorder& operator=(IErrorRecorder const&) & = default;
624 IErrorRecorder& operator=(IErrorRecorder&&) & = default;
625 // @endcond
626}; // class IErrorRecorder
627} // namespace v_1_0
628
656using IErrorRecorder = v_1_0::IErrorRecorder;
657
663enum class TensorIOMode : int32_t
664{
666 kNONE = 0,
667
669 kINPUT = 1,
670
672 kOUTPUT = 2
673};
674
675namespace impl
676{
678template <>
680{
681 // One greater than the maximum value of TensorIOMode enum
682 static constexpr int32_t kVALUE = 3;
683};
684} // namespace impl
685} // namespace nvinfer1
686
692extern "C" TENSORRTAPI int32_t getInferLibVersion() noexcept;
693
694#endif // NV_INFER_RUNTIME_BASE_H
#define TENSORRTAPI
Definition: NvInferRuntimeBase.h:70
TENSORRTAPI int32_t getInferLibVersion() noexcept
Return the library version number.
Definition: NvInferRuntimeBase.h:224
static constexpr int32_t MAX_DIMS
The maximum rank (number of dimensions) supported for a tensor.
Definition: NvInferRuntimeBase.h:227
int64_t d[MAX_DIMS]
The extent of each dimension.
Definition: NvInferRuntimeBase.h:233
int32_t nbDims
The rank (number of dimensions).
Definition: NvInferRuntimeBase.h:230
An Interface class for version control.
Definition: NvInferRuntimeBase.h:284
virtual InterfaceInfo getInterfaceInfo() const noexcept=0
Return version information associated with this interface. Applications must not override this method...
virtual APILanguage getAPILanguage() const noexcept
The language used to build the implementation of this Interface.
Definition: NvInferRuntimeBase.h:291
Version information associated with a TRT interface.
Definition: NvInferRuntimeBase.h:249
InterfaceKind kind
Definition: NvInferRuntimeBase.h:251
int32_t major
Definition: NvInferRuntimeBase.h:252
int32_t minor
Definition: NvInferRuntimeBase.h:253
Definition: NvInferRuntimeBase.h:421
char const * ErrorDesc
A typedef of a C-style string for reporting error descriptions.
Definition: NvInferRuntimeBase.h:434
~IErrorRecorder() noexcept override=default
int32_t RefCount
A typedef of a 32-bit integer for reference counting.
Definition: NvInferRuntimeBase.h:446
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntimeBase.h:426
Application-implemented logging interface for the builder, refitter and runtime.
Definition: NvInferRuntime.h:1614
The TensorRT API version 1 namespace.
Definition: NvInferSafePlugin.h:33
ErrorCode
Error codes that can be returned by TensorRT during execution.
Definition: NvInferRuntimeBase.h:317
TensorIOMode
Definition of tensor IO Mode.
Definition: NvInferRuntimeBase.h:664
@ kOUTPUT
Tensor is output by the engine.
@ kINPUT
Tensor is input to the engine.
APILanguage
Programming language used in the implementation of a TRT interface.
Definition: NvInferRuntimeBase.h:262
v_1_0::ILogger ILogger
Definition: NvInferRuntimeBase.h:125
char_t AsciiChar
Definition: NvInferRuntimeBase.h:116
char char_t
char_t is the type used by TensorRT to represent all valid characters.
Definition: NvInferRuntimeBase.h:112
DataType
The type of weights and tensors. The datatypes other than kBOOL, kINT32, and kINT64 are "activation d...
Definition: NvInferRuntimeBase.h:151
@ kINT64
Signed 64-bit integer type.
@ kFLOAT
32-bit floating point format.
@ kBOOL
8-bit boolean. 0 = false, 1 = true, other values undefined.
@ kHALF
IEEE 16-bit floating-point format – has a 5 bit exponent and 11 bit significand.
@ kINT8
Signed 8-bit integer representing a quantized floating-point value.
@ kE8M0
Unsigned representation of exponent-only 8-bit floating point type for quantization scales.
@ kBF16
Brain float – has an 8 bit exponent and 8 bit significand.
@ kINT4
Signed 4-bit integer type.
@ kINT32
Signed 32-bit integer format.
char const * InterfaceKind
Definition: NvInferRuntimeBase.h:241
constexpr int32_t EnumMax() noexcept
Definition: NvInferRuntimeBase.h:139
v_1_0::IErrorRecorder IErrorRecorder
Definition: NvInferRuntimeBase.h:124
Declaration of EnumMaxImpl struct to store the exclusive upper bound of an enumeration type.
Definition: NvInferRuntimeBase.h:132

  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