TensorRT for RTX 1.6.1
NvInferRuntime.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_H
19#define NV_INFER_RUNTIME_H
20
26
27#include "NvInferImpl.h" // IWYU pragma: export
28#define NV_INFER_INTERNAL_INCLUDE 1
29#include "NvInferPluginBase.h" // IWYU pragma: export
30#undef NV_INFER_INTERNAL_INCLUDE
31#include "NvInferRuntimeCommon.h" // IWYU pragma: export
32
33namespace nvinfer1
34{
35
36class IExecutionContext;
37class ICudaEngine;
38class IPluginFactory;
39class IEngineInspector;
40
49
51{
52protected:
53 INoCopy() = default;
54 virtual ~INoCopy() = default;
55 INoCopy(INoCopy const& other) = delete;
56 INoCopy& operator=(INoCopy const& other) = delete;
57 INoCopy(INoCopy&& other) = delete;
58 INoCopy& operator=(INoCopy&& other) = delete;
59};
60
75enum class EngineCapability : int32_t
76{
81 kSTANDARD = 0,
82
89 kSAFETY = 1,
90
97};
98
100template <>
102{
103 static constexpr int32_t kVALUE = 3;
104};
105
121{
122public:
124 void const* values;
125 int64_t count;
126};
127
138class IHostMemory : public INoCopy
139{
140public:
141 virtual ~IHostMemory() noexcept = 0;
142
144 void* data() const noexcept
145 {
146 return mImpl->data();
147 }
148
150 std::size_t size() const noexcept
151 {
152 return mImpl->size();
153 }
154
156 DataType type() const noexcept
157 {
158 return mImpl->type();
159 }
160
161protected:
162 apiv::VHostMemory* mImpl;
163};
164
165inline IHostMemory::~IHostMemory() noexcept = default;
166
177enum class DimensionOperation : int32_t
178{
179 kSUM = 0,
180 kPROD = 1,
181 kMAX = 2,
182 kMIN = 3,
183 kSUB = 4,
184 kEQUAL = 5,
185 kLESS = 6,
186 kFLOOR_DIV = 7,
187 kCEIL_DIV = 8
188};
189
191template <>
193{
194 static constexpr int32_t kVALUE = 9;
195};
196
202enum class TensorLocation : int32_t
203{
204 kDEVICE = 0,
205 kHOST = 1,
206};
207
209template <>
211{
212 static constexpr int32_t kVALUE = 2;
213};
214
228{
229public:
233 bool isConstant() const noexcept
234 {
235 return mImpl->isConstant();
236 }
237
244 int64_t getConstantValue() const noexcept
245 {
246 return mImpl->getConstantValue();
247 }
248
249protected:
250 apiv::VDimensionExpr* mImpl;
251 virtual ~IDimensionExpr() noexcept = 0;
252
253public:
259 bool isSizeTensor() const noexcept
260 {
261 return mImpl->isSizeTensor();
262 }
263};
264
265inline IDimensionExpr::~IDimensionExpr() noexcept = default;
266
284class IExprBuilder : public INoCopy
285{
286public:
290 IDimensionExpr const* constant(int64_t value) noexcept
291 {
292 return mImpl->constant(value);
293 }
294
302 DimensionOperation op, IDimensionExpr const& first, IDimensionExpr const& second) noexcept
303 {
304 return mImpl->operation(op, first, second);
305 }
306
307protected:
308 apiv::VExprBuilder* mImpl;
309 virtual ~IExprBuilder() noexcept = 0;
310
311public:
336 IDimensionExpr const* declareSizeTensor(int32_t outputIndex, IDimensionExpr const& opt, IDimensionExpr const& upper)
337 {
338 return mImpl->declareSizeTensor(outputIndex, opt, upper);
339 }
340};
341
342inline IExprBuilder::~IExprBuilder() noexcept = default;
343
350{
351public:
352 int32_t nbDims;
354};
355
362{
365
368
371
374};
375
407{
408public:
409 IPluginV2DynamicExt* clone() const noexcept override = 0;
410
435 virtual DimsExprs getOutputDimensions(
436 int32_t outputIndex, DimsExprs const* inputs, int32_t nbInputs, IExprBuilder& exprBuilder) noexcept = 0;
437
441 static constexpr int32_t kFORMAT_COMBINATION_LIMIT = 100;
442
475 virtual bool supportsFormatCombination(
476 int32_t pos, PluginTensorDesc const* inOut, int32_t nbInputs, int32_t nbOutputs) noexcept = 0;
477
513 virtual void configurePlugin(DynamicPluginTensorDesc const* in, int32_t nbInputs,
514 DynamicPluginTensorDesc const* out, int32_t nbOutputs) noexcept = 0;
515
525 virtual size_t getWorkspaceSize(PluginTensorDesc const* inputs, int32_t nbInputs, PluginTensorDesc const* outputs,
526 int32_t nbOutputs) const noexcept = 0;
527
540 virtual int32_t enqueue(PluginTensorDesc const* inputDesc, PluginTensorDesc const* outputDesc,
541 void const* const* inputs, void* const* outputs, void* workspace, cudaStream_t stream) noexcept = 0;
542
543protected:
551 int32_t getTensorRTVersion() const noexcept override
552 {
553 return (static_cast<int32_t>(PluginVersion::kV2_DYNAMICEXT) << 24 | (NV_TENSORRT_VERSION & 0xFFFFFF));
554 }
555
556 virtual ~IPluginV2DynamicExt() noexcept {}
557
558private:
559 // Following are obsolete base class methods, and must not be implemented or used.
560
564 void configurePlugin(Dims const*, int32_t, Dims const*, int32_t, DataType const*, DataType const*, bool const*,
565 bool const*, PluginFormat, int32_t) noexcept final
566 {
567 }
568
572 bool supportsFormat(DataType, PluginFormat) const noexcept final
573 {
574 return false;
575 }
576
580 Dims getOutputDimensions(int32_t, Dims const*, int32_t) noexcept final
581 {
582 return Dims{-1, {}};
583 }
584
588 size_t getWorkspaceSize(int32_t) const noexcept final
589 {
590 return 0;
591 }
592
596 int32_t enqueue(int32_t, void const* const*, void* const*, void*, cudaStream_t) noexcept final
597 {
598 return 1;
599 }
600};
601
602namespace v_1_0
603{
608{
609public:
614 ~IStreamReader() override = default;
615 IStreamReader() = default;
616
620 InterfaceInfo getInterfaceInfo() const noexcept override
621 {
622 return InterfaceInfo{"IStreamReader", 1, 0};
623 }
624
633 virtual int64_t read(void* destination, int64_t nbBytes) = 0;
634
635protected:
636 IStreamReader(IStreamReader const&) = default;
640};
641
643{
644public:
649 ~IStreamWriter() override = default;
650 IStreamWriter() = default;
651
655 InterfaceInfo getInterfaceInfo() const noexcept override
656 {
657 return InterfaceInfo{"IStreamWriter", 1, 0};
658 }
659
669 virtual int64_t write(void const* data, int64_t nbBytes) = 0;
670
671protected:
672 IStreamWriter(IStreamWriter const&) = default;
676};
677} // namespace v_1_0
678
690
700
705enum class SeekPosition : int32_t
706{
708 kSET = 0,
709
711 kCUR = 1,
712
714 kEND = 2,
715};
716
717namespace v_1_0
718{
720{
721public:
726 ~IStreamReaderV2() override = default;
727 IStreamReaderV2() = default;
728
732 InterfaceInfo getInterfaceInfo() const noexcept override
733 {
734 return InterfaceInfo{"IStreamReaderV2", 1, 0};
735 }
736
747 virtual int64_t read(void* destination, int64_t nbBytes, cudaStream_t stream) noexcept = 0;
748
757 virtual bool seek(int64_t offset, SeekPosition where) noexcept = 0;
758
759protected:
764};
765} // namespace v_1_0
766
777
792{
793public:
798 virtual IGpuAllocator* getGpuAllocator() const noexcept = 0;
799
804 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
805 virtual ~IPluginResourceContext() noexcept = 0;
806
807protected:
811 IPluginResourceContext& operator=(IPluginResourceContext const&) & = default;
813};
814
815inline IPluginResourceContext::~IPluginResourceContext() noexcept = default;
816
817namespace v_1_0
818{
820{
821public:
825 InterfaceInfo getInterfaceInfo() const noexcept override
826 {
827 return InterfaceInfo{"PLUGIN_V3ONE_CORE", 1, 0};
828 }
829
838 virtual AsciiChar const* getPluginName() const noexcept = 0;
839
848 virtual AsciiChar const* getPluginVersion() const noexcept = 0;
849
859 virtual AsciiChar const* getPluginNamespace() const noexcept = 0;
860};
861
863{
864public:
870 static constexpr int32_t kDEFAULT_FORMAT_COMBINATION_LIMIT = 100;
871
875 InterfaceInfo getInterfaceInfo() const noexcept override
876 {
877 return InterfaceInfo{"PLUGIN_V3ONE_BUILD", 1, 0};
878 }
879
899 virtual int32_t configurePlugin(DynamicPluginTensorDesc const* in, int32_t nbInputs,
900 DynamicPluginTensorDesc const* out, int32_t nbOutputs) noexcept = 0;
901
918 virtual int32_t getOutputDataTypes(
919 DataType* outputTypes, int32_t nbOutputs, const DataType* inputTypes, int32_t nbInputs) const noexcept = 0;
920
942 virtual int32_t getOutputShapes(DimsExprs const* inputs, int32_t nbInputs, DimsExprs const* shapeInputs,
943 int32_t nbShapeInputs, DimsExprs* outputs, int32_t nbOutputs, IExprBuilder& exprBuilder) noexcept = 0;
944
980 int32_t pos, DynamicPluginTensorDesc const* inOut, int32_t nbInputs, int32_t nbOutputs) noexcept = 0;
981
987 virtual int32_t getNbOutputs() const noexcept = 0;
988
998 virtual size_t getWorkspaceSize(DynamicPluginTensorDesc const* /* inputs */, int32_t /* nbInputs */,
999 DynamicPluginTensorDesc const* /* outputs */, int32_t /* nbOutputs */) const noexcept
1000 {
1001 return 0;
1002 }
1003
1035 virtual int32_t getValidTactics(int32_t* /* tactics */, int32_t /* nbTactics */) noexcept
1036 {
1037 return 0;
1038 }
1039
1043 virtual int32_t getNbTactics() noexcept
1044 {
1045 return 0;
1046 }
1047
1059 virtual char const* getTimingCacheID() noexcept
1060 {
1061 return nullptr;
1062 }
1063
1067 virtual int32_t getFormatCombinationLimit() noexcept
1068 {
1069 return kDEFAULT_FORMAT_COMBINATION_LIMIT;
1070 }
1071
1078 virtual char const* getMetadataString() noexcept
1079 {
1080 return nullptr;
1081 }
1082};
1083
1085{
1086public:
1090 InterfaceInfo getInterfaceInfo() const noexcept override
1091 {
1092 return InterfaceInfo{"PLUGIN_V3ONE_RUNTIME", 1, 0};
1093 }
1094
1102 virtual int32_t setTactic(int32_t /* tactic */) noexcept
1103 {
1104 return 0;
1105 }
1106
1125 virtual int32_t onShapeChange(
1126 PluginTensorDesc const* in, int32_t nbInputs, PluginTensorDesc const* out, int32_t nbOutputs) noexcept = 0;
1127
1141 virtual int32_t enqueue(PluginTensorDesc const* inputDesc, PluginTensorDesc const* outputDesc,
1142 void const* const* inputs, void* const* outputs, void* workspace, cudaStream_t stream) noexcept = 0;
1143
1163 virtual IPluginV3* attachToContext(IPluginResourceContext* context) noexcept = 0;
1164
1170
1174 virtual PluginFieldCollection const* getFieldsToSerialize() noexcept = 0;
1175};
1176} // namespace v_1_0
1177
1178namespace v_2_0
1179{
1180
1182{
1183public:
1184 InterfaceInfo getInterfaceInfo() const noexcept override
1185 {
1186 return InterfaceInfo{"PLUGIN_V3ONE_BUILD", 2, 0};
1187 }
1188
1218 virtual int32_t getAliasedInput(int32_t /* outputIndex */) noexcept
1219 {
1220 return -1;
1221 }
1222};
1223
1224} // namespace v_2_0
1225
1236
1248
1260
1269
1272namespace v_1_0
1273{
1275{
1276public:
1280 InterfaceInfo getInterfaceInfo() const noexcept override
1281 {
1282 return {"IProfiler", 1, 0};
1283 }
1284
1292 virtual void reportLayerTime(char const* layerName, float ms) noexcept = 0;
1293
1294 ~IProfiler() override = default;
1295};
1296} // namespace v_1_0
1297
1310
1318enum class WeightsRole : int32_t
1319{
1320 kKERNEL = 0,
1321 kBIAS = 1,
1322 kSHIFT = 2,
1323 kSCALE = 3,
1324 kCONSTANT = 4,
1325 kANY = 5,
1326};
1327
1329template <>
1331{
1332 static constexpr int32_t kVALUE = 6;
1333};
1334
1340enum class DeviceType : int32_t
1341{
1342 kGPU = 0,
1343 kDLA = 1,
1344};
1345
1347template <>
1349{
1350 static constexpr int32_t kVALUE = 2;
1351};
1352
1363enum class TempfileControlFlag : int32_t
1364{
1367
1372};
1373
1375template <>
1377{
1378 static constexpr int32_t kVALUE = 2;
1379};
1380
1387using TempfileControlFlags = uint32_t;
1388
1420enum class TensorFormat : int32_t
1421{
1428 kLINEAR = 0,
1429
1434 kCHW2 = 1,
1435
1439 kHWC8 = 2,
1440
1454 kCHW4 = 3,
1455
1462 kCHW16 = 4,
1463
1471 kCHW32 = 5,
1472
1477 kDHWC8 = 6,
1478
1483 kCDHW32 = 7,
1484
1488 kHWC = 8,
1489
1498 kDLA_LINEAR = 9,
1499
1513 kDLA_HWC4 = 10,
1514
1519 kHWC16 = 11,
1520
1525 kDHWC = 12
1526};
1527
1529template <>
1531{
1533 static constexpr int32_t kVALUE = 13;
1534};
1535
1541enum class AllocatorFlag : int32_t
1542{
1544 kRESIZABLE = 0,
1545};
1546
1548template <>
1550{
1552 static constexpr int32_t kVALUE = 1;
1553};
1554
1555using AllocatorFlags = uint32_t;
1556
1559namespace v_1_0
1560{
1561
1575{
1576public:
1580 InterfaceInfo getInterfaceInfo() const noexcept override
1581 {
1582 return {"ILogger", 1, 0};
1583 }
1584
1590 enum class Severity : int32_t
1591 {
1593 kINTERNAL_ERROR = 0,
1595 kERROR = 1,
1597 kWARNING = 2,
1599 kINFO = 3,
1601 kVERBOSE = 4,
1602 };
1603
1622 virtual void log(Severity severity, AsciiChar const* msg) noexcept = 0;
1623
1624 ILogger() = default;
1625 ~ILogger() override = default;
1626
1627protected:
1628 // @cond SuppressDoxyWarnings
1629 ILogger(ILogger const&) = default;
1630 ILogger(ILogger&&) = default;
1631 ILogger& operator=(ILogger const&) & = default;
1632 ILogger& operator=(ILogger&&) & = default;
1633 // @endcond
1634};
1635
1636} // namespace v_1_0
1637
1638using ILogger = v_1_0::ILogger;
1639
1641template <>
1643{
1645 static constexpr int32_t kVALUE = 5;
1646};
1647
1648namespace v_1_0
1649{
1650
1652{
1653public:
1679 uint64_t const size, uint64_t const alignment, AllocatorFlags const flags) noexcept = 0;
1680
1681 ~IGpuAllocator() override = default;
1682 IGpuAllocator() = default;
1683
1721 virtual void* reallocate(void* const /*baseAddr*/, uint64_t /*alignment*/, uint64_t /*newSize*/) noexcept
1722 {
1723 return nullptr;
1724 }
1725
1744 TRT_DEPRECATED virtual bool deallocate(void* const memory) noexcept = 0;
1745
1774 virtual void* allocateAsync(
1775 uint64_t const size, uint64_t const alignment, AllocatorFlags const flags, cudaStream_t /*stream*/) noexcept
1776 {
1777 return allocate(size, alignment, flags);
1778 }
1807 virtual bool deallocateAsync(void* const memory, cudaStream_t /*stream*/) noexcept
1808 {
1809 return deallocate(memory);
1810 }
1811
1815 InterfaceInfo getInterfaceInfo() const noexcept override
1816 {
1817 return {"IGpuAllocator", 1, 0};
1818 }
1819
1820protected:
1821 // @cond SuppressDoxyWarnings
1822 IGpuAllocator(IGpuAllocator const&) = default;
1823 IGpuAllocator(IGpuAllocator&&) = default;
1824 IGpuAllocator& operator=(IGpuAllocator const&) & = default;
1825 IGpuAllocator& operator=(IGpuAllocator&&) & = default;
1826 // @endcond
1827};
1828
1829} // namespace v_1_0
1830
1852
1858enum class EngineValidity : int32_t
1859{
1861 kVALID = 0,
1862
1864 kSUBOPTIMAL = 1,
1865
1867 kINVALID = 2,
1868};
1869
1871template <>
1873{
1874 static constexpr int32_t kVALUE = 3;
1875};
1876
1881enum class EngineInvalidityDiagnostics : uint64_t
1882{
1884 kVERSION_MISMATCH = 1ULL << 0,
1885
1887 kUNSUPPORTED_CC = 1ULL << 1,
1888
1890 kOLD_CUDA_DRIVER = 1ULL << 2,
1891
1893 kOLD_CUDA_RUNTIME = 1ULL << 3,
1894
1896 kINSUFFICIENT_GPU_MEMORY = 1ULL << 4,
1897
1899 kMALFORMED_ENGINE = 1ULL << 5,
1900
1902 kCUDA_ERROR = 1ULL << 6,
1903};
1904
1905
1913class IRuntime : public INoCopy
1914{
1915public:
1916 virtual ~IRuntime() noexcept = 0;
1917
1929 void setDLACore(int32_t dlaCore) noexcept
1930 {
1931 mImpl->setDLACore(dlaCore);
1932 }
1933
1939 int32_t getDLACore() const noexcept
1940 {
1941 return mImpl->getDLACore();
1942 }
1943
1947 int32_t getNbDLACores() const noexcept
1948 {
1949 return mImpl->getNbDLACores();
1950 }
1951
1963 void setGpuAllocator(IGpuAllocator* allocator) noexcept
1964 {
1965 mImpl->setGpuAllocator(allocator);
1966 }
1967
1979 //
1982 void setErrorRecorder(IErrorRecorder* recorder) noexcept
1983 {
1984 mImpl->setErrorRecorder(recorder);
1985 }
1986
1998 {
1999 return mImpl->getErrorRecorder();
2000 }
2001
2015 ICudaEngine* deserializeCudaEngine(void const* blob, std::size_t size) noexcept
2016 {
2017 return mImpl->deserializeCudaEngine(blob, size);
2018 }
2019
2039 {
2040 return mImpl->deserializeCudaEngineV2(streamReader);
2041 }
2042
2048 ILogger* getLogger() const noexcept
2049 {
2050 return mImpl->getLogger();
2051 }
2052
2063 bool setMaxThreads(int32_t maxThreads) noexcept
2064 {
2065 return mImpl->setMaxThreads(maxThreads);
2066 }
2067
2077 int32_t getMaxThreads() const noexcept
2078 {
2079 return mImpl->getMaxThreads();
2080 }
2081
2112 void setTemporaryDirectory(char const* path) noexcept
2113 {
2114 return mImpl->setTemporaryDirectory(path);
2115 }
2116
2123 char const* getTemporaryDirectory() const noexcept
2124 {
2125 return mImpl->getTemporaryDirectory();
2126 }
2127
2140 {
2141 return mImpl->setTempfileControlFlags(flags);
2142 }
2143
2152 {
2153 return mImpl->getTempfileControlFlags();
2154 }
2155
2162 {
2163 return mImpl->getPluginRegistry();
2164 }
2165
2179 IRuntime* loadRuntime(char const* path) noexcept
2180 {
2181 return mImpl->loadRuntime(path);
2182 }
2183
2191 void setEngineHostCodeAllowed(bool allowed) noexcept
2192 {
2193 return mImpl->setEngineHostCodeAllowed(allowed);
2194 }
2195
2201 bool getEngineHostCodeAllowed() const noexcept
2202 {
2203 return mImpl->getEngineHostCodeAllowed();
2204 }
2205
2213 int64_t getEngineHeaderSize() const noexcept
2214 {
2215 return mImpl->getEngineHeaderSize();
2216 }
2217
2241 EngineValidity getEngineValidity(void const* blob, int64_t blobSize, uint64_t* diagnostics) const noexcept
2242 {
2243 return mImpl->getEngineValidity(blob, blobSize, diagnostics);
2244 }
2245
2261 void setDeferredWeightsLoading(bool defer) noexcept
2262 {
2263 mImpl->setDeferredWeightsLoading(defer);
2264 }
2265
2270 {
2271 return mImpl->getDeferredWeightsLoading();
2272 }
2273
2274
2275protected:
2276 apiv::VRuntime* mImpl{};
2277};
2278
2279inline IRuntime::~IRuntime() noexcept = default;
2280
2288class IRefitter : public INoCopy
2289{
2290public:
2291 virtual ~IRefitter() noexcept = 0;
2292
2308 bool setWeights(char const* layerName, WeightsRole role, Weights weights) noexcept
2309 {
2310 return mImpl->setWeights(layerName, role, weights);
2311 }
2312
2325 bool refitCudaEngine() noexcept
2326 {
2327 return mImpl->refitCudaEngine();
2328 }
2329
2346 int32_t getMissing(int32_t size, char const** layerNames, WeightsRole* roles) noexcept
2347 {
2348 return mImpl->getMissing(size, layerNames, roles);
2349 }
2350
2363 int32_t getAll(int32_t size, char const** layerNames, WeightsRole* roles) noexcept
2364 {
2365 return mImpl->getAll(size, layerNames, roles);
2366 }
2367
2379 //
2382 void setErrorRecorder(IErrorRecorder* recorder) noexcept
2383 {
2384 mImpl->setErrorRecorder(recorder);
2385 }
2386
2398 {
2399 return mImpl->getErrorRecorder();
2400 }
2401
2422 bool setNamedWeights(char const* name, Weights weights) noexcept
2423 {
2424 return mImpl->setNamedWeights(name, weights);
2425 }
2426
2442 int32_t getMissingWeights(int32_t size, char const** weightsNames) noexcept
2443 {
2444 return mImpl->getMissingWeights(size, weightsNames);
2445 }
2446
2458 int32_t getAllWeights(int32_t size, char const** weightsNames) noexcept
2459 {
2460 return mImpl->getAllWeights(size, weightsNames);
2461 }
2462
2468 ILogger* getLogger() const noexcept
2469 {
2470 return mImpl->getLogger();
2471 }
2472
2484 bool setMaxThreads(int32_t maxThreads) noexcept
2485 {
2486 return mImpl->setMaxThreads(maxThreads);
2487 }
2488
2498 int32_t getMaxThreads() const noexcept
2499 {
2500 return mImpl->getMaxThreads();
2501 }
2502
2525 bool setNamedWeights(char const* name, Weights weights, TensorLocation location) noexcept
2526 {
2527 return mImpl->setNamedWeightsWithLocation(name, weights, location);
2528 }
2529
2541 Weights getNamedWeights(char const* weightsName) const noexcept
2542 {
2543 return mImpl->getNamedWeights(weightsName);
2544 }
2545
2557 TensorLocation getWeightsLocation(char const* weightsName) const noexcept
2558 {
2559 return mImpl->getWeightsLocation(weightsName);
2560 }
2561
2573 bool unsetNamedWeights(char const* weightsName) noexcept
2574 {
2575 return mImpl->unsetNamedWeights(weightsName);
2576 }
2577
2589 void setWeightsValidation(bool weightsValidation) noexcept
2590 {
2591 return mImpl->setWeightsValidation(weightsValidation);
2592 }
2593
2597 bool getWeightsValidation() const noexcept
2598 {
2599 return mImpl->getWeightsValidation();
2600 }
2601
2619 bool refitCudaEngineAsync(cudaStream_t stream) noexcept
2620 {
2621 return mImpl->refitCudaEngineAsync(stream);
2622 }
2623
2637 Weights getWeightsPrototype(char const* weightsName) const noexcept
2638 {
2639 return mImpl->getWeightsPrototype(weightsName);
2640 }
2641
2642protected:
2643 apiv::VRefitter* mImpl;
2644};
2645
2646inline IRefitter::~IRefitter() noexcept = default;
2647
2658enum class OptProfileSelector : int32_t
2659{
2660 kMIN = 0,
2661 kOPT = 1,
2662 kMAX = 2
2663};
2664
2666template <>
2668{
2669 static constexpr int32_t kVALUE = 3;
2670};
2671
2695{
2696public:
2724 bool setDimensions(char const* inputName, OptProfileSelector select, Dims const& dims) noexcept
2725 {
2726 return mImpl->setDimensions(inputName, select, dims);
2727 }
2728
2736 Dims getDimensions(char const* inputName, OptProfileSelector select) const noexcept
2737 {
2738 return mImpl->getDimensions(inputName, select);
2739 }
2740
2749 int32_t getNbShapeValues(char const* inputName) const noexcept
2750 {
2751 return mImpl->getNbShapeValues(inputName);
2752 }
2753
2767 bool setExtraMemoryTarget(float target) noexcept
2768 {
2769 return mImpl->setExtraMemoryTarget(target);
2770 }
2771
2779 float getExtraMemoryTarget() const noexcept
2780 {
2781 return mImpl->getExtraMemoryTarget();
2782 }
2783
2796 bool isValid() const noexcept
2797 {
2798 return mImpl->isValid();
2799 }
2800
2844 char const* inputName, OptProfileSelector select, int64_t const* values, int32_t nbValues) noexcept
2845 {
2846 return mImpl->setShapeValuesV2(inputName, select, values, nbValues);
2847 }
2848
2856 int64_t const* getShapeValuesV2(char const* inputName, OptProfileSelector select) const noexcept
2857 {
2858 return mImpl->getShapeValuesV2(inputName, select);
2859 }
2860
2861protected:
2862 apiv::VOptimizationProfile* mImpl;
2863 virtual ~IOptimizationProfile() noexcept = 0;
2864};
2865
2866inline IOptimizationProfile::~IOptimizationProfile() noexcept = default;
2867
2875enum class TacticSource : int32_t
2876{
2881
2885};
2886
2888template <>
2890{
2891 static constexpr int32_t kVALUE = 2;
2892};
2893
2900using TacticSources = uint32_t;
2901
2911enum class ProfilingVerbosity : int32_t
2912{
2913 kLAYER_NAMES_ONLY = 0,
2914 kNONE = 1,
2915 kDETAILED = 2,
2916};
2917
2919template <>
2921{
2922 static constexpr int32_t kVALUE = 3;
2923};
2924
2931using SerializationFlags = uint32_t;
2932
2940enum class SerializationFlag : int32_t
2941{
2942 kEXCLUDE_WEIGHTS = 0,
2944 kINCLUDE_REFIT = 2,
2945};
2946
2948template <>
2950{
2951 static constexpr int32_t kVALUE = 3;
2952};
2953
2962{
2963public:
2964 virtual ~ISerializationConfig() noexcept = 0;
2965
2977 bool setFlags(SerializationFlags serializationFlags) noexcept
2978 {
2979 return mImpl->setFlags(serializationFlags);
2980 }
2981
2990 {
2991 return mImpl->getFlags();
2992 }
2993
3001 bool clearFlag(SerializationFlag serializationFlag) noexcept
3002 {
3003 return mImpl->clearFlag(serializationFlag);
3004 }
3005
3013 bool setFlag(SerializationFlag serializationFlag) noexcept
3014 {
3015 return mImpl->setFlag(serializationFlag);
3016 }
3017
3025 bool getFlag(SerializationFlag serializationFlag) const noexcept
3026 {
3027 return mImpl->getFlag(serializationFlag);
3028 }
3029
3030protected:
3031 apiv::VSerializationConfig* mImpl;
3032};
3033
3034inline ISerializationConfig::~ISerializationConfig() noexcept = default;
3035
3048{
3049 kSTATIC = 0,
3050 kON_PROFILE_CHANGE = 1,
3051 kUSER_MANAGED = 2,
3052};
3053
3056template <>
3058{
3059 static constexpr int32_t kVALUE = 3;
3060};
3061
3070{
3071public:
3072 virtual ~IRuntimeCache() noexcept = 0;
3073
3079 IHostMemory* serialize() const noexcept
3080 {
3081 return mImpl->serialize();
3082 }
3083
3102 bool deserialize(void const* blob, size_t size) noexcept
3103 {
3104 return mImpl->deserialize(blob, size);
3105 }
3106
3110 bool reset() noexcept
3111 {
3112 return mImpl->reset();
3113 }
3114
3115protected:
3116 apiv::VRuntimeCache* mImpl;
3117};
3118
3119inline IRuntimeCache::~IRuntimeCache() noexcept = default;
3120
3133{
3139 kLAZY = 0,
3140
3145 kEAGER = 1,
3146
3150 kNONE = 2,
3151};
3152
3155template <>
3157{
3158 static constexpr int32_t kVALUE = 3;
3159};
3160
3168enum class CudaGraphStrategy : int32_t
3169{
3173 kDISABLED = 0,
3174
3183};
3184
3186template <>
3188{
3189 static constexpr int32_t kVALUE = 2;
3190};
3191
3192
3200{
3201public:
3202 virtual ~IRuntimeConfig() noexcept = 0;
3203
3209 void setExecutionContextAllocationStrategy(ExecutionContextAllocationStrategy strategy) noexcept
3210 {
3211 return mImpl->setExecutionContextAllocationStrategy(strategy);
3212 }
3213
3220 {
3221 return mImpl->getExecutionContextAllocationStrategy();
3222 }
3223
3230 {
3231 return mImpl->createRuntimeCache();
3232 }
3233
3239 bool setRuntimeCache(IRuntimeCache const& cache) noexcept
3240 {
3241 return mImpl->setRuntimeCache(cache);
3242 }
3243
3250 {
3251 return mImpl->getRuntimeCache();
3252 }
3253
3260 DynamicShapesKernelSpecializationStrategy dynamicShapesKernelSpecializationStrategy) noexcept
3261 {
3262 return mImpl->setDynamicShapesKernelSpecializationStrategy(dynamicShapesKernelSpecializationStrategy);
3263 }
3264
3271 {
3272 return mImpl->getDynamicShapesKernelSpecializationStrategy();
3273 }
3274
3295 {
3296 return mImpl->setCudaGraphStrategy(strategy);
3297 }
3298
3305 {
3306 return mImpl->getCudaGraphStrategy();
3307 }
3308
3309protected:
3310 apiv::VRuntimeConfig* mImpl;
3311}; // class IRuntimeConfig
3312
3313inline IRuntimeConfig::~IRuntimeConfig() noexcept = default;
3314
3323enum class EngineStat : int32_t
3324{
3327
3330};
3331
3333template <>
3335{
3336 static constexpr int32_t kVALUE = 2;
3337};
3338
3346class ICudaEngine : public INoCopy
3347{
3348public:
3349 virtual ~ICudaEngine() noexcept = 0;
3350
3361 Dims getTensorShape(char const* tensorName) const noexcept
3362 {
3363 return mImpl->getTensorShape(tensorName);
3364 }
3365
3376 DataType getTensorDataType(char const* tensorName) const noexcept
3377 {
3378 return mImpl->getTensorDataType(tensorName);
3379 }
3380
3390 int32_t getNbLayers() const noexcept
3391 {
3392 return mImpl->getNbLayers();
3393 }
3394
3404 IHostMemory* serialize() const noexcept
3405 {
3406 return mImpl->serialize();
3407 }
3408
3423 {
3424 return mImpl->createExecutionContext(strategy);
3425 }
3426
3439 TensorLocation getTensorLocation(char const* tensorName) const noexcept
3440 {
3441 return mImpl->getTensorLocation(tensorName);
3442 }
3443
3459 bool isShapeInferenceIO(char const* tensorName) const noexcept
3460 {
3461 return mImpl->isShapeInferenceIO(tensorName);
3462 }
3463
3473 TensorIOMode getTensorIOMode(char const* tensorName) const noexcept
3474 {
3475 return mImpl->getTensorIOMode(tensorName);
3476 }
3477
3492 TRT_NODISCARD char const* getAliasedInputTensor(char const* tensorName) const noexcept
3493 {
3494 return mImpl->getAliasedInputTensor(tensorName);
3495 }
3496
3505 {
3506 return mImpl->createExecutionContextWithRuntimeConfig(runtimeConfig);
3507 }
3508
3518 {
3519 return mImpl->createRuntimeConfig();
3520 }
3521
3530 TRT_NODISCARD bool areWeightsLoaded() const noexcept
3531 {
3532 return mImpl->areWeightsLoaded();
3533 }
3534
3557 TRT_NODISCARD bool loadWeights(void const* blob, int64_t size) noexcept
3558 {
3559 return mImpl->loadWeights(blob, size);
3560 }
3561
3608 TRT_NODISCARD bool loadWeightsAsync(IStreamReaderV2& streamReader, cudaStream_t stream) noexcept
3609 {
3610 return mImpl->loadWeightsAsync(streamReader, stream);
3611 }
3612
3622 int64_t getDeviceMemorySizeV2() const noexcept
3623 {
3624 return mImpl->getDeviceMemorySizeV2();
3625 }
3626
3636 int64_t getDeviceMemorySizeForProfileV2(int32_t profileIndex) const noexcept
3637 {
3638 return mImpl->getDeviceMemorySizeForProfileV2(profileIndex);
3639 }
3640
3646 bool isRefittable() const noexcept
3647 {
3648 return mImpl->isRefittable();
3649 }
3650
3667 int32_t getTensorBytesPerComponent(char const* tensorName) const noexcept
3668 {
3669 return mImpl->getTensorBytesPerComponent(tensorName);
3670 }
3671
3685 int32_t getTensorBytesPerComponent(char const* tensorName, int32_t profileIndex) const noexcept
3686 {
3687 return mImpl->getTensorBytesPerComponentV2(tensorName, profileIndex);
3688 }
3689
3706 int32_t getTensorComponentsPerElement(char const* tensorName) const noexcept
3707 {
3708 return mImpl->getTensorComponentsPerElement(tensorName);
3709 }
3710
3724 int32_t getTensorComponentsPerElement(char const* tensorName, int32_t profileIndex) const noexcept
3725 {
3726 return mImpl->getTensorComponentsPerElementV2(tensorName, profileIndex);
3727 }
3728
3739 TensorFormat getTensorFormat(char const* tensorName) const noexcept
3740 {
3741 return mImpl->getTensorFormat(tensorName);
3742 }
3743
3753 TensorFormat getTensorFormat(char const* tensorName, int32_t profileIndex) const noexcept
3754 {
3755 return mImpl->getTensorFormatV2(tensorName, profileIndex);
3756 }
3757
3777 char const* getTensorFormatDesc(char const* tensorName) const noexcept
3778 {
3779 return mImpl->getTensorFormatDesc(tensorName);
3780 }
3781
3800 char const* getTensorFormatDesc(char const* tensorName, int32_t profileIndex) const noexcept
3801 {
3802 return mImpl->getTensorFormatDescV2(tensorName, profileIndex);
3803 }
3804
3817 int32_t getTensorVectorizedDim(char const* tensorName) const noexcept
3818 {
3819 return mImpl->getTensorVectorizedDim(tensorName);
3820 }
3821
3833 int32_t getTensorVectorizedDim(char const* tensorName, int32_t profileIndex) const noexcept
3834 {
3835 return mImpl->getTensorVectorizedDimV2(tensorName, profileIndex);
3836 }
3837
3848 char const* getName() const noexcept
3849 {
3850 return mImpl->getName();
3851 }
3852
3859 int32_t getNbOptimizationProfiles() const noexcept
3860 {
3861 return mImpl->getNbOptimizationProfiles();
3862 }
3863
3879 Dims getProfileShape(char const* tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept
3880 {
3881 return mImpl->getProfileShape(tensorName, profileIndex, select);
3882 }
3883
3895 {
3896 return mImpl->getEngineCapability();
3897 }
3898
3913 void setErrorRecorder(IErrorRecorder* recorder) noexcept
3914 {
3915 return mImpl->setErrorRecorder(recorder);
3916 }
3917
3929 {
3930 return mImpl->getErrorRecorder();
3931 }
3932
3945 {
3946 return mImpl->getTacticSources();
3947 }
3948
3957 {
3958 return mImpl->getProfilingVerbosity();
3959 }
3960
3967 {
3968 return mImpl->createEngineInspector();
3969 }
3970
3979 int32_t getNbIOTensors() const noexcept
3980 {
3981 return mImpl->getNbIOTensors();
3982 }
3983
3991 char const* getIOTensorName(int32_t index) const noexcept
3992 {
3993 return mImpl->getIOTensorName(index);
3994 }
3995
4003 {
4004 return mImpl->getHardwareCompatibilityLevel();
4005 }
4006
4017 int32_t getNbAuxStreams() const noexcept
4018 {
4019 return mImpl->getNbAuxStreams();
4020 }
4021
4028 {
4029 return mImpl->createSerializationConfig();
4030 }
4031
4048 {
4049 return mImpl->serializeWithConfig(config);
4050 }
4051
4063 int64_t getStreamableWeightsSize() const noexcept
4064 {
4065 return mImpl->getStreamableWeightsSize();
4066 }
4067
4102 bool setWeightStreamingBudgetV2(int64_t gpuMemoryBudget) noexcept
4103 {
4104 return mImpl->setWeightStreamingBudgetV2(gpuMemoryBudget);
4105 }
4106
4118 int64_t getWeightStreamingBudgetV2() const noexcept
4119 {
4120 return mImpl->getWeightStreamingBudgetV2();
4121 }
4122
4141 int64_t getWeightStreamingAutomaticBudget() const noexcept
4142 {
4143 return mImpl->getWeightStreamingAutomaticBudget();
4144 }
4145
4168 {
4169 return mImpl->getWeightStreamingScratchMemorySize();
4170 }
4171
4181 bool isDebugTensor(char const* name) const noexcept
4182 {
4183 return mImpl->isDebugTensor(name);
4184 }
4185
4204 char const* tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept
4205 {
4206 return mImpl->getProfileTensorValuesV2(tensorName, profileIndex, select);
4207 }
4208
4231 int64_t getEngineStat(EngineStat stat) const noexcept
4232 {
4233 return mImpl->getEngineStat(stat);
4234 }
4235
4236protected:
4237 apiv::VCudaEngine* mImpl;
4238};
4239
4240inline ICudaEngine::~ICudaEngine() noexcept = default;
4241
4242namespace v_1_0
4243{
4245{
4246public:
4250 InterfaceInfo getInterfaceInfo() const noexcept override
4251 {
4252 return {"IOutputAllocator", 1, 0};
4253 }
4254
4278 [[maybe_unused]] char const* tensorName, [[maybe_unused]] void* currentMemory, [[maybe_unused]] uint64_t size,
4279 [[maybe_unused]] uint64_t alignment, cudaStream_t /* stream */)
4280 {
4281 return nullptr;
4282 }
4283
4292 virtual void notifyShape(char const* tensorName, Dims const& dims) noexcept = 0;
4293};
4294} // namespace v_1_0
4295
4304
4305namespace v_1_0
4306{
4308{
4309public:
4313 InterfaceInfo getInterfaceInfo() const noexcept override
4314 {
4315 return {"IDebugListener", 1, 0};
4316 }
4317
4331 virtual bool processDebugTensor(void const* addr, TensorLocation location, DataType type, Dims const& shape,
4332 char const* name, cudaStream_t stream)
4333 = 0;
4334
4335 ~IDebugListener() override = default;
4336};
4337} // namespace v_1_0
4338
4345
4357{
4358public:
4359 virtual ~IExecutionContext() noexcept = 0;
4360
4369 void setDebugSync(bool sync) noexcept
4370 {
4371 mImpl->setDebugSync(sync);
4372 }
4373
4379 bool getDebugSync() const noexcept
4380 {
4381 return mImpl->getDebugSync();
4382 }
4383
4389 void setProfiler(IProfiler* profiler) noexcept
4390 {
4391 mImpl->setProfiler(profiler);
4392 }
4393
4399 IProfiler* getProfiler() const noexcept
4400 {
4401 return mImpl->getProfiler();
4402 }
4403
4409 ICudaEngine const& getEngine() const noexcept
4410 {
4411 return mImpl->getEngine();
4412 }
4413
4423 void setName(char const* name) noexcept
4424 {
4425 mImpl->setName(name);
4426 }
4427
4433 char const* getName() const noexcept
4434 {
4435 return mImpl->getName();
4436 }
4437
4459 void setDeviceMemory(void* memory) noexcept
4460 {
4461 mImpl->setDeviceMemory(memory);
4462 }
4463
4480 void setDeviceMemoryV2(void* memory, int64_t size) noexcept
4481 {
4482 return mImpl->setDeviceMemoryV2(memory, size);
4483 }
4484
4501 Dims getTensorStrides(char const* tensorName) const noexcept
4502 {
4503 return mImpl->getTensorStrides(tensorName);
4504 }
4505
4506public:
4516 int32_t getOptimizationProfile() const noexcept
4517 {
4518 return mImpl->getOptimizationProfile();
4519 }
4520
4534 bool setInputShape(char const* tensorName, Dims const& dims) noexcept
4535 {
4536 return mImpl->setInputShape(tensorName, dims);
4537 }
4538
4571 Dims getTensorShape(char const* tensorName) const noexcept
4572 {
4573 return mImpl->getTensorShape(tensorName);
4574 }
4575
4587 bool allInputDimensionsSpecified() const noexcept
4588 {
4589 return mImpl->allInputDimensionsSpecified();
4590 }
4591
4606 void setErrorRecorder(IErrorRecorder* recorder) noexcept
4607 {
4608 mImpl->setErrorRecorder(recorder);
4609 }
4610
4622 {
4623 return mImpl->getErrorRecorder();
4624 }
4625
4638 bool executeV2(void* const* bindings) noexcept
4639 {
4640 return mImpl->executeV2(bindings);
4641 }
4642
4682 bool setOptimizationProfileAsync(int32_t profileIndex, cudaStream_t stream) noexcept
4683 {
4684 return mImpl->setOptimizationProfileAsync(profileIndex, stream);
4685 }
4686
4698 void setEnqueueEmitsProfile(bool enqueueEmitsProfile) noexcept
4699 {
4700 mImpl->setEnqueueEmitsProfile(enqueueEmitsProfile);
4701 }
4702
4710 bool getEnqueueEmitsProfile() const noexcept
4711 {
4712 return mImpl->getEnqueueEmitsProfile();
4713 }
4714
4740 bool reportToProfiler() const noexcept
4741 {
4742 return mImpl->reportToProfiler();
4743 }
4744
4784 bool setTensorAddress(char const* tensorName, void* data) noexcept
4785 {
4786 return mImpl->setTensorAddress(tensorName, data);
4787 }
4788
4801 void const* getTensorAddress(char const* tensorName) const noexcept
4802 {
4803 return mImpl->getTensorAddress(tensorName);
4804 }
4805
4824 bool setOutputTensorAddress(char const* tensorName, void* data) noexcept
4825 {
4826 return mImpl->setOutputTensorAddress(tensorName, data);
4827 }
4828
4846 bool setInputTensorAddress(char const* tensorName, void const* data) noexcept
4847 {
4848 return mImpl->setInputTensorAddress(tensorName, data);
4849 }
4850
4865 void* getOutputTensorAddress(char const* tensorName) const noexcept
4866 {
4867 return mImpl->getOutputTensorAddress(tensorName);
4868 }
4869
4898 int32_t inferShapes(int32_t nbMaxNames, char const** tensorNames) noexcept
4899 {
4900 return mImpl->inferShapes(nbMaxNames, tensorNames);
4901 }
4902
4916 {
4917 return mImpl->updateDeviceMemorySizeForShapes();
4918 }
4919
4931 bool setInputConsumedEvent(cudaEvent_t event) noexcept
4932 {
4933 return mImpl->setInputConsumedEvent(event);
4934 }
4935
4941 cudaEvent_t getInputConsumedEvent() const noexcept
4942 {
4943 return mImpl->getInputConsumedEvent();
4944 }
4945
4960 bool setOutputAllocator(char const* tensorName, IOutputAllocator* outputAllocator) noexcept
4961 {
4962 return mImpl->setOutputAllocator(tensorName, outputAllocator);
4963 }
4964
4973 IOutputAllocator* getOutputAllocator(char const* tensorName) const noexcept
4974 {
4975 return mImpl->getOutputAllocator(tensorName);
4976 }
4977
4991 int64_t getMaxOutputSize(char const* tensorName) const noexcept
4992 {
4993 return mImpl->getMaxOutputSize(tensorName);
4994 }
4995
5012 {
5013 return mImpl->setTemporaryStorageAllocator(allocator);
5014 }
5015
5022 {
5023 return mImpl->getTemporaryStorageAllocator();
5024 }
5025
5045 bool enqueueV3(cudaStream_t stream) noexcept
5046 {
5047 return mImpl->enqueueV3(stream);
5048 }
5049
5061 void setPersistentCacheLimit(size_t size) noexcept
5062 {
5063 mImpl->setPersistentCacheLimit(size);
5064 }
5065
5072 size_t getPersistentCacheLimit() const noexcept
5073 {
5074 return mImpl->getPersistentCacheLimit();
5075 }
5076
5096 bool setNvtxVerbosity(ProfilingVerbosity verbosity) noexcept
5097 {
5098 return mImpl->setNvtxVerbosity(verbosity);
5099 }
5100
5109 {
5110 return mImpl->getNvtxVerbosity();
5111 }
5112
5139 void setAuxStreams(cudaStream_t* auxStreams, int32_t nbStreams) noexcept
5140 {
5141 mImpl->setAuxStreams(auxStreams, nbStreams);
5142 }
5143
5151 bool setDebugListener(IDebugListener* listener) noexcept
5152 {
5153 return mImpl->setDebugListener(listener);
5154 }
5155
5162 {
5163 return mImpl->getDebugListener();
5164 }
5165
5180 bool setTensorDebugState(char const* name, bool flag) noexcept
5181 {
5182 return mImpl->setTensorDebugState(name, flag);
5183 }
5184
5192 bool getDebugState(char const* name) const noexcept
5193 {
5194 return mImpl->getDebugState(name);
5195 }
5196
5203 {
5204 return mImpl->getRuntimeConfig();
5205 }
5206
5215 bool setAllTensorsDebugState(bool flag) noexcept
5216 {
5217 return mImpl->setAllTensorsDebugState(flag);
5218 }
5219
5231 bool setUnfusedTensorsDebugState(bool flag) noexcept
5232 {
5233 return mImpl->setUnfusedTensorsDebugState(flag);
5234 }
5235
5241 bool getUnfusedTensorsDebugState() const noexcept
5242 {
5243 return mImpl->getUnfusedTensorsDebugState();
5244 }
5263 bool isStreamCapturable(cudaStream_t stream) const noexcept {
5264 return mImpl->isStreamCapturable(stream);
5265 }
5266
5280 bool setCommunicator(void* communicator) noexcept
5281 {
5282 return mImpl->setCommunicator(communicator);
5283 }
5284
5285protected:
5286 apiv::VExecutionContext* mImpl;
5287}; // class IExecutionContext
5288
5289inline IExecutionContext::~IExecutionContext() noexcept = default;
5290
5298enum class LayerInformationFormat : int32_t
5299{
5300 kONELINE = 0,
5301 kJSON = 1,
5302};
5303
5305template <>
5307{
5308 static constexpr int32_t kVALUE = 2;
5309};
5310
5327{
5328public:
5329 virtual ~IEngineInspector() noexcept = 0;
5330
5343 bool setExecutionContext(IExecutionContext const* context) noexcept
5344 {
5345 return mImpl->setExecutionContext(context);
5346 }
5347
5356 {
5357 return mImpl->getExecutionContext();
5358 }
5359
5380 char const* getLayerInformation(int32_t layerIndex, LayerInformationFormat format) const noexcept
5381 {
5382 return mImpl->getLayerInformation(layerIndex, format);
5383 }
5384
5403 char const* getEngineInformation(LayerInformationFormat format) const noexcept
5404 {
5405 return mImpl->getEngineInformation(format);
5406 }
5407
5422 void setErrorRecorder(IErrorRecorder* recorder) noexcept
5423 {
5424 mImpl->setErrorRecorder(recorder);
5425 }
5426
5438 {
5439 return mImpl->getErrorRecorder();
5440 }
5441
5442protected:
5443 apiv::VEngineInspector* mImpl;
5444}; // class IEngineInspector
5445
5446inline IEngineInspector::~IEngineInspector() noexcept = default;
5447
5448} // namespace nvinfer1
5449
5454extern "C" TENSORRTAPI void* createInferRuntime_INTERNAL(void* logger, int32_t version) noexcept;
5455
5460extern "C" TENSORRTAPI void* createInferRefitter_INTERNAL(void* engine, void* logger, int32_t version) noexcept;
5461
5465extern "C" TENSORRTAPI nvinfer1::IPluginRegistry* getPluginRegistry() noexcept;
5466
5472extern "C" TENSORRTAPI nvinfer1::ILogger* getLogger() noexcept;
5473
5474namespace nvinfer1
5475{
5476namespace // unnamed namespace avoids linkage surprises when linking objects built with different versions of this
5477 // header.
5478{
5484inline IRuntime* createInferRuntime(ILogger& logger) noexcept
5485{
5486 return static_cast<IRuntime*>(createInferRuntime_INTERNAL(&logger, NV_TENSORRT_VERSION));
5487}
5488
5495inline IRefitter* createInferRefitter(ICudaEngine& engine, ILogger& logger) noexcept
5496{
5497 return static_cast<IRefitter*>(createInferRefitter_INTERNAL(&engine, &logger, NV_TENSORRT_VERSION));
5498}
5499
5500} // namespace
5501
5513template <typename T>
5515{
5516public:
5518 {
5519 getPluginRegistry()->registerCreator(instance, "");
5520 }
5521
5522private:
5524 T instance{};
5525};
5526
5527} // namespace nvinfer1
5528
5529#define REGISTER_TENSORRT_PLUGIN(name) \
5530 static nvinfer1::PluginRegistrar<name> pluginRegistrar##name {}
5531
5532namespace nvinfer1
5533{
5536namespace v_1_0
5537{
5547{
5548public:
5552 InterfaceInfo getInterfaceInfo() const noexcept override
5553 {
5554 return {"ILoggerFinder", 1, 0};
5555 }
5556
5564 virtual ILogger* findLogger() = 0;
5565
5566protected:
5568 ~ILoggerFinder() override = default;
5569};
5570
5571} // namespace v_1_0
5572
5574
5577namespace v_1_0
5578{
5579
5581{
5582public:
5584 ~IGpuAsyncAllocator() override = default;
5585
5615 void* allocateAsync(uint64_t const size, uint64_t const alignment, AllocatorFlags const flags,
5616 cudaStream_t /*stream*/) noexcept override = 0;
5617
5643 bool deallocateAsync(void* const memory, cudaStream_t /*stream*/) noexcept override = 0;
5644
5669 uint64_t const size, uint64_t const alignment, AllocatorFlags const flags) noexcept override
5670 {
5671 return allocateAsync(size, alignment, flags, nullptr);
5672 }
5673
5692 TRT_DEPRECATED bool deallocate(void* const memory) noexcept override
5693 {
5694 return deallocateAsync(memory, nullptr);
5695 }
5696
5700 InterfaceInfo getInterfaceInfo() const noexcept override
5701 {
5702 return {"IGpuAllocator", 1, 0};
5703 }
5704};
5705
5707{
5708public:
5712 InterfaceInfo getInterfaceInfo() const noexcept override
5713 {
5714 return InterfaceInfo{"PLUGIN CREATOR_V3ONE", 1, 0};
5715 }
5716
5734 AsciiChar const* name, PluginFieldCollection const* fc, TensorRTPhase phase) noexcept = 0;
5735
5742 virtual PluginFieldCollection const* getFieldNames() noexcept = 0;
5743
5750 virtual AsciiChar const* getPluginName() const noexcept = 0;
5751
5758 virtual AsciiChar const* getPluginVersion() const noexcept = 0;
5759
5766 virtual AsciiChar const* getPluginNamespace() const noexcept = 0;
5767
5769 virtual ~IPluginCreatorV3One() = default;
5770
5771protected:
5774 IPluginCreatorV3One& operator=(IPluginCreatorV3One const&) & = default;
5775 IPluginCreatorV3One& operator=(IPluginCreatorV3One&&) & = default;
5776};
5777
5778} // namespace v_1_0
5779
5794
5804
5805} // namespace nvinfer1
5806
5810extern "C" TENSORRTAPI int32_t getInferLibMajorVersion() noexcept;
5814extern "C" TENSORRTAPI int32_t getInferLibMinorVersion() noexcept;
5818extern "C" TENSORRTAPI int32_t getInferLibPatchVersion() noexcept;
5822extern "C" TENSORRTAPI int32_t getInferLibBuildVersion() noexcept;
5823
5824#endif // NV_INFER_RUNTIME_H
TENSORRTAPI nvinfer1::IPluginRegistry * getPluginRegistry() noexcept
Return the plugin registry.
TENSORRTAPI nvinfer1::ILogger * getLogger() noexcept
Return the logger object.
TENSORRTAPI int32_t getInferLibMinorVersion() noexcept
Return the library minor version number.
TENSORRTAPI int32_t getInferLibMajorVersion() noexcept
Return the library major version number.
TENSORRTAPI int32_t getInferLibPatchVersion() noexcept
Return the library patch version number.
TENSORRTAPI int32_t getInferLibBuildVersion() noexcept
Return the library build version number.
#define TENSORRTAPI
Definition: NvInferRuntimeBase.h:70
#define NV_TENSORRT_VERSION
Definition: NvInferRuntimeBase.h:102
#define TRT_NODISCARD
A stand-in for [[nodiscard]] and [[nodiscard(REASON)]] that works with older compilers.
Definition: NvInferRuntimeBase.h:57
#define TRT_DEPRECATED
Definition: NvInferRuntimeBase.h:42
Structure to define the dimensions of a tensor.
Definition: NvInferRuntimeBase.h:222
static constexpr int32_t MAX_DIMS
The maximum rank (number of dimensions) supported for a tensor.
Definition: NvInferRuntimeBase.h:225
Analog of class Dims with expressions instead of constants for the dimensions.
Definition: NvInferRuntime.h:350
int32_t nbDims
The number of dimensions.
Definition: NvInferRuntime.h:352
An engine for executing inference on a built network, with functionally unsafe features.
Definition: NvInferRuntime.h:3347
int32_t getTensorBytesPerComponent(char const *tensorName) const noexcept
Return the number of bytes per component of an element, or -1 if the tensor is not vectorized or prov...
Definition: NvInferRuntime.h:3667
ISerializationConfig * createSerializationConfig() noexcept
Create a serialization configuration object.
Definition: NvInferRuntime.h:4027
char const * getIOTensorName(int32_t index) const noexcept
Return name of an IO tensor.
Definition: NvInferRuntime.h:3991
int64_t getWeightStreamingBudgetV2() const noexcept
Returns the current weight streaming device memory budget in bytes.
Definition: NvInferRuntime.h:4118
EngineCapability getEngineCapability() const noexcept
Determine what execution capability this engine has.
Definition: NvInferRuntime.h:3894
IErrorRecorder * getErrorRecorder() const noexcept
Get the ErrorRecorder assigned to this interface.
Definition: NvInferRuntime.h:3928
TensorFormat getTensorFormat(char const *tensorName, int32_t profileIndex) const noexcept
Return the tensor format of given profile, or TensorFormat::kLINEAR if the provided name does not map...
Definition: NvInferRuntime.h:3753
int64_t const * getProfileTensorValuesV2(char const *tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept
Get the minimum / optimum / maximum values (not dimensions) for an input tensor given its name under ...
Definition: NvInferRuntime.h:4203
TRT_NODISCARD bool areWeightsLoaded() const noexcept
Check whether the engine's weights have been loaded onto the GPU.
Definition: NvInferRuntime.h:3530
apiv::VCudaEngine * mImpl
Definition: NvInferRuntime.h:4237
IExecutionContext * createExecutionContext(ExecutionContextAllocationStrategy strategy=ExecutionContextAllocationStrategy::kSTATIC) noexcept
Create an execution context and specify the strategy for allocating internal activation memory.
Definition: NvInferRuntime.h:3421
char const * getTensorFormatDesc(char const *tensorName) const noexcept
Return the human readable description of the tensor format, or empty string if the provided name does...
Definition: NvInferRuntime.h:3777
Dims getProfileShape(char const *tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept
Get the minimum / optimum / maximum dimensions for an input tensor given its name under an optimizati...
Definition: NvInferRuntime.h:3879
bool setWeightStreamingBudgetV2(int64_t gpuMemoryBudget) noexcept
Limit the maximum amount of GPU memory usable for network weights in bytes.
Definition: NvInferRuntime.h:4102
IExecutionContext * createExecutionContext(IRuntimeConfig *runtimeConfig) noexcept
Create an execution context with TensorRT JIT runtime config.
Definition: NvInferRuntime.h:3504
int32_t getNbAuxStreams() const noexcept
Return the number of auxiliary streams used by this engine.
Definition: NvInferRuntime.h:4017
int64_t getStreamableWeightsSize() const noexcept
Get the total size in bytes of all streamable weights.
Definition: NvInferRuntime.h:4063
DataType getTensorDataType(char const *tensorName) const noexcept
Determine the required data type for a buffer from its tensor name.
Definition: NvInferRuntime.h:3376
void setErrorRecorder(IErrorRecorder *recorder) noexcept
Set the ErrorRecorder for this interface.
Definition: NvInferRuntime.h:3913
TacticSources getTacticSources() const noexcept
return the tactic sources required by this engine.
Definition: NvInferRuntime.h:3944
TRT_NODISCARD char const * getAliasedInputTensor(char const *tensorName) const noexcept
Get the input tensor name that an output tensor should alias with.
Definition: NvInferRuntime.h:3492
IHostMemory * serializeWithConfig(ISerializationConfig &config) const noexcept
Serialize the network to a stream with the provided SerializationConfig.
Definition: NvInferRuntime.h:4047
int64_t getWeightStreamingAutomaticBudget() const noexcept
TensorRT automatically determines a device memory budget for the model to run. The budget is close to...
Definition: NvInferRuntime.h:4141
bool isDebugTensor(char const *name) const noexcept
Check if a tensor is marked as a debug tensor.
Definition: NvInferRuntime.h:4181
int32_t getTensorVectorizedDim(char const *tensorName, int32_t profileIndex) const noexcept
Return the dimension index that the buffer is vectorized of given profile, or -1 if the provided name...
Definition: NvInferRuntime.h:3833
TRT_NODISCARD bool loadWeightsAsync(IStreamReaderV2 &streamReader, cudaStream_t stream) noexcept
Asynchronously copy weights from a stream to the GPU.
Definition: NvInferRuntime.h:3608
char const * getName() const noexcept
Returns the name of the network associated with the engine.
Definition: NvInferRuntime.h:3848
ProfilingVerbosity getProfilingVerbosity() const noexcept
Return the ProfilingVerbosity the builder config was set to when the engine was built.
Definition: NvInferRuntime.h:3956
bool isShapeInferenceIO(char const *tensorName) const noexcept
True if tensor is required as input for shape calculations or is output from shape calculations.
Definition: NvInferRuntime.h:3459
int64_t getWeightStreamingScratchMemorySize() const noexcept
Returns the size of the scratch memory required by the current weight streaming budget.
Definition: NvInferRuntime.h:4167
int64_t getDeviceMemorySizeV2() const noexcept
Return the maximum device memory required by the context over all profiles.
Definition: NvInferRuntime.h:3622
int32_t getTensorVectorizedDim(char const *tensorName) const noexcept
Return the dimension index that the buffer is vectorized, or -1 if the provided name does not map to ...
Definition: NvInferRuntime.h:3817
int32_t getTensorComponentsPerElement(char const *tensorName, int32_t profileIndex) const noexcept
Return the number of components included in one element of given profile, or -1 if tensor is not vect...
Definition: NvInferRuntime.h:3724
int64_t getDeviceMemorySizeForProfileV2(int32_t profileIndex) const noexcept
Return the maximum device memory required by the context for a profile.
Definition: NvInferRuntime.h:3636
IRuntimeConfig * createRuntimeConfig() noexcept
Create a runtime config for TensorRT JIT. The caller is responsible for ownership of the returned IRu...
Definition: NvInferRuntime.h:3517
TensorFormat getTensorFormat(char const *tensorName) const noexcept
Return the tensor format, or TensorFormat::kLINEAR if the provided name does not map to an input or o...
Definition: NvInferRuntime.h:3739
IHostMemory * serialize() const noexcept
Serialize the network to a stream.
Definition: NvInferRuntime.h:3404
int64_t getEngineStat(EngineStat stat) const noexcept
Get engine statistics according to the given enum value.
Definition: NvInferRuntime.h:4231
TensorLocation getTensorLocation(char const *tensorName) const noexcept
Get whether an input or output tensor must be on GPU or CPU.
Definition: NvInferRuntime.h:3439
IEngineInspector * createEngineInspector() const noexcept
Create a new engine inspector which prints the layer information in an engine or an execution context...
Definition: NvInferRuntime.h:3966
int32_t getTensorBytesPerComponent(char const *tensorName, int32_t profileIndex) const noexcept
Return the number of bytes per component of an element given of given profile, or -1 if the tensor is...
Definition: NvInferRuntime.h:3685
HardwareCompatibilityLevel getHardwareCompatibilityLevel() const noexcept
Return the hardware compatibility level of this engine.
Definition: NvInferRuntime.h:4002
int32_t getNbOptimizationProfiles() const noexcept
Get the number of optimization profiles defined for this engine.
Definition: NvInferRuntime.h:3859
char const * getTensorFormatDesc(char const *tensorName, int32_t profileIndex) const noexcept
Return the human readable description of the tensor format of given profile, or empty string if the p...
Definition: NvInferRuntime.h:3800
TensorIOMode getTensorIOMode(char const *tensorName) const noexcept
Determine whether a tensor is an input or output tensor.
Definition: NvInferRuntime.h:3473
int32_t getNbLayers() const noexcept
Get the number of layers in the network.
Definition: NvInferRuntime.h:3390
TRT_NODISCARD bool loadWeights(void const *blob, int64_t size) noexcept
Synchronously copy weights from the engine plan blob to the GPU.
Definition: NvInferRuntime.h:3557
int32_t getNbIOTensors() const noexcept
Return number of IO tensors.
Definition: NvInferRuntime.h:3979
virtual ~ICudaEngine() noexcept=0
int32_t getTensorComponentsPerElement(char const *tensorName) const noexcept
Return the number of components included in one element, or -1 if tensor is not vectorized or if the ...
Definition: NvInferRuntime.h:3706
bool isRefittable() const noexcept
Return true if an engine can be refit.
Definition: NvInferRuntime.h:3646
An IDimensionExpr represents an integer expression constructed from constants, input dimensions,...
Definition: NvInferRuntime.h:228
bool isConstant() const noexcept
Return true if expression is a build-time constant.
Definition: NvInferRuntime.h:233
bool isSizeTensor() const noexcept
Return true if this denotes the value of a size tensor.
Definition: NvInferRuntime.h:259
virtual ~IDimensionExpr() noexcept=0
apiv::VDimensionExpr * mImpl
Definition: NvInferRuntime.h:250
int64_t getConstantValue() const noexcept
Get the value of the constant.
Definition: NvInferRuntime.h:244
An engine inspector which prints out the layer information of an engine or an execution context.
Definition: NvInferRuntime.h:5327
char const * getLayerInformation(int32_t layerIndex, LayerInformationFormat format) const noexcept
Get a string describing the information about a specific layer in the current engine or the execution...
Definition: NvInferRuntime.h:5380
IErrorRecorder * getErrorRecorder() const noexcept
Get the ErrorRecorder assigned to this interface.
Definition: NvInferRuntime.h:5437
void setErrorRecorder(IErrorRecorder *recorder) noexcept
Set the ErrorRecorder for this interface.
Definition: NvInferRuntime.h:5422
virtual ~IEngineInspector() noexcept=0
IExecutionContext const * getExecutionContext() const noexcept
Get the context currently being inspected.
Definition: NvInferRuntime.h:5355
apiv::VEngineInspector * mImpl
Definition: NvInferRuntime.h:5443
char const * getEngineInformation(LayerInformationFormat format) const noexcept
Get a string describing the information about all the layers in the current engine or the execution c...
Definition: NvInferRuntime.h:5403
Context for executing inference using an engine, with functionally unsafe features.
Definition: NvInferRuntime.h:4357
IOutputAllocator * getOutputAllocator(char const *tensorName) const noexcept
Get output allocator associated with output tensor of given name, or nullptr if the provided name doe...
Definition: NvInferRuntime.h:4973
IErrorRecorder * getErrorRecorder() const noexcept
Get the ErrorRecorder assigned to this interface.
Definition: NvInferRuntime.h:4621
bool reportToProfiler() const noexcept
Calculate layer timing info for the current optimization profile in IExecutionContext and update the ...
Definition: NvInferRuntime.h:4740
void setDeviceMemory(void *memory) noexcept
Set the device memory for use by this execution context.
Definition: NvInferRuntime.h:4459
bool setTensorDebugState(char const *name, bool flag) noexcept
Set debug state of tensor given the tensor name.
Definition: NvInferRuntime.h:5180
char const * getName() const noexcept
Return the name of the execution context.
Definition: NvInferRuntime.h:4433
IGpuAllocator * getTemporaryStorageAllocator() const noexcept
Get allocator set by setTemporaryStorageAllocator.
Definition: NvInferRuntime.h:5021
void setEnqueueEmitsProfile(bool enqueueEmitsProfile) noexcept
Set whether enqueue emits layer timing to the profiler.
Definition: NvInferRuntime.h:4698
bool setUnfusedTensorsDebugState(bool flag) noexcept
Turn the debug state of unfused tensors on or off.
Definition: NvInferRuntime.h:5231
Dims getTensorShape(char const *tensorName) const noexcept
Return the shape of the given input or output.
Definition: NvInferRuntime.h:4571
bool getDebugState(char const *name) const noexcept
Get the debug state.
Definition: NvInferRuntime.h:5192
bool setInputShape(char const *tensorName, Dims const &dims) noexcept
Set shape of given input.
Definition: NvInferRuntime.h:4534
bool executeV2(void *const *bindings) noexcept
Synchronously execute a network.
Definition: NvInferRuntime.h:4638
bool getEnqueueEmitsProfile() const noexcept
Get the enqueueEmitsProfile state.
Definition: NvInferRuntime.h:4710
void const * getTensorAddress(char const *tensorName) const noexcept
Get memory address bound to given input or output tensor, or nullptr if the provided name does not ma...
Definition: NvInferRuntime.h:4801
bool setOutputAllocator(char const *tensorName, IOutputAllocator *outputAllocator) noexcept
Set output allocator to use for output tensor of given name. Pass nullptr to outputAllocator to unset...
Definition: NvInferRuntime.h:4960
bool setOptimizationProfileAsync(int32_t profileIndex, cudaStream_t stream) noexcept
Select an optimization profile for the current context with async semantics.
Definition: NvInferRuntime.h:4682
bool isStreamCapturable(cudaStream_t stream) const noexcept
Check if a subsequent call to enqueueV3 is graph-capturable on the provided stream.
Definition: NvInferRuntime.h:5263
apiv::VExecutionContext * mImpl
Definition: NvInferRuntime.h:5286
bool setOutputTensorAddress(char const *tensorName, void *data) noexcept
Set the memory address for a given output tensor.
Definition: NvInferRuntime.h:4824
void setPersistentCacheLimit(size_t size) noexcept
Set the maximum size for persistent cache usage.
Definition: NvInferRuntime.h:5061
virtual ~IExecutionContext() noexcept=0
size_t getPersistentCacheLimit() const noexcept
Get the maximum size for persistent cache usage.
Definition: NvInferRuntime.h:5072
bool setAllTensorsDebugState(bool flag) noexcept
Turn the debug state of all debug tensors on or off.
Definition: NvInferRuntime.h:5215
ICudaEngine const & getEngine() const noexcept
Get the associated engine.
Definition: NvInferRuntime.h:4409
ProfilingVerbosity getNvtxVerbosity() const noexcept
Get the NVTX verbosity of the execution context.
Definition: NvInferRuntime.h:5108
size_t updateDeviceMemorySizeForShapes() noexcept
Recompute the internal activation buffer sizes based on the current input shapes, and return the tota...
Definition: NvInferRuntime.h:4915
void setAuxStreams(cudaStream_t *auxStreams, int32_t nbStreams) noexcept
Set the auxiliary streams that TensorRT should launch kernels on in the next enqueueV3() call.
Definition: NvInferRuntime.h:5139
int64_t getMaxOutputSize(char const *tensorName) const noexcept
Get upper bound on an output tensor's size, in bytes, based on the current optimization profile and i...
Definition: NvInferRuntime.h:4991
int32_t inferShapes(int32_t nbMaxNames, char const **tensorNames) noexcept
Run shape calculations.
Definition: NvInferRuntime.h:4898
bool setDebugListener(IDebugListener *listener) noexcept
Set DebugListener for this execution context.
Definition: NvInferRuntime.h:5151
bool setTensorAddress(char const *tensorName, void *data) noexcept
Set memory address for given input or output tensor.
Definition: NvInferRuntime.h:4784
bool setTemporaryStorageAllocator(IGpuAllocator *allocator) noexcept
Specify allocator to use for internal temporary storage.
Definition: NvInferRuntime.h:5011
void * getOutputTensorAddress(char const *tensorName) const noexcept
Get memory address for given output.
Definition: NvInferRuntime.h:4865
bool enqueueV3(cudaStream_t stream) noexcept
Enqueue inference on a stream.
Definition: NvInferRuntime.h:5045
IDebugListener * getDebugListener() noexcept
Get the DebugListener of this execution context.
Definition: NvInferRuntime.h:5161
int32_t getOptimizationProfile() const noexcept
Get the index of the currently selected optimization profile.
Definition: NvInferRuntime.h:4516
bool setInputTensorAddress(char const *tensorName, void const *data) noexcept
Set memory address for given input.
Definition: NvInferRuntime.h:4846
bool getDebugSync() const noexcept
Get the debug sync flag.
Definition: NvInferRuntime.h:4379
bool setInputConsumedEvent(cudaEvent_t event) noexcept
Mark input as consumed.
Definition: NvInferRuntime.h:4931
Dims getTensorStrides(char const *tensorName) const noexcept
Return the strides of the buffer for the given tensor name.
Definition: NvInferRuntime.h:4501
bool setNvtxVerbosity(ProfilingVerbosity verbosity) noexcept
Set the verbosity of the NVTX markers in the execution context.
Definition: NvInferRuntime.h:5096
IProfiler * getProfiler() const noexcept
Get the profiler.
Definition: NvInferRuntime.h:4399
void setErrorRecorder(IErrorRecorder *recorder) noexcept
Set the ErrorRecorder for this interface.
Definition: NvInferRuntime.h:4606
bool setCommunicator(void *communicator) noexcept
Set the NCCL communicator for the execution context.
Definition: NvInferRuntime.h:5280
void setDeviceMemoryV2(void *memory, int64_t size) noexcept
Set the device memory and its corresponding size for use by this execution context.
Definition: NvInferRuntime.h:4480
bool allInputDimensionsSpecified() const noexcept
Whether all dynamic dimensions of input tensors have been specified.
Definition: NvInferRuntime.h:4587
bool getUnfusedTensorsDebugState() const noexcept
Get the debug state of unfused tensors.
Definition: NvInferRuntime.h:5241
void setProfiler(IProfiler *profiler) noexcept
Set the profiler.
Definition: NvInferRuntime.h:4389
void setName(char const *name) noexcept
Set the name of the execution context.
Definition: NvInferRuntime.h:4423
cudaEvent_t getInputConsumedEvent() const noexcept
The event associated with consuming the input.
Definition: NvInferRuntime.h:4941
IRuntimeConfig * getRuntimeConfig() const noexcept
Get the runtime config object used during execution context creation.
Definition: NvInferRuntime.h:5202
Object for constructing IDimensionExpr.
Definition: NvInferRuntime.h:285
IDimensionExpr const * operation(DimensionOperation op, IDimensionExpr const &first, IDimensionExpr const &second) noexcept
Get the operation.
Definition: NvInferRuntime.h:301
IDimensionExpr const * constant(int64_t value) noexcept
Return pointer to IDimensionExpr for given value.
Definition: NvInferRuntime.h:290
apiv::VExprBuilder * mImpl
Definition: NvInferRuntime.h:308
virtual ~IExprBuilder() noexcept=0
Class to handle library allocated memory that is accessible to the user.
Definition: NvInferRuntime.h:139
void * data() const noexcept
A pointer to the raw data that is owned by the library.
Definition: NvInferRuntime.h:144
virtual ~IHostMemory() noexcept=0
DataType type() const noexcept
The type of the memory that was allocated.
Definition: NvInferRuntime.h:156
std::size_t size() const noexcept
The size in bytes of the data that was allocated.
Definition: NvInferRuntime.h:150
apiv::VHostMemory * mImpl
Definition: NvInferRuntime.h:162
Forward declaration of IEngineInspector for use by other interfaces.
Definition: NvInferRuntime.h:51
INoCopy & operator=(INoCopy &&other)=delete
INoCopy(INoCopy const &other)=delete
INoCopy(INoCopy &&other)=delete
virtual ~INoCopy()=default
INoCopy & operator=(INoCopy const &other)=delete
Optimization profile for dynamic input dimensions and shape tensors.
Definition: NvInferRuntime.h:2695
apiv::VOptimizationProfile * mImpl
Definition: NvInferRuntime.h:2862
Dims getDimensions(char const *inputName, OptProfileSelector select) const noexcept
Get the minimum / optimum / maximum dimensions for a dynamic input tensor.
Definition: NvInferRuntime.h:2736
float getExtraMemoryTarget() const noexcept
Get the extra memory target that has been defined for this profile.
Definition: NvInferRuntime.h:2779
bool setExtraMemoryTarget(float target) noexcept
Set a target for extra GPU memory that may be used by this profile.
Definition: NvInferRuntime.h:2767
bool setDimensions(char const *inputName, OptProfileSelector select, Dims const &dims) noexcept
Set the minimum / optimum / maximum dimensions for a dynamic input tensor.
Definition: NvInferRuntime.h:2724
virtual ~IOptimizationProfile() noexcept=0
bool isValid() const noexcept
Check whether the optimization profile can be passed to an IBuilderConfig object.
Definition: NvInferRuntime.h:2796
int64_t const * getShapeValuesV2(char const *inputName, OptProfileSelector select) const noexcept
Get the minimum / optimum / maximum values for an input shape tensor.
Definition: NvInferRuntime.h:2856
bool setShapeValuesV2(char const *inputName, OptProfileSelector select, int64_t const *values, int32_t nbValues) noexcept
Set the minimum / optimum / maximum values for an input shape tensor.
Definition: NvInferRuntime.h:2843
int32_t getNbShapeValues(char const *inputName) const noexcept
Get the number of values for an input shape tensor.
Definition: NvInferRuntime.h:2749
Single registration point for all plugins in an application. It is used to find plugin implementation...
Definition: NvInferRuntimeCommon.h:56
virtual bool registerCreator(IPluginCreatorInterface &creator, AsciiChar const *const pluginNamespace) noexcept=0
Register a plugin creator. Returns false if a plugin creator with the same type is already registered...
Interface for plugins to access per context resources provided by TensorRT.
Definition: NvInferRuntime.h:792
virtual IErrorRecorder * getErrorRecorder() const noexcept=0
Get the error recorder associated with the resource context.
IPluginResourceContext & operator=(IPluginResourceContext const &) &=default
virtual IGpuAllocator * getGpuAllocator() const noexcept=0
Get the GPU allocator associated with the resource context.
Similar to IPluginV2Ext, but with support for dynamic shapes.
Definition: NvInferRuntime.h:407
IPluginV2DynamicExt * clone() const noexcept override=0
Clone the plugin object. This copies over internal plugin parameters as well and returns a new plugin...
virtual ~IPluginV2DynamicExt() noexcept
Definition: NvInferRuntime.h:556
Plugin class for user-implemented layers.
Definition: NvInferRuntimePlugin.h:474
Updates weights in an engine.
Definition: NvInferRuntime.h:2289
bool refitCudaEngineAsync(cudaStream_t stream) noexcept
Enqueue weights refitting of the associated engine on the given stream.
Definition: NvInferRuntime.h:2619
int32_t getMaxThreads() const noexcept
get the maximum number of threads that can be used by the refitter.
Definition: NvInferRuntime.h:2498
TensorLocation getWeightsLocation(char const *weightsName) const noexcept
Get location for the weights associated with the given name.
Definition: NvInferRuntime.h:2557
bool setNamedWeights(char const *name, Weights weights) noexcept
Specify new weights of given name.
Definition: NvInferRuntime.h:2422
int32_t getAllWeights(int32_t size, char const **weightsNames) noexcept
Get names of all weights that could be refit.
Definition: NvInferRuntime.h:2458
virtual ~IRefitter() noexcept=0
ILogger * getLogger() const noexcept
get the logger with which the refitter was created
Definition: NvInferRuntime.h:2468
bool refitCudaEngine() noexcept
Refits associated engine.
Definition: NvInferRuntime.h:2325
int32_t getMissingWeights(int32_t size, char const **weightsNames) noexcept
Get names of missing weights.
Definition: NvInferRuntime.h:2442
int32_t getMissing(int32_t size, char const **layerNames, WeightsRole *roles) noexcept
Get description of missing weights.
Definition: NvInferRuntime.h:2346
Weights getNamedWeights(char const *weightsName) const noexcept
Get weights associated with the given name.
Definition: NvInferRuntime.h:2541
bool unsetNamedWeights(char const *weightsName) noexcept
Unset weights associated with the given name.
Definition: NvInferRuntime.h:2573
Weights getWeightsPrototype(char const *weightsName) const noexcept
Get the Weights prototype associated with the given name.
Definition: NvInferRuntime.h:2637
bool setMaxThreads(int32_t maxThreads) noexcept
Set the maximum number of threads.
Definition: NvInferRuntime.h:2484
bool setNamedWeights(char const *name, Weights weights, TensorLocation location) noexcept
Specify new weights on a specified device of given name.
Definition: NvInferRuntime.h:2525
void setWeightsValidation(bool weightsValidation) noexcept
Set whether to validate weights during refitting.
Definition: NvInferRuntime.h:2589
apiv::VRefitter * mImpl
Definition: NvInferRuntime.h:2643
int32_t getAll(int32_t size, char const **layerNames, WeightsRole *roles) noexcept
Get description of all weights that could be refit.
Definition: NvInferRuntime.h:2363
bool getWeightsValidation() const noexcept
Get whether to validate weights values during refitting.
Definition: NvInferRuntime.h:2597
void setErrorRecorder(IErrorRecorder *recorder) noexcept
Set the ErrorRecorder for this interface.
Definition: NvInferRuntime.h:2382
IErrorRecorder * getErrorRecorder() const noexcept
Get the ErrorRecorder assigned to this interface.
Definition: NvInferRuntime.h:2397
A class for Runtime cache currently used for TensorRT JIT compilation. This cache can be serialized a...
Definition: NvInferRuntime.h:3070
bool deserialize(void const *blob, size_t size) noexcept
Deserialize the Runtime cache from a buffer that contains a serialized Runtime cache.
Definition: NvInferRuntime.h:3102
bool reset() noexcept
Reset the Runtime cache. Clears all content within the cache.
Definition: NvInferRuntime.h:3110
apiv::VRuntimeCache * mImpl
Definition: NvInferRuntime.h:3116
virtual ~IRuntimeCache() noexcept=0
A class for runtime configuration. This class is used during execution context creation.
Definition: NvInferRuntime.h:3200
bool setCudaGraphStrategy(CudaGraphStrategy strategy) noexcept
Set the strategy used for CUDA graphs for JIT (Just-In-Time) inference. Default is kDISABLED.
Definition: NvInferRuntime.h:3294
DynamicShapesKernelSpecializationStrategy getDynamicShapesKernelSpecializationStrategy() const noexcept
Return the dynamic shape specialization strategy of this config.
Definition: NvInferRuntime.h:3270
apiv::VRuntimeConfig * mImpl
Definition: NvInferRuntime.h:3310
IRuntimeCache * createRuntimeCache() const noexcept
Create an empty Runtime cache.
Definition: NvInferRuntime.h:3229
virtual ~IRuntimeConfig() noexcept=0
ExecutionContextAllocationStrategy getExecutionContextAllocationStrategy() const noexcept
Get the execution context allocation strategy.
Definition: NvInferRuntime.h:3219
bool setRuntimeCache(IRuntimeCache const &cache) noexcept
Set Runtime cache to the runtime config. Enables Runtime caching.
Definition: NvInferRuntime.h:3239
void setDynamicShapesKernelSpecializationStrategy(DynamicShapesKernelSpecializationStrategy dynamicShapesKernelSpecializationStrategy) noexcept
Set the dynamic shape kernel specialization strategy for this config.
Definition: NvInferRuntime.h:3259
IRuntimeCache * getRuntimeCache() const noexcept
Get the Runtime cache from the runtime config.
Definition: NvInferRuntime.h:3249
CudaGraphStrategy getCudaGraphStrategy() const noexcept
Return the strategy used for CUDA graphs for JIT (Just-In-Time) inference.
Definition: NvInferRuntime.h:3304
Allows a serialized functionally unsafe engine to be deserialized.
Definition: NvInferRuntime.h:1914
bool setMaxThreads(int32_t maxThreads) noexcept
Set the maximum number of threads.
Definition: NvInferRuntime.h:2063
IRuntime * loadRuntime(char const *path) noexcept
Load IRuntime from the file.
Definition: NvInferRuntime.h:2179
bool getEngineHostCodeAllowed() const noexcept
Get whether the runtime is allowed to deserialize engines with host executable code.
Definition: NvInferRuntime.h:2201
int64_t getEngineHeaderSize() const noexcept
Get size of engine header in bytes.
Definition: NvInferRuntime.h:2213
TempfileControlFlags getTempfileControlFlags() const noexcept
Get the tempfile control flags for this runtime.
Definition: NvInferRuntime.h:2151
void setEngineHostCodeAllowed(bool allowed) noexcept
Set whether the runtime is allowed to deserialize engines with host executable code.
Definition: NvInferRuntime.h:2191
void setTemporaryDirectory(char const *path) noexcept
Set the directory that will be used by this runtime for temporary files.
Definition: NvInferRuntime.h:2112
IPluginRegistry & getPluginRegistry() noexcept
Get the local plugin registry that can be used by the runtime.
Definition: NvInferRuntime.h:2161
int32_t getNbDLACores() const noexcept
Returns number of DLA hardware cores accessible or 0 if DLA is unavailable.
Definition: NvInferRuntime.h:1947
EngineValidity getEngineValidity(void const *blob, int64_t blobSize, uint64_t *diagnostics) const noexcept
Check for engine validity by inspecting the serialized engine header.
Definition: NvInferRuntime.h:2241
ICudaEngine * deserializeCudaEngine(void const *blob, std::size_t size) noexcept
Deserialize an engine from host memory.
Definition: NvInferRuntime.h:2015
virtual ~IRuntime() noexcept=0
void setTempfileControlFlags(TempfileControlFlags flags) noexcept
Set the tempfile control flags for this runtime.
Definition: NvInferRuntime.h:2139
int32_t getDLACore() const noexcept
Get the DLA core that the engine executes on.
Definition: NvInferRuntime.h:1939
void setGpuAllocator(IGpuAllocator *allocator) noexcept
Set the GPU allocator.
Definition: NvInferRuntime.h:1963
IErrorRecorder * getErrorRecorder() const noexcept
get the ErrorRecorder assigned to this interface.
Definition: NvInferRuntime.h:1997
ICudaEngine * deserializeCudaEngine(IStreamReaderV2 &streamReader)
Deserialize an engine from a stream. IStreamReaderV2 is expected to support reading to both host and ...
Definition: NvInferRuntime.h:2038
ILogger * getLogger() const noexcept
get the logger with which the runtime was created
Definition: NvInferRuntime.h:2048
int32_t getMaxThreads() const noexcept
Get the maximum number of threads that can be used by the runtime.
Definition: NvInferRuntime.h:2077
TRT_NODISCARD bool getDeferredWeightsLoading() const noexcept
Get the deferred-weight-loading flag.
Definition: NvInferRuntime.h:2269
char const * getTemporaryDirectory() const noexcept
Get the directory that will be used by this runtime for temporary files.
Definition: NvInferRuntime.h:2123
void setDeferredWeightsLoading(bool defer) noexcept
Defer GPU weight allocation during deserializeCudaEngine().
Definition: NvInferRuntime.h:2261
void setErrorRecorder(IErrorRecorder *recorder) noexcept
Set the ErrorRecorder for this interface.
Definition: NvInferRuntime.h:1982
Holds properties for configuring an engine to serialize the binary.
Definition: NvInferRuntime.h:2962
bool clearFlag(SerializationFlag serializationFlag) noexcept
clear a serialization flag.
Definition: NvInferRuntime.h:3001
virtual ~ISerializationConfig() noexcept=0
bool setFlag(SerializationFlag serializationFlag) noexcept
Set a serialization flag.
Definition: NvInferRuntime.h:3013
SerializationFlags getFlags() const noexcept
Get the serialization flags for this config.
Definition: NvInferRuntime.h:2989
bool getFlag(SerializationFlag serializationFlag) const noexcept
Returns true if the serialization flag is set.
Definition: NvInferRuntime.h:3025
apiv::VSerializationConfig * mImpl
Definition: NvInferRuntime.h:3031
An Interface class for version control.
Definition: NvInferRuntimeBase.h:282
Version information associated with a TRT interface.
Definition: NvInferRuntimeBase.h:247
Register the plugin creator to the registry The static registry object will be instantiated when the ...
Definition: NvInferRuntime.h:5515
PluginRegistrar()
Definition: NvInferRuntime.h:5517
An array of weights used as a layer parameter.
Definition: NvInferRuntime.h:121
DataType type
The type of the weights.
Definition: NvInferRuntime.h:123
int64_t count
The number of weights in the array.
Definition: NvInferRuntime.h:125
void const * values
The weight values, in a contiguous array.
Definition: NvInferRuntime.h:124
Definition: NvInferRuntime.h:4308
virtual bool processDebugTensor(void const *addr, TensorLocation location, DataType type, Dims const &shape, char const *name, cudaStream_t stream)=0
Callback function that is called when a debug tensor’s value is updated and the debug state of the te...
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:4313
~IDebugListener() override=default
Definition: NvInferRuntimeBase.h:419
Definition: NvInferRuntime.h:1652
virtual void * allocateAsync(uint64_t const size, uint64_t const alignment, AllocatorFlags const flags, cudaStream_t) noexcept
A thread-safe callback implemented by the application to handle stream-ordered acquisition of GPU mem...
Definition: NvInferRuntime.h:1774
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:1815
virtual TRT_DEPRECATED bool deallocate(void *const memory) noexcept=0
A thread-safe callback implemented by the application to handle release of GPU memory.
~IGpuAllocator() override=default
virtual void * reallocate(void *const, uint64_t, uint64_t) noexcept
A thread-safe callback implemented by the application to resize an existing allocation.
Definition: NvInferRuntime.h:1721
virtual TRT_DEPRECATED void * allocate(uint64_t const size, uint64_t const alignment, AllocatorFlags const flags) noexcept=0
A thread-safe callback implemented by the application to handle acquisition of GPU memory.
virtual bool deallocateAsync(void *const memory, cudaStream_t) noexcept
A thread-safe callback implemented by the application to handle stream-ordered release of GPU memory.
Definition: NvInferRuntime.h:1807
Definition: NvInferRuntime.h:5581
bool deallocateAsync(void *const memory, cudaStream_t) noexcept override=0
A thread-safe callback implemented by the application to handle stream-ordered asynchronous release o...
void * allocateAsync(uint64_t const size, uint64_t const alignment, AllocatorFlags const flags, cudaStream_t) noexcept override=0
A thread-safe callback implemented by the application to handle stream-ordered asynchronous acquisiti...
TRT_DEPRECATED void * allocate(uint64_t const size, uint64_t const alignment, AllocatorFlags const flags) noexcept override
A thread-safe callback implemented by the application to handle acquisition of GPU memory.
Definition: NvInferRuntime.h:5668
TRT_DEPRECATED bool deallocate(void *const memory) noexcept override
A thread-safe callback implemented by the application to handle release of GPU memory.
Definition: NvInferRuntime.h:5692
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:5700
~IGpuAsyncAllocator() override=default
A virtual base class to find a logger. Allows a plugin to find an instance of a logger if it needs to...
Definition: NvInferRuntime.h:5547
virtual ILogger * findLogger()=0
Get the logger used by the engine or execution context which called the plugin method.
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:5552
~ILoggerFinder() override=default
Protected: TRT owns ILoggerFinder instances and passes non-owning pointers to plugins.
Application-implemented logging interface for the builder, refitter and runtime.
Definition: NvInferRuntime.h:1575
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:1580
~ILogger() override=default
Severity
The severity corresponding to a log message.
Definition: NvInferRuntime.h:1591
virtual void log(Severity severity, AsciiChar const *msg) noexcept=0
A callback implemented by the application to handle logging messages;.
Definition: NvInferRuntime.h:4245
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:4250
virtual void * reallocateOutputAsync(char const *tensorName, void *currentMemory, uint64_t size, uint64_t alignment, cudaStream_t)
Return a pointer to memory for an output tensor, or nullptr if memory cannot be allocated....
Definition: NvInferRuntime.h:4277
virtual void notifyShape(char const *tensorName, Dims const &dims) noexcept=0
Called by TensorRT when the shape of the output tensor is known.
Definition: NvInferPluginBase.h:141
Definition: NvInferPluginBase.h:193
Definition: NvInferRuntime.h:5707
virtual PluginFieldCollection const * getFieldNames() noexcept=0
Return a list of fields that need to be passed to createPlugin() when creating a plugin for use in th...
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:5712
virtual IPluginV3 * createPlugin(AsciiChar const *name, PluginFieldCollection const *fc, TensorRTPhase phase) noexcept=0
Return a plugin object. Return nullptr in case of error.
Definition: NvInferPluginBase.h:206
Definition: NvInferRuntime.h:863
virtual int32_t getFormatCombinationLimit() noexcept
Return the maximum number of format combinations that will be timed by TensorRT during the build phas...
Definition: NvInferRuntime.h:1067
virtual int32_t getNbOutputs() const noexcept=0
Get the number of outputs from the plugin.
virtual int32_t configurePlugin(DynamicPluginTensorDesc const *in, int32_t nbInputs, DynamicPluginTensorDesc const *out, int32_t nbOutputs) noexcept=0
Configure the plugin.
virtual int32_t getNbTactics() noexcept
Query for the number of custom tactics the plugin intends to use.
Definition: NvInferRuntime.h:1043
virtual char const * getMetadataString() noexcept
Query for a string representing the configuration of the plugin. May be called anytime after plugin c...
Definition: NvInferRuntime.h:1078
virtual char const * getTimingCacheID() noexcept
Called to query the suffix to use for the timing cache ID. May be called anytime after plugin creatio...
Definition: NvInferRuntime.h:1059
virtual bool supportsFormatCombination(int32_t pos, DynamicPluginTensorDesc const *inOut, int32_t nbInputs, int32_t nbOutputs) noexcept=0
Return true if plugin supports the format and datatype for the input/output indexed by pos.
virtual int32_t getValidTactics(int32_t *, int32_t) noexcept
Query for any custom tactics that the plugin intends to use.
Definition: NvInferRuntime.h:1035
virtual int32_t getOutputDataTypes(DataType *outputTypes, int32_t nbOutputs, const DataType *inputTypes, int32_t nbInputs) const noexcept=0
Provide the data types of the plugin outputs if the input tensors have the data types provided.
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:875
virtual int32_t getOutputShapes(DimsExprs const *inputs, int32_t nbInputs, DimsExprs const *shapeInputs, int32_t nbShapeInputs, DimsExprs *outputs, int32_t nbOutputs, IExprBuilder &exprBuilder) noexcept=0
Provide expressions for computing dimensions of the output tensors from dimensions of the input tenso...
Definition: NvInferRuntime.h:820
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:825
virtual AsciiChar const * getPluginName() const noexcept=0
Return the plugin name. Should match the plugin name returned by the corresponding plugin creator.
Definition: NvInferRuntime.h:1085
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:1090
virtual int32_t onShapeChange(PluginTensorDesc const *in, int32_t nbInputs, PluginTensorDesc const *out, int32_t nbOutputs) noexcept=0
Called when a plugin is being prepared for execution for specific dimensions. This could happen multi...
virtual PluginFieldCollection const * getFieldsToSerialize() noexcept=0
Get the plugin fields which should be serialized.
virtual int32_t setTactic(int32_t) noexcept
Set the tactic to be used in the subsequent call to enqueue(). If no custom tactics were advertised,...
Definition: NvInferRuntime.h:1102
virtual int32_t enqueue(PluginTensorDesc const *inputDesc, PluginTensorDesc const *outputDesc, void const *const *inputs, void *const *outputs, void *workspace, cudaStream_t stream) noexcept=0
Execute the layer.
virtual IPluginV3 * attachToContext(IPluginResourceContext *context) noexcept=0
Clone the plugin, attach the cloned plugin object to a execution context and grant the cloned plugin ...
Definition: NvInferRuntime.h:1275
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:1280
~IProfiler() override=default
virtual void reportLayerTime(char const *layerName, float ms) noexcept=0
Layer time reporting callback.
Definition: NvInferRuntime.h:608
~IStreamReader() override=default
IStreamReader & operator=(IStreamReader const &) &=default
IStreamReader & operator=(IStreamReader &&) &=default
virtual int64_t read(void *destination, int64_t nbBytes)=0
Read the next number of bytes in the stream.
IStreamReader(IStreamReader &&)=default
IStreamReader(IStreamReader const &)=default
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:620
Definition: NvInferRuntime.h:720
IStreamReaderV2 & operator=(IStreamReaderV2 const &) &=default
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:732
IStreamReaderV2(IStreamReaderV2 &&)=default
~IStreamReaderV2() override=default
virtual int64_t read(void *destination, int64_t nbBytes, cudaStream_t stream) noexcept=0
Read the next number of bytes in the stream asynchronously.
IStreamReaderV2(IStreamReaderV2 const &)=default
virtual bool seek(int64_t offset, SeekPosition where) noexcept=0
Sets the position of the stream to the given offset.
IStreamReaderV2 & operator=(IStreamReaderV2 &&) &=default
Definition: NvInferRuntime.h:643
IStreamWriter & operator=(IStreamWriter const &) &=default
IStreamWriter(IStreamWriter &&)=default
virtual int64_t write(void const *data, int64_t nbBytes)=0
write nbBytes of data into the stream.
IStreamWriter(IStreamWriter const &)=default
IStreamWriter & operator=(IStreamWriter &&) &=default
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:655
~IStreamWriter() override=default
Definition: NvInferRuntime.h:1182
InterfaceInfo getInterfaceInfo() const noexcept override
Return version information associated with this interface. Applications must not override this method...
Definition: NvInferRuntime.h:1184
virtual int32_t getAliasedInput(int32_t) noexcept
Communicates to TensorRT that the output at the specified output index is aliased to the input at the...
Definition: NvInferRuntime.h:1218
IRefitter * createInferRefitter(ICudaEngine &engine, ILogger &logger) noexcept
Create an instance of an IRefitter class.
Definition: NvInferRuntime.h:5495
IRuntime * createInferRuntime(ILogger &logger) noexcept
Create an instance of an IRuntime class.
Definition: NvInferRuntime.h:5484
The TensorRT API version 1 namespace.
Definition: NvInferPluginBase.h:29
uint32_t TacticSources
Represents a collection of one or more TacticSource values combine using bitwise-OR operations.
Definition: NvInferRuntime.h:2900
v_1_0::IOutputAllocator IOutputAllocator
Definition: NvInferRuntime.h:4303
EngineCapability
List of supported engine capability flows.
Definition: NvInferRuntime.h:76
DimensionOperation
An operation on two IDimensionExpr, which represent integer expressions used in dimension computation...
Definition: NvInferRuntime.h:178
@ kCEIL_DIV
Division rounding up.
v_1_0::IPluginV3OneCore IPluginV3OneCore
Definition: NvInferRuntime.h:1235
EngineInvalidityDiagnostics
Bitmask indicating the reason(s) why an engine is invalid.
Definition: NvInferRuntime.h:1882
@ kUNSUPPORTED_CC
Unsupported compute capability on current system.
@ kMALFORMED_ENGINE
Serialized engine does not conform to the expected format.
@ kINSUFFICIENT_GPU_MEMORY
Insufficient GPU memory to hold all engine weights.
@ kCUDA_ERROR
Incorrect installation of the CUDA driver or runtime.
@ kOLD_CUDA_DRIVER
CUDA driver too old (driver downgrade compared to when engine was built).
@ kOLD_CUDA_RUNTIME
CUDA runtime too old (runtime downgrade compared to when engine was built).
@ kVERSION_MISMATCH
TensorRT-RTX version mismatch to when engine was built.
TensorIOMode
Definition of tensor IO Mode.
Definition: NvInferRuntimeBase.h:662
@ kNONE
Tensor is not an input or output.
HardwareCompatibilityLevel
Describes requirements of compatibility with GPU architectures other than that of the GPU on which th...
Definition: NvInfer.h:10298
SerializationFlag
List of valid flags that the engine can enable when serializing the bytes.
Definition: NvInferRuntime.h:2941
@ kEXCLUDE_WEIGHTS
Exclude the weights that can be refitted.
@ kINCLUDE_REFIT
Remain refittable if originally so.
v_1_0::IStreamWriter IStreamWriter
Definition: NvInferRuntime.h:699
v_1_0::IProfiler IProfiler
Definition: NvInferRuntime.h:1309
DynamicShapesKernelSpecializationStrategy
Different kernel specialization strategies for dynamic shapes.
Definition: NvInferRuntime.h:3133
SeekPosition
Controls the seek mode of IStreamReaderV2.
Definition: NvInferRuntime.h:706
@ kSET
From the beginning of the file.
@ kCUR
From the current position of the file.
@ kEND
From the tail of the file.
v_1_0::IStreamReaderV2 IStreamReaderV2
Definition: NvInferRuntime.h:776
uint32_t TempfileControlFlags
Represents a collection of one or more TempfileControlFlag values combined using bitwise-OR operation...
Definition: NvInferRuntime.h:1387
EngineStat
The kind of engine statistics that queried from the ICudaEngine.
Definition: NvInferRuntime.h:3324
@ kTOTAL_WEIGHTS_SIZE
Return the total weight size in bytes.
@ kSTRIPPED_WEIGHTS_SIZE
Return the stripped weight size in bytes for engines built with BuilderFlag::kSTRIP_PLAN.
CudaGraphStrategy
Strategies available for CUDA graphs optimizations for JIT (Just-In-Time) inference.
Definition: NvInferRuntime.h:3169
v_1_0::IGpuAllocator IGpuAllocator
Definition: NvInferRuntime.h:1851
EngineValidity
Whether a TensorRT-RTX engine is likely to be valid on the current system.
Definition: NvInferRuntime.h:1859
@ kINVALID
Engine is invalid on the current system.
@ kSUBOPTIMAL
Engine is likely to be valid on the current system, but may show reduced performance.
@ kVALID
Engine is likely to be valid on the current system, based on the information in the header.
v_1_0::ILogger ILogger
Definition: NvInferRuntimeBase.h:125
char_t AsciiChar
Definition: NvInferRuntimeBase.h:116
TensorRTPhase
Indicates a phase of operation of TensorRT.
Definition: NvInferPluginBase.h:116
@ kV2_DYNAMICEXT
IPluginV2DynamicExt.
DataType
The type of weights and tensors. The datatypes other than kBOOL, kINT32, and kINT64 are "activation d...
Definition: NvInferRuntimeBase.h:149
DeviceType
The device that this layer/network will execute on.
Definition: NvInferRuntime.h:1341
@ kSCALE
Scale layer.
@ kCONSTANT
Constant layer.
v_1_0::IDebugListener IDebugListener
Definition: NvInferRuntime.h:4344
TempfileControlFlag
Flags used to control TensorRT's behavior when creating executable temporary files.
Definition: NvInferRuntime.h:1364
@ kALLOW_IN_MEMORY_FILES
Allow creating and loading files in-memory (or unnamed files).
WeightsRole
How a layer uses particular Weights.
Definition: NvInferRuntime.h:1319
@ kSHIFT
shift part of IScaleLayer
@ kANY
Any other weights role.
@ kBIAS
bias for IConvolutionLayer or IDeconvolutionLayer
@ kKERNEL
kernel for IConvolutionLayer or IDeconvolutionLayer
ProfilingVerbosity
List of verbosity levels of layer information exposed in NVTX annotations and in IEngineInspector.
Definition: NvInferRuntime.h:2912
@ kLAYER_NAMES_ONLY
Print only the layer names. This is the default setting.
@ kDETAILED
Print detailed layer information including layer names and layer parameters.
TacticSource
List of tactic sources for TensorRT.
Definition: NvInferRuntime.h:2876
TensorFormat PluginFormat
PluginFormat is reserved for backward compatibility.
Definition: NvInferRuntimePlugin.h:54
v_1_0::IPluginV3OneRuntime IPluginV3OneRuntime
Definition: NvInferRuntime.h:1259
@ kSUB
Subtract the second element from the first.
@ kSUM
Sum of the two elements.
@ kPROD
Product of the two elements.
@ kFLOOR_DIV
Floor division of the first element by the second.
@ kEQUAL
Check if two elements are equal.
@ kMIN
Minimum of the two elements.
@ kLESS
Check if element in first tensor is less than corresponding element in second tensor.
uint32_t SerializationFlags
Represents one or more SerializationFlag values using binary OR operations, e.g., 1U << Serialization...
Definition: NvInferRuntime.h:2931
@ kLINEAR
Supports linear (1D), bilinear (2D), and trilinear (3D) interpolation.
v_1_0::IPluginV3OneBuild IPluginV3OneBuild
Definition: NvInferRuntime.h:1247
TensorFormat
Format of the input/output tensors.
Definition: NvInferRuntime.h:1421
ExecutionContextAllocationStrategy
Different memory allocation behaviors for IExecutionContext.
Definition: NvInferRuntime.h:3048
@ kSTATIC
Default static allocation with the maximum size across all profiles.
@ kUSER_MANAGED
The user supplies custom allocation to the execution context.
@ kON_PROFILE_CHANGE
Reallocate for a profile when it's selected.
v_1_0::ILoggerFinder ILoggerFinder
Definition: NvInferRuntime.h:5573
LayerInformationFormat
The format in which the IEngineInspector prints the layer information.
Definition: NvInferRuntime.h:5299
@ kJSON
Print layer information in JSON format.
@ kONELINE
Print layer information in one line per layer.
v_1_0::IStreamReader IStreamReader
Definition: NvInferRuntime.h:689
AllocatorFlag
Allowed type of memory allocation.
Definition: NvInferRuntime.h:1542
@ kRESIZABLE
TensorRT may call realloc() on this allocation.
@ kMAX
Maximum over elements.
TensorLocation
The location for tensor data storage, device or host.
Definition: NvInferRuntime.h:203
@ kHOST
Data stored on host.
@ kDEVICE
Data stored on device.
OptProfileSelector
When setting or querying optimization profile parameters (such as shape tensor inputs or dynamic dime...
Definition: NvInferRuntime.h:2659
@ kOPT
This is used to set or get the value that is used in the optimization (kernel selection).
uint32_t AllocatorFlags
Definition: NvInferRuntime.h:1555
Summarizes tensors that a plugin might see for an input or output.
Definition: NvInferRuntime.h:362
Dims min
Lower bounds on tensor’s dimensions.
Definition: NvInferRuntime.h:367
Dims max
Upper bounds on tensor’s dimensions.
Definition: NvInferRuntime.h:370
Dims opt
Optimum value of tensor’s dimensions specified for auto-tuning.
Definition: NvInferRuntime.h:373
PluginTensorDesc desc
Information required to interpret a pointer to tensor data, except that desc.dims has -1 in place of ...
Definition: NvInferRuntime.h:364
Plugin field collection struct.
Definition: NvInferPluginBase.h:103
Fields that a plugin might see for an input or output.
Definition: NvInferRuntimePlugin.h:73
Declaration of EnumMaxImpl struct to store the exclusive upper bound of an enumeration type.
Definition: NvInferRuntimeBase.h:131

  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