TensorRT 10.8.0
NvInferImpl.h
前往此文件的文档。
1/*
2 * SPDX-FileCopyrightText: 版权所有 (c) 1993-2024 NVIDIA CORPORATION & AFFILIATES。保留所有权利。
3 * SPDX-License-Identifier: Apache-2.0
4 *
5 * 根据 Apache 许可证 2.0 版本(“许可证”)获得许可;
6 * 除非遵守许可证的规定,否则您不得使用此文件。
7 * 您可以在以下位置获取许可证副本:
8 *
9 * https://apache.ac.cn/licenses/LICENSE-2.0
10 *
11 * 除非适用法律要求或书面同意,否则
12 * 根据许可证分发的软件是按“现状”基础分发的,
13 * 不附带任何形式的明示或暗示的保证或条件。
14 * 有关管理权限和
15 * 许可证下的限制的具体语言,请参阅许可证。
16 */
17
18#ifndef NV_INFER_IMPL_H
19#define NV_INFER_IMPL_H
20
21#include "NvInferLegacyDims.h"
23
24// @cond SuppressDoxyWarnings
25
26namespace nvinfer1
27{
28
29class ILogger;
30
31namespace v_1_0
32{
34}
36
37namespace v_1_0
38{
40}
42
43namespace v_1_0
44{
45class IProfiler;
46}
48
49namespace v_1_0
50{
52}
54
55namespace v_1_0
56{
57class IDebugListener;
58}
60
61class IActivationLayer;
62class IAlgorithm;
63class IAlgorithmContext;
64class IAlgorithmIOInfo;
65class IAlgorithmVariant;
66class IAssertionLayer;
67class IBuilder;
68class IBuilderConfig;
69class IConcatenationLayer;
70class IConditionLayer;
71class IConstantLayer;
72class IConvolutionLayer;
73class ICudaEngine;
74class ICumulativeLayer;
75class IDeconvolutionLayer;
76class IDequantizeLayer;
77class IDimensionExpr;
78class IDynamicQuantizeLayer;
79class IEinsumLayer;
80class IElementWiseLayer;
81class IEngineInspector;
82class IExecutionContext;
83class IFillLayer;
84class IGatherLayer;
85class IGridSampleLayer;
86class IHostMemory;
87class IIdentityLayer;
88class ICastLayer;
89class IIfConditional;
90class IIfConditionalInputLayer;
91class IIfConditionalOutputLayer;
92class IInt8Calibrator;
93class IIteratorLayer;
94class ILayer;
95class ILoop;
96class ILoopOutputLayer;
97class ILRNLayer;
98class IMatrixMultiplyLayer;
99class INetworkDefinition;
100class INormalizationLayer;
101class INMSLayer;
102class INonZeroLayer;
103class IOneHotLayer;
104class IOptimizationProfile;
105class IPaddingLayer;
106class IParametricReLULayer;
107class IPlugin;
108class IPluginExt;
109class IPluginFactory;
110class IPluginLayer;
111class IPluginRegistry;
112class IPluginV2Layer;
113
114namespace v_1_0
115{
116class IPluginV3;
117} // namespace v_1_0
119
120namespace v_1_0
121{
122class IStreamReader;
123} // namespace v_1_0
125namespace v_1_0
126{
127class IStreamReaderV2;
128} // namespace v_1_0
130
131class IPluginV3Layer;
132class IPoolingLayer;
133class IQuantizeLayer;
134class IRaggedSoftMaxLayer;
135class IRecurrenceLayer;
136class IReduceLayer;
137class IRefitter;
138class IResizeLayer;
139class IReverseSequenceLayer;
140class IRuntime;
141class IScaleLayer;
142class IScatterLayer;
143class ISelectLayer;
144class ISerializationConfig;
145class IShapeLayer;
146class IShuffleLayer;
147class ISliceLayer;
148class ISoftMaxLayer;
149class ISqueezeLayer;
150class ITensor;
151
152namespace v_1_0
153{
154struct TimingCacheKey;
155struct TimingCacheValue;
156} // namespace v_1_0
157using TimingCacheKey = v_1_0::TimingCacheKey;
158using TimingCacheValue = v_1_0::TimingCacheValue;
159
160class ITimingCache;
161class ITopKLayer;
162class ITripLimitLayer;
163class IUnaryLayer;
164class IUnsqueezeLayer;
165struct Permutation;
166class Weights;
167
168enum class ActivationType : int32_t;
169enum class BoundingBoxFormat : int32_t;
170enum class BuilderFlag : int32_t;
171enum class CalibrationAlgoType : int32_t;
172enum class CumulativeOperation : int32_t;
173enum class DeviceType : int32_t;
174enum class DimensionOperation : int32_t;
175enum class ElementWiseOperation : int32_t;
176enum class EngineCapability : int32_t;
177enum class FillOperation : int32_t;
178enum class GatherMode : int32_t;
179enum class LayerInformationFormat : int32_t;
180enum class LayerType : int32_t;
181enum class LoopOutput : int32_t;
182enum class MatrixOperation : int32_t;
183enum class MemoryPoolType : int32_t;
184enum class NetworkDefinitionCreationFlag : int32_t;
185enum class OptProfileSelector : int32_t;
186enum class PaddingMode : int32_t;
187enum class PoolingType : int32_t;
188enum class ProfilingVerbosity : int32_t;
189enum class QuantizationFlag : int32_t;
190enum class ReduceOperation : int32_t;
191enum class ResizeCoordinateTransformation : int32_t;
192enum class InterpolationMode : int32_t;
193enum class ResizeRoundMode : int32_t;
194enum class ResizeSelector : int32_t;
195enum class ScaleMode : int32_t;
196enum class ScatterMode : int32_t;
197enum class SampleMode : int32_t;
198enum class SerializationFlag : int32_t;
199enum class TensorIOMode : int32_t;
200enum class TensorLocation : int32_t;
201enum class TopKOperation : int32_t;
202enum class TripLimit : int32_t;
203enum class UnaryOperation : int32_t;
204enum class WeightsRole : int32_t;
205enum class PreviewFeature : int32_t;
206enum class HardwareCompatibilityLevel : int32_t;
207enum class ExecutionContextAllocationStrategy : int32_t;
208enum class RuntimePlatform : int32_t;
209enum class TilingOptimizationLevel : int32_t;
210
211using TacticSources = uint32_t;
212using TensorFormats = uint32_t;
213using BuilderFlags = uint32_t;
214using NetworkDefinitionCreationFlags = uint32_t;
215using QuantizationFlags = uint32_t;
216using TempfileControlFlags = uint32_t;
217using SerializationFlags = uint32_t;
218
226
227namespace apiv
228{
229
230class VRoot
231{
232public
233 virtual ~VRoot() noexcept = default;
234};
235
236class VHostMemory : public VRoot
237{
238public
239 virtual void* data() const noexcept = 0;
240 virtual std::size_t size() const noexcept = 0;
241 virtual DataType type() const noexcept = 0;
242};
243
244class VDimensionExpr : public VRoot
245{
246public
247 virtual bool isConstant() const = 0;
248 virtual int64_t getConstantValue() const = 0;
249 virtual bool isSizeTensor() const = 0;
250};
251
252class VExprBuilder : public VRoot
253{
254public
255 virtual IDimensionExpr const* constant(int64_t value) = 0;
256 virtual IDimensionExpr const* operation(
257 DimensionOperation op, IDimensionExpr const& first, IDimensionExpr const& second)
258 = 0;
259 virtual IDimensionExpr const* declareSizeTensor(
260 int32_t outputIndex, IDimensionExpr const& opt, IDimensionExpr const& upper)
261 = 0;
262};
263
264class VRuntime : public VRoot
265{
266public
267 virtual IRuntime* getPImpl() noexcept = 0;
268 virtual nvinfer1::ICudaEngine* deserializeCudaEngine(void const* blob, std::size_t size) noexcept = 0;
269 virtual nvinfer1::ICudaEngine* deserializeCudaEngine(IStreamReader& streamReader) noexcept = 0;
270 virtual void setDLACore(int32_t dlaCore) noexcept = 0;
271 virtual int32_t getDLACore() const noexcept = 0;
272 virtual int32_t getNbDLACores() const noexcept = 0;
273 virtual void setGpuAllocator(IGpuAllocator* allocator) noexcept = 0;
274 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
275 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
276 virtual ILogger* getLogger() const noexcept = 0;
277 virtual bool setMaxThreads(int32_t maxThreads) noexcept = 0;
278 virtual int32_t getMaxThreads() const noexcept = 0;
279 virtual void setTemporaryDirectory(char const*) noexcept = 0;
280 virtual char const* getTemporaryDirectory() const noexcept = 0;
281 virtual void setTempfileControlFlags(TempfileControlFlags) noexcept = 0;
282 virtual TempfileControlFlags getTempfileControlFlags() const noexcept = 0;
283 virtual IPluginRegistry& getPluginRegistry() noexcept = 0;
284 virtual void setPluginRegistryParent(IPluginRegistry* parent) noexcept = 0;
285 virtual IRuntime* loadRuntime(char const* path) noexcept = 0;
286 virtual void setEngineHostCodeAllowed(bool allowed) noexcept = 0;
287 virtual bool getEngineHostCodeAllowed() const noexcept = 0;
288 // Added in TensorRT version 10.7
289 virtual nvinfer1::ICudaEngine* deserializeCudaEngineV2(IStreamReaderV2& streamReader) noexcept = 0;
290};
291
292class VRefitter : public VRoot
293{
294public
295 virtual IRefitter* getPImpl() noexcept = 0;
296 virtual bool setWeights(char const* layerName, WeightsRole role, const Weights weights) noexcept = 0;
297 virtual bool refitCudaEngine() noexcept = 0;
298 virtual int32_t getMissing(int32_t size, char const** layerNames, WeightsRole* roles) noexcept = 0;
299 virtual int32_t getAll(int32_t size, char const** layerNames, WeightsRole* roles) noexcept = 0;
300 virtual bool setDynamicRange(char const* tensorName, float min, float max) noexcept = 0;
301 virtual float getDynamicRangeMin(char const* tensorName) const noexcept = 0;
302 virtual float getDynamicRangeMax(char const* tensorName) const noexcept = 0;
303 virtual int32_t getTensorsWithDynamicRange(int32_t size, char const** tensorNames) const noexcept = 0;
304 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
305 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
306 virtual bool setNamedWeights(char const* name, Weights weights) noexcept = 0;
307 virtual int32_t getMissingWeights(int32_t size, char const** weightsNames) noexcept = 0;
308 virtual int32_t getAllWeights(int32_t size, char const** weightsNames) noexcept = 0;
309 virtual ILogger* getLogger() const noexcept = 0;
310 virtual bool setMaxThreads(int32_t maxThreads) noexcept = 0;
311 virtual int32_t getMaxThreads() const noexcept = 0;
312 virtual bool setNamedWeightsWithLocation(char const* name, Weights weights, TensorLocation location) noexcept = 0;
313 virtual Weights getNamedWeights(char const* weightsName) const noexcept = 0;
314 virtual TensorLocation getWeightsLocation(char const* weightsName) const noexcept = 0;
315 virtual bool unsetNamedWeights(char const* weightsName) noexcept = 0;
316 virtual void setWeightsValidation(bool weightsValidation) noexcept = 0;
317 virtual bool getWeightsValidation() const noexcept = 0;
318 virtual bool refitCudaEngineAsync(cudaStream_t stream) noexcept = 0;
319 virtual Weights getWeightsPrototype(char const* weightsName) const noexcept = 0;
320};
321
322class VOptimizationProfile : public VRoot
323{
324public
325 virtual bool setDimensions(char const* inputName, OptProfileSelector select, Dims const& dims) noexcept = 0;
326 virtual Dims getDimensions(char const* inputName, OptProfileSelector select) const noexcept = 0;
327 virtual bool setShapeValues(
328 char const* inputName, OptProfileSelector select, int32_t const* values, int32_t nbValues) noexcept = 0;
329 virtual int32_t getNbShapeValues(char const* inputName) const noexcept = 0;
330 virtual int32_t const* getShapeValues(char const* inputName, OptProfileSelector select) const noexcept = 0;
331 virtual bool setExtraMemoryTarget(float target) noexcept = 0;
332 virtual float getExtraMemoryTarget() const noexcept = 0;
333 virtual bool isValid() const noexcept = 0;
334};
335
336class VCudaEngine : public VRoot
337{
338public
339 virtual ICudaEngine* getPImpl() noexcept = 0;
340 virtual int32_t getNbLayers() const noexcept = 0;
341 virtual IHostMemory* serialize() const noexcept = 0;
342 virtual IExecutionContext* createExecutionContext(ExecutionContextAllocationStrategy strategy) noexcept = 0;
343 virtual IExecutionContext* createExecutionContextWithoutDeviceMemory() noexcept = 0;
344 virtual size_t getDeviceMemorySize() const noexcept = 0;
345 virtual bool isRefittable() const noexcept = 0;
346 virtual char const* getName() const noexcept = 0;
347 virtual int32_t getNbOptimizationProfiles() const noexcept = 0;
348 virtual int32_t const* getProfileTensorValues(
349 char const* tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept = 0;
350 virtual EngineCapability getEngineCapability() const noexcept = 0;
351 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
352 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
353 virtual bool hasImplicitBatchDimension() const noexcept = 0;
354 virtual TacticSources getTacticSources() const noexcept = 0;
355 virtual ProfilingVerbosity getProfilingVerbosity() const noexcept = 0;
356 virtual IEngineInspector* createEngineInspector() const noexcept = 0;
357 virtual Dims getTensorShape(char const* tensorName) const noexcept = 0;
358 virtual DataType getTensorDataType(char const* tensorName) const noexcept = 0;
359 virtual TensorLocation getTensorLocation(char const* tensorName) const noexcept = 0;
360 virtual bool isShapeInferenceIO(char const* tensorName) const noexcept = 0;
361 virtual TensorIOMode getTensorIOMode(char const* tensorName) const noexcept = 0;
362 virtual int32_t getTensorBytesPerComponent(char const* tensorName) const noexcept = 0;
363 virtual int32_t getTensorComponentsPerElement(char const* tensorName) const noexcept = 0;
364 virtual TensorFormat getTensorFormat(char const* tensorName) const noexcept = 0;
365 virtual char const* getTensorFormatDesc(char const* tensorName) const noexcept = 0;
366 virtual int32_t getTensorVectorizedDim(char const* tensorName) const noexcept = 0;
367 virtual Dims getProfileShape(
368 char const* tensorName, int32_t profileIndex, OptProfileSelector select) const noexcept = 0;
369 virtual int32_t getNbIOTensors() const noexcept = 0;
370 virtual char const* getIOTensorName(int32_t index) const noexcept = 0;
371 virtual HardwareCompatibilityLevel getHardwareCompatibilityLevel() const noexcept = 0;
372 virtual int32_t getNbAuxStreams() const noexcept = 0;
373
374 virtual int32_t getTensorBytesPerComponentV2(char const* tensorName, int32_t profileIndex) const noexcept = 0;
375 virtual int32_t getTensorComponentsPerElementV2(char const* tensorName, int32_t profileIndex) const noexcept = 0;
376 virtual TensorFormat getTensorFormatV2(char const* tensorName, int32_t profileIndex) const noexcept = 0;
377 virtual char const* getTensorFormatDescV2(char const* tensorName, int32_t profileIndex) const noexcept = 0;
378 virtual int32_t getTensorVectorizedDimV2(char const* tensorName, int32_t profileIndex) const noexcept = 0;
379
380 virtual ISerializationConfig* createSerializationConfig() noexcept = 0;
381 virtual IHostMemory* serializeWithConfig(ISerializationConfig& config) const noexcept = 0;
382
383 virtual size_t getDeviceMemorySizeForProfile(int32_t profileIndex) const noexcept = 0;
384 virtual IRefitter* createRefitter(ILogger& logger) noexcept = 0;
385
386 virtual bool setWeightStreamingBudget(int64_t gpuMemoryBudget) noexcept = 0;
387 virtual int64_t getWeightStreamingBudget() const noexcept = 0;
388 virtual int64_t getMinimumWeightStreamingBudget() const noexcept = 0;
389 virtual int64_t getStreamableWeightsSize() const noexcept = 0;
390
391 virtual bool isDebugTensor(char const* name) const noexcept = 0;
392
393 // TensorRT 10.1 中新增
394 virtual bool setWeightStreamingBudgetV2(int64_t gpuMemoryBudget) noexcept = 0;
395 virtual int64_t getWeightStreamingBudgetV2() const noexcept = 0;
396 virtual int64_t getWeightStreamingAutomaticBudget() const noexcept = 0;
397 virtual int64_t getWeightStreamingScratchMemorySize() const noexcept = 0;
398 virtual int64_t getDeviceMemorySizeV2() const noexcept = 0;
399 virtual int64_t getDeviceMemorySizeForProfileV2(int32_t profileIndex) const noexcept = 0;
400};
401
402class VExecutionContext : public VRoot
403{
404public
405 virtual IExecutionContext* getPImpl() noexcept = 0;
406 virtual void setDebugSync(bool sync) noexcept = 0;
407 virtual bool getDebugSync() const noexcept = 0;
408 virtual void setProfiler(IProfiler*) noexcept = 0;
409 virtual IProfiler* getProfiler() const noexcept = 0;
410 virtual ICudaEngine const& getEngine() const noexcept = 0;
411 virtual void setName(char const* name) noexcept = 0;
412 virtual char const* getName() const noexcept = 0;
413 virtual void setDeviceMemory(void* memory) noexcept = 0;
414 virtual int32_t getOptimizationProfile() const noexcept = 0;
415 virtual bool allInputDimensionsSpecified() const noexcept = 0;
416 virtual bool allInputShapesSpecified() const noexcept = 0;
417 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
418 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
419 virtual bool executeV2(void* const* bindings) noexcept = 0;
420 virtual bool setOptimizationProfileAsync(int32_t profileIndex, cudaStream_t stream) noexcept = 0;
421 virtual void setEnqueueEmitsProfile(bool enqueueEmitsProfile) noexcept = 0;
422 virtual bool getEnqueueEmitsProfile() const noexcept = 0;
423 virtual bool reportToProfiler() const noexcept = 0;
424 virtual bool setInputShape(char const* tensorName, Dims const& dims) noexcept = 0;
425 virtual Dims getTensorShape(char const* tensorName) const noexcept = 0;
426 virtual Dims getTensorStrides(char const* tensorName) const noexcept = 0;
427 virtual bool setTensorAddress(char const* tensorName, void* data) noexcept = 0;
428 virtual void const* getTensorAddress(char const* tensorName) const noexcept = 0;
429 virtual bool setInputTensorAddress(char const* tensorName, void const* data) noexcept = 0;
430 virtual bool setOutputTensorAddress(char const* tensorName, void* data) noexcept = 0;
431 virtual int32_t inferShapes(int32_t nbMaxNames, char const** tensorNames) noexcept = 0;
432 virtual bool setInputConsumedEvent(cudaEvent_t event) noexcept = 0;
433 virtual cudaEvent_t getInputConsumedEvent() const noexcept = 0;
434 virtual void* getOutputTensorAddress(char const* tensorName) const noexcept = 0;
435 virtual bool setOutputAllocator(char const* tensorName, IOutputAllocator* outputAllocator) noexcept = 0;
436 virtual IOutputAllocator* getOutputAllocator(char const* name) noexcept = 0;
437 virtual int64_t getMaxOutputSize(char const* tensorName) const noexcept = 0;
438 virtual bool setTemporaryStorageAllocator(IGpuAllocator* allocator) noexcept = 0;
439 virtual IGpuAllocator* getTemporaryStorageAllocator() const noexcept = 0;
440 virtual bool enqueueV3(cudaStream_t stream) noexcept = 0;
441 virtual void setPersistentCacheLimit(size_t size) noexcept = 0;
442 virtual size_t getPersistentCacheLimit() const noexcept = 0;
443 virtual bool setNvtxVerbosity(ProfilingVerbosity verbosity) noexcept = 0;
444 virtual ProfilingVerbosity getNvtxVerbosity() const noexcept = 0;
445 virtual void setAuxStreams(cudaStream_t* auxStreams, int32_t nbStreams) noexcept = 0;
446 virtual bool setDebugListener(IDebugListener* listener) noexcept = 0;
447 virtual IDebugListener* getDebugListener() noexcept = 0;
448 virtual bool setTensorDebugState(char const* name, bool flag) noexcept = 0;
449 virtual bool getDebugState(char const* name) const noexcept = 0;
450 virtual bool setAllTensorsDebugState(bool flag) noexcept = 0;
451 virtual size_t updateDeviceMemorySizeForShapes() noexcept = 0;
452
453 // TensorRT 10.1 中新增
454 virtual void setDeviceMemoryV2(void* memory, int64_t size) noexcept = 0;
455};
456
457class VEngineInspector : public VRoot
458{
459public
460 virtual IEngineInspector* getPImpl() noexcept = 0;
461 virtual bool setExecutionContext(IExecutionContext const* context) noexcept = 0;
462 virtual IExecutionContext const* getExecutionContext() const noexcept = 0;
463 virtual char const* getLayerInformation(int32_t layerIndex, LayerInformationFormat format) const noexcept = 0;
464 virtual char const* getEngineInformation(LayerInformationFormat format) const noexcept = 0;
465 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
466 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
467};
468
469class VTensor : public VRoot
470{
471public
472 virtual void setName(char const* name) noexcept = 0;
473 virtual char const* getName() const noexcept = 0;
474 virtual void setDimensions(Dims const& dimensions) noexcept = 0;
475 virtual Dims getDimensions() const noexcept = 0;
476 virtual void setType(DataType type) noexcept = 0;
477 virtual DataType getType() const noexcept = 0;
478 virtual bool setDynamicRange(float min, float max) noexcept = 0;
479 virtual bool isNetworkInput() const noexcept = 0;
480 virtual bool isNetworkOutput() const noexcept = 0;
481 virtual void setBroadcastAcrossBatch(bool broadcastAcrossBatch) noexcept = 0;
482 virtual bool getBroadcastAcrossBatch() const noexcept = 0;
483 virtual TensorLocation getLocation() const noexcept = 0;
484 virtual void setLocation(TensorLocation location) noexcept = 0;
485 virtual bool dynamicRangeIsSet() const noexcept = 0;
486 virtual void resetDynamicRange() noexcept = 0;
487 virtual float getDynamicRangeMin() const noexcept = 0;
488 virtual float getDynamicRangeMax() const noexcept = 0;
489 virtual void setAllowedFormats(TensorFormats formats) noexcept = 0;
490 virtual TensorFormats getAllowedFormats() const noexcept = 0;
491 virtual bool isShapeTensor() const noexcept = 0;
492 virtual bool isExecutionTensor() const noexcept = 0;
493 virtual void setDimensionName(int32_t index, char const* name) noexcept = 0;
494 virtual char const* getDimensionName(int32_t index) const noexcept = 0;
495};
496class VLayer : public VRoot
497{
498public
499 virtual LayerType getType() const noexcept = 0;
500 virtual void setName(char const* name) noexcept = 0;
501 virtual char const* getName() const noexcept = 0;
502 virtual int32_t getNbInputs() const noexcept = 0;
503 virtual ITensor* getInput(int32_t index) const noexcept = 0;
504 virtual int32_t getNbOutputs() const noexcept = 0;
505 virtual ITensor* getOutput(int32_t index) const noexcept = 0;
506 virtual void setInput(int32_t index, ITensor& tensor) noexcept = 0;
507 virtual void setPrecision(DataType dataType) noexcept = 0;
508 virtual DataType getPrecision() const noexcept = 0;
509 virtual bool precisionIsSet() const noexcept = 0;
510 virtual void resetPrecision() noexcept = 0;
511 virtual void setOutputType(int32_t index, DataType dataType) noexcept = 0;
512 virtual DataType getOutputType(int32_t index) const noexcept = 0;
513 virtual bool outputTypeIsSet(int32_t index) const noexcept = 0;
514 virtual void resetOutputType(int32_t index) noexcept = 0;
515 virtual void setMetadata(char const* docString) noexcept = 0;
516 virtual char const* getMetadata() const noexcept = 0;
517};
518
519class VConvolutionLayer : public VRoot
520{
521public
522 virtual void setNbOutputMaps(int64_t nbOutputMaps) noexcept = 0;
523 virtual int64_t getNbOutputMaps() const noexcept = 0;
524 virtual void setNbGroups(int64_t nbGroups) noexcept = 0;
525 virtual int64_t getNbGroups() const noexcept = 0;
526 virtual void setKernelWeights(Weights weights) noexcept = 0;
527 virtual Weights getKernelWeights() const noexcept = 0;
528 virtual void setBiasWeights(Weights weights) noexcept = 0;
529 virtual Weights getBiasWeights() const noexcept = 0;
530 virtual void setPrePadding(Dims const& padding) noexcept = 0;
531 virtual Dims getPrePadding() const noexcept = 0;
532 virtual void setPostPadding(Dims const& padding) noexcept = 0;
533 virtual Dims getPostPadding() const noexcept = 0;
534 virtual void setPaddingMode(PaddingMode paddingMode) noexcept = 0;
535 virtual PaddingMode getPaddingMode() const noexcept = 0;
536 virtual void setKernelSizeNd(Dims const& kernelSize) noexcept = 0;
537 virtual Dims getKernelSizeNd() const noexcept = 0;
538 virtual void setStrideNd(Dims const& stride) noexcept = 0;
539 virtual Dims getStrideNd() const noexcept = 0;
540 virtual void setPaddingNd(Dims const& padding) noexcept = 0;
541 virtual Dims getPaddingNd() const noexcept = 0;
542 virtual void setDilationNd(Dims const& dilation) noexcept = 0;
543 virtual Dims getDilationNd() const noexcept = 0;
544};
545
546class VActivationLayer : public VRoot
547{
548public
549 virtual void setActivationType(ActivationType type) noexcept = 0;
550 virtual ActivationType getActivationType() const noexcept = 0;
551 virtual void setAlpha(float alpha) noexcept = 0;
552 virtual void setBeta(float beta) noexcept = 0;
553 virtual float getAlpha() const noexcept = 0;
554 virtual float getBeta() const noexcept = 0;
555};
556
557class VPoolingLayer : public VRoot
558{
559public
560 virtual void setPoolingType(PoolingType type) noexcept = 0;
561 virtual PoolingType getPoolingType() const noexcept = 0;
562 virtual void setBlendFactor(float blendFactor) noexcept = 0;
563 virtual float getBlendFactor() const noexcept = 0;
564 virtual void setAverageCountExcludesPadding(bool exclusive) noexcept = 0;
565 virtual bool getAverageCountExcludesPadding() const noexcept = 0;
566 virtual void setPrePadding(Dims const& padding) noexcept = 0;
567 virtual Dims getPrePadding() const noexcept = 0;
568 virtual void setPostPadding(Dims const& padding) noexcept = 0;
569 virtual Dims getPostPadding() const noexcept = 0;
570 virtual void setPaddingMode(PaddingMode paddingMode) noexcept = 0;
571 virtual PaddingMode getPaddingMode() const noexcept = 0;
572 virtual void setWindowSizeNd(Dims const& windowSize) noexcept = 0;
573 virtual Dims getWindowSizeNd() const noexcept = 0;
574 virtual void setStrideNd(Dims const& stride) noexcept = 0;
575 virtual Dims getStrideNd() const noexcept = 0;
576 virtual void setPaddingNd(Dims const& padding) noexcept = 0;
577 virtual Dims getPaddingNd() const noexcept = 0;
578};
579
580class VLRNLayer : public VRoot
581{
582public
583 virtual void setWindowSize(int64_t windowSize) noexcept = 0;
584 virtual int64_t getWindowSize() const noexcept = 0;
585 virtual void setAlpha(float alpha) noexcept = 0;
586 virtual float getAlpha() const noexcept = 0;
587 virtual void setBeta(float beta) noexcept = 0;
588 virtual float getBeta() const noexcept = 0;
589 virtual void setK(float k) noexcept = 0;
590 virtual float getK() const noexcept = 0;
591};
592
593class VScaleLayer : public VRoot
594{
595public
596 virtual void setMode(ScaleMode mode) noexcept = 0;
597 virtual ScaleMode getMode() const noexcept = 0;
598 virtual void setShift(Weights shift) noexcept = 0;
599 virtual Weights getShift() const noexcept = 0;
600 virtual void setScale(Weights scale) noexcept = 0;
601 virtual Weights getScale() const noexcept = 0;
602 virtual void setPower(Weights power) noexcept = 0;
603 virtual Weights getPower() const noexcept = 0;
604 virtual int32_t getChannelAxis() const noexcept = 0;
605 virtual void setChannelAxis(int32_t channelAxis) noexcept = 0;
606};
607
608class VSoftMaxLayer : public VRoot
609{
610public
611 virtual void setAxes(uint32_t axes) noexcept = 0;
612 virtual uint32_t getAxes() const noexcept = 0;
613};
614
615class VConcatenationLayer : public VRoot
616{
617public
618 virtual void setAxis(int32_t axis) noexcept = 0;
619 virtual int32_t getAxis() const noexcept = 0;
620};
621
622class VDeconvolutionLayer : public VRoot
623{
624public
625 virtual void setNbOutputMaps(int64_t nbOutputMaps) noexcept = 0;
626 virtual int64_t getNbOutputMaps() const noexcept = 0;
627 virtual void setNbGroups(int64_t nbGroups) noexcept = 0;
628 virtual int64_t getNbGroups() const noexcept = 0;
629 virtual void setKernelWeights(Weights weights) noexcept = 0;
630 virtual Weights getKernelWeights() const noexcept = 0;
631 virtual void setBiasWeights(Weights weights) noexcept = 0;
632 virtual Weights getBiasWeights() const noexcept = 0;
633 virtual void setPrePadding(Dims const& padding) noexcept = 0;
634 virtual Dims getPrePadding() const noexcept = 0;
635 virtual void setPostPadding(Dims const& padding) noexcept = 0;
636 virtual Dims getPostPadding() const noexcept = 0;
637 virtual void setPaddingMode(PaddingMode paddingMode) noexcept = 0;
638 virtual PaddingMode getPaddingMode() const noexcept = 0;
639 virtual void setKernelSizeNd(Dims const& kernelSize) noexcept = 0;
640 virtual Dims getKernelSizeNd() const noexcept = 0;
641 virtual void setStrideNd(Dims const& stride) noexcept = 0;
642 virtual Dims getStrideNd() const noexcept = 0;
643 virtual void setPaddingNd(Dims const& padding) noexcept = 0;
644 virtual Dims getPaddingNd() const noexcept = 0;
645 virtual void setDilationNd(Dims const& dilation) noexcept = 0;
646 virtual Dims getDilationNd() const noexcept = 0;
647};
648
649class VElementWiseLayer : public VRoot
650{
651public
652 virtual void setOperation(ElementWiseOperation op) noexcept = 0;
653 virtual ElementWiseOperation getOperation() const noexcept = 0;
654};
655
656class VGatherLayer : public VRoot
657{
658public
659 virtual void setGatherAxis(int32_t axis) noexcept = 0;
660 virtual int32_t getGatherAxis() const noexcept = 0;
661 virtual void setNbElementWiseDims(int32_t k) noexcept = 0;
662 virtual int32_t getNbElementWiseDims() const noexcept = 0;
663 virtual void setMode(GatherMode mode) noexcept = 0;
664 virtual GatherMode getMode() const noexcept = 0;
665};
666
667class VPluginLayer : public VRoot
668{
669public
670 virtual IPlugin& getPlugin() noexcept = 0;
671};
672
673class VPluginV2Layer : public VRoot
674{
675public
676 virtual IPluginV2& getPlugin() noexcept = 0;
677};
678
679class VPluginV3Layer : public VRoot
680{
681public
682 virtual IPluginV3& getPlugin() noexcept = 0;
683};
684
685class VUnaryLayer : public VRoot
686{
687public
688 virtual void setOperation(UnaryOperation op) noexcept = 0;
689 virtual UnaryOperation getOperation() const noexcept = 0;
690};
691
692class VReduceLayer : public VRoot
693{
694public
695 virtual void setOperation(ReduceOperation op) noexcept = 0;
696 virtual ReduceOperation getOperation() const noexcept = 0;
697 virtual void setReduceAxes(uint32_t reduceAxes) noexcept = 0;
698 virtual uint32_t getReduceAxes() const noexcept = 0;
699 virtual void setKeepDimensions(bool keepDimensions) noexcept = 0;
700 virtual bool getKeepDimensions() const noexcept = 0;
701};
702
703class VPaddingLayer : public VRoot
704{
705public
706 virtual void setPrePaddingNd(Dims const& padding) noexcept = 0;
707 virtual Dims getPrePaddingNd() const noexcept = 0;
708 virtual void setPostPaddingNd(Dims const& padding) noexcept = 0;
709 virtual Dims getPostPaddingNd() const noexcept = 0;
710};
711
712class VShuffleLayer : public VRoot
713{
714public
715 virtual void setFirstTranspose(Permutation const& permutation) noexcept = 0;
716 virtual Permutation const& getFirstTranspose() const noexcept = 0;
717 virtual void setReshapeDimensions(Dims const& dimensions) noexcept = 0;
718 virtual Dims getReshapeDimensions() const noexcept = 0;
719 virtual void setSecondTranspose(Permutation const& permutation) noexcept = 0;
720 virtual Permutation const& getSecondTranspose() const noexcept = 0;
721 virtual void setZeroIsPlaceholder(bool zeroIsPlaceholder) noexcept = 0;
722 virtual bool getZeroIsPlaceholder() const noexcept = 0;
723};
724
725class VSliceLayer : public VRoot
726{
727public
728 virtual void setStart(Dims const& start) noexcept = 0;
729 virtual Dims getStart() const noexcept = 0;
730 virtual void setSize(Dims const& size) noexcept = 0;
731 virtual Dims getSize() const noexcept = 0;
732 virtual void setStride(Dims const& stride) noexcept = 0;
733 virtual Dims getStride() const noexcept = 0;
734 virtual void setMode(SampleMode mode) noexcept = 0;
735 virtual SampleMode getMode() const noexcept = 0;
736 virtual void setAxes(Dims const& axes) noexcept = 0;
737 virtual Dims getAxes() const noexcept = 0;
738};
739
740class VShapeLayer : public VRoot
741{
742public
743};
744
745class VTopKLayer : public VRoot
746{
747public
748 virtual void setOperation(TopKOperation op) noexcept = 0;
749 virtual TopKOperation getOperation() const noexcept = 0;
750 virtual void setK(int32_t k) noexcept = 0;
751 virtual int32_t getK() const noexcept = 0;
752 virtual void setReduceAxes(uint32_t reduceAxes) noexcept = 0;
753 virtual uint32_t getReduceAxes() const noexcept = 0;
754};
755
756class VMatrixMultiplyLayer : public VRoot
757{
758public
759 virtual void setOperation(int32_t index, MatrixOperation op) noexcept = 0;
760 virtual MatrixOperation getOperation(int32_t index) const noexcept = 0;
761};
762
763class VNonZeroLayer : public VRoot
764{
765public
766};
767
768class VRaggedSoftMaxLayer : public VRoot
769{
770public
771};
772
773class VIdentityLayer : public VRoot
774{
775public
776};
777
778class VCastLayer : public VRoot
779{
780public
781 virtual void setToType(DataType toType) noexcept = 0;
782 virtual DataType getToType() const noexcept = 0;
783};
784
785class VConstantLayer : public VRoot
786{
787public
788 virtual void setWeights(Weights weights) noexcept = 0;
789 virtual Weights getWeights() const noexcept = 0;
790 virtual void setDimensions(Dims const& dimensions) noexcept = 0;
791 virtual Dims getDimensions() const noexcept = 0;
792};
793
794class VParametricReLULayer : public VRoot
795{
796public
797};
798
799class VResizeLayer : public VRoot
800{
801public
802 virtual void setOutputDimensions(Dims const& dimensions) noexcept = 0;
803 virtual Dims getOutputDimensions() const noexcept = 0;
804 virtual void setScales(float const* scales, int32_t nbScales) noexcept = 0;
805 virtual int32_t getScales(int32_t size, float* scales) const noexcept = 0;
806 virtual void setResizeMode(InterpolationMode interpolationMode) noexcept = 0;
807 virtual InterpolationMode getResizeMode() const noexcept = 0;
808 virtual void setCoordinateTransformation(ResizeCoordinateTransformation coordTransform) noexcept = 0;
809 virtual ResizeCoordinateTransformation getCoordinateTransformation() const noexcept = 0;
810 virtual void setSelectorForSinglePixel(ResizeSelector selector) noexcept = 0;
811 virtual ResizeSelector getSelectorForSinglePixel() const noexcept = 0;
812 virtual void setNearestRounding(ResizeRoundMode value) noexcept = 0;
813 virtual ResizeRoundMode getNearestRounding() const noexcept = 0;
814 virtual void setCubicCoeff(float value) noexcept = 0;
815 virtual float getCubicCoeff() const noexcept = 0;
816 virtual void setExcludeOutside(bool value) noexcept = 0;
817 virtual bool getExcludeOutside() const noexcept = 0;
818};
819
820class VLoopBoundaryLayer : public VRoot
821{
822public
823 virtual ILoop* getLoop() const noexcept = 0;
824};
825
826class VRecurrenceLayer : public VRoot
827{
828public
829};
830
831class VLoopOutputLayer : public VRoot
832{
833public
834 virtual LoopOutput getLoopOutput() const noexcept = 0;
835 virtual void setAxis(int32_t axis) noexcept = 0;
836 virtual int32_t getAxis() const noexcept = 0;
837};
838
839class VTripLimitLayer : public VRoot
840{
841public
842 virtual TripLimit getTripLimit() const noexcept = 0;
843};
844
845class VIteratorLayer : public VRoot
846{
847public
848 virtual void setAxis(int32_t axis) noexcept = 0;
849 virtual int32_t getAxis() const noexcept = 0;
850 virtual void setReverse(bool reverse) noexcept = 0;
851 virtual bool getReverse() const noexcept = 0;
852};
853class VLoop : public VRoot
854{
855public
856 virtual IRecurrenceLayer* addRecurrence(ITensor& initialValue) noexcept = 0;
857 virtual ITripLimitLayer* addTripLimit(ITensor& tensor, TripLimit limit) noexcept = 0;
858 virtual IIteratorLayer* addIterator(ITensor& tensor, int32_t axis = 0, bool reverse = false) noexcept = 0;
859 virtual ILoopOutputLayer* addLoopOutput(ITensor& tensor, LoopOutput outputKind, int32_t axis = 0) noexcept = 0;
860 virtual void setName(char const* name) noexcept = 0;
861 virtual char const* getName() const noexcept = 0;
862};
863
864class VConditionalBoundaryLayer : public VRoot
865{
866public
867 virtual IIfConditional* getConditional() const noexcept = 0;
868};
869
870class VConditionLayer : public VRoot
871{
872public
873};
874
875class VConditionalInputLayer : public VRoot
876{
877public
878};
879
880class VConditionalOutputLayer : public VRoot
881{
882public
883};
884
885class VIfConditional : public VRoot
886{
887public
888 virtual IConditionLayer* setCondition(ITensor& tensor) noexcept = 0;
889 virtual IIfConditionalInputLayer* addInput(ITensor& tensor) noexcept = 0;
890 virtual IIfConditionalOutputLayer* addOutput(ITensor& trueTensor, ITensor& falseTensor) noexcept = 0;
891 virtual void setName(char const* name) noexcept = 0;
892 virtual char const* getName() const noexcept = 0;
893};
894
895class VSelectLayer : public VRoot
896{
897};
898
899class VAssertionLayer : public VRoot
900{
901public
902 virtual void setMessage(char const* message) noexcept = 0;
903 virtual char const* getMessage() const noexcept = 0;
904};
905
906class VFillLayer : public VRoot
907{
908public
909 virtual void setDimensions(Dims const& dimensions) noexcept = 0;
910 virtual Dims getDimensions() const noexcept = 0;
911 virtual void setOperation(FillOperation op) noexcept = 0;
912 virtual FillOperation getOperation() const noexcept = 0;
913 virtual void setAlpha(double alpha) noexcept = 0;
914 virtual double getAlpha() const noexcept = 0;
915 virtual void setBeta(double beta) noexcept = 0;
916 virtual double getBeta() const noexcept = 0;
917 virtual void setAlphaInt64(int64_t alpha) noexcept = 0;
918 virtual int64_t getAlphaInt64() const noexcept = 0;
919 virtual void setBetaInt64(int64_t beta) noexcept = 0;
920 virtual int64_t getBetaInt64() const noexcept = 0;
921 virtual bool isAlphaBetaInt64() const noexcept = 0;
922 virtual DataType getToType() const noexcept = 0;
923 virtual void setToType(DataType toType) noexcept = 0;
924};
925
926class VQuantizeLayer : public VRoot
927{
928public
929 virtual int32_t getAxis() const noexcept = 0;
930 virtual void setAxis(int32_t axis) noexcept = 0;
931 virtual DataType getToType() const noexcept = 0;
932 virtual void setToType(DataType toType) noexcept = 0;
933};
934
935class VDequantizeLayer : public VRoot
936{
937public
938 virtual int32_t getAxis() const noexcept = 0;
939 virtual void setAxis(int32_t axis) noexcept = 0;
940 virtual DataType getToType() const noexcept = 0;
941 virtual void setToType(DataType toType) noexcept = 0;
942};
943
944class VDynamicQuantizeLayer : public VRoot
945{
946public
947 virtual int32_t getAxis() const noexcept = 0;
948 virtual void setAxis(int32_t axis) noexcept = 0;
949 virtual int32_t getBlockSize() const noexcept = 0;
950 virtual void setBlockSize(int32_t axis) noexcept = 0;
951 virtual DataType getScaleType() const noexcept = 0;
952 virtual void setScaleType(DataType axis) noexcept = 0;
953 virtual DataType getToType() const noexcept = 0;
954 virtual void setToType(DataType toType) noexcept = 0;
955};
956
957class VScatterLayer : public VRoot
958{
959public
960 virtual void setMode(ScatterMode mode) noexcept = 0;
961 virtual ScatterMode getMode() const noexcept = 0;
962 virtual void setAxis(int32_t axis) noexcept = 0;
963 virtual int32_t getAxis() const noexcept = 0;
964}; // class VScatterLayer 类
965
966class VEinsumLayer : public VRoot
967{
968public
969 virtual bool setEquation(char const* equation) noexcept = 0;
970 virtual char const* getEquation() const noexcept = 0;
971};
972
973class VOneHotLayer : public VRoot
974{
975public
976 virtual int32_t getAxis() const noexcept = 0;
977 virtual void setAxis(int32_t axis) noexcept = 0;
978}; // class VOneHotLayer 类
979
980class VGridSampleLayer : public VRoot
981{
982public
983 virtual void setInterpolationMode(InterpolationMode mode) noexcept = 0;
984 virtual InterpolationMode getInterpolationMode() const noexcept = 0;
985 virtual void setAlignCorners(bool alignCorners) noexcept = 0;
986 virtual bool getAlignCorners() const noexcept = 0;
987 virtual bool setSampleMode(SampleMode mode) noexcept = 0;
988 virtual SampleMode getSampleMode() const noexcept = 0;
989}; // class VGridSampleLayer 类
990
991class VNMSLayer : public VRoot
992{
993public
994 virtual void setBoundingBoxFormat(BoundingBoxFormat fmt) noexcept = 0;
995 virtual BoundingBoxFormat getBoundingBoxFormat() const noexcept = 0;
996 virtual void setTopKBoxLimit(int32_t limit) noexcept = 0;
997 virtual int32_t getTopKBoxLimit() const noexcept = 0;
998}; // class VNMSLayer 类
999
1000class VReverseSequenceLayer : public VRoot
1001{
1002public
1003 virtual void setBatchAxis(int32_t batchAxis) noexcept = 0;
1004 virtual int32_t getBatchAxis() const noexcept = 0;
1005
1006 virtual void setSequenceAxis(int32_t sequenceAxis) noexcept = 0;
1007 virtual int32_t getSequenceAxis() const noexcept = 0;
1008}; // class VReverseSequenceLayer 类
1009
1010class VNormalizationLayer : public VRoot
1011{
1012public
1013 virtual void setEpsilon(float eps) noexcept = 0;
1014 virtual float getEpsilon() const noexcept = 0;
1015 virtual void setAxes(uint32_t axesMask) noexcept = 0;
1016 virtual uint32_t getAxes() const noexcept = 0;
1017 virtual void setNbGroups(int64_t nbGroups) noexcept = 0;
1018 virtual int64_t getNbGroups() const noexcept = 0;
1019 virtual void setComputePrecision(DataType type) noexcept = 0;
1020 virtual DataType getComputePrecision() const noexcept = 0;
1021}; // class VNormalizationLayer 类
1022
1023class VSqueezeLayer : public VRoot
1024{
1025};
1026
1027class VUnsqueezeLayer : public VRoot
1028{
1029};
1030
1031class VCumulativeLayer : public VRoot
1032{
1033public
1034 virtual bool setOperation(CumulativeOperation op) noexcept = 0;
1035 virtual CumulativeOperation getOperation() const noexcept = 0;
1036 virtual void setExclusive(bool exclusive) noexcept = 0;
1037 virtual bool getExclusive() const noexcept = 0;
1038 virtual void setReverse(bool reverse) noexcept = 0;
1039 virtual bool getReverse() const noexcept = 0;
1040}; // class VCumulativeLayer 类
1041
1042class VNetworkDefinition : public VRoot
1043{
1044public
1045 virtual ITensor* addInput(char const* name, DataType type, Dims const& dimensions) noexcept = 0;
1046 virtual void markOutput(ITensor& tensor) noexcept = 0;
1047 virtual IActivationLayer* addActivation(ITensor& input, ActivationType type) noexcept = 0;
1048 virtual ILRNLayer* addLRN(ITensor& input, int64_t window, float alpha, float beta, float k) noexcept = 0;
1049 virtual IScaleLayer* addScale(
1050 ITensor& input, ScaleMode mode, Weights shift, Weights scale, Weights power) noexcept = 0;
1051 virtual ISoftMaxLayer* addSoftMax(ITensor& input) noexcept = 0;
1052 virtual IConcatenationLayer* addConcatenation(ITensor* const* inputs, int32_t nbInputs) noexcept = 0;
1053 virtual IElementWiseLayer* addElementWise(ITensor& input1, ITensor& input2, ElementWiseOperation op) noexcept = 0;
1054 virtual IUnaryLayer* addUnary(ITensor& input, UnaryOperation operation) noexcept = 0;
1055 virtual IShuffleLayer* addShuffle(ITensor& input) noexcept = 0;
1056 virtual int32_t getNbLayers() const noexcept = 0;
1057 virtual ILayer* getLayer(int32_t index) const noexcept = 0;
1058 virtual int32_t getNbInputs() const noexcept = 0;
1059 virtual ITensor* getInput(int32_t index) const noexcept = 0;
1060 virtual int32_t getNbOutputs() const noexcept = 0;
1061 virtual ITensor* getOutput(int32_t index) const noexcept = 0;
1062 virtual IReduceLayer* addReduce(
1063 ITensor& input, ReduceOperation operation, uint32_t reduceAxes, bool keepDimensions) noexcept
1064 = 0;
1065 virtual ITopKLayer* addTopK(ITensor& input, TopKOperation op, int32_t k, uint32_t reduceAxes) noexcept = 0;
1066 virtual IGatherLayer* addGather(ITensor& data, ITensor& indices, int32_t axis) noexcept = 0;
1067 virtual IRaggedSoftMaxLayer* addRaggedSoftMax(ITensor& input, ITensor& bounds) noexcept = 0;
1068 virtual IMatrixMultiplyLayer* addMatrixMultiply(
1069 ITensor& input0, MatrixOperation op0, ITensor& input1, MatrixOperation op1) noexcept = 0;
1070 virtual IConstantLayer* addConstant(Dims const& dimensions, Weights weights) noexcept = 0;
1071 virtual IIdentityLayer* addIdentity(ITensor& input) noexcept = 0;
1072 virtual void removeTensor(ITensor& tensor) noexcept = 0;
1073 virtual void unmarkOutput(ITensor& tensor) noexcept = 0;
1074 virtual IPluginV2Layer* addPluginV2(ITensor* const* inputs, int32_t nbInputs, IPluginV2& plugin) noexcept = 0;
1075 virtual IPluginV3Layer* addPluginV3(ITensor* const* inputs, int32_t nbInputs, ITensor* const* shapeInputs,
1076 int32_t nbShapeInputs, IPluginV3& plugin) noexcept = 0;
1077 virtual ISliceLayer* addSlice(ITensor& input, Dims const& start, Dims const& size, Dims const& stride) noexcept = 0;
1078 virtual void setName(char const* name) noexcept = 0;
1079 virtual char const* getName() const noexcept = 0;
1080 virtual IShapeLayer* addShape(ITensor& input) noexcept = 0;
1081 virtual bool hasImplicitBatchDimension() const noexcept = 0;
1082 virtual bool markOutputForShapes(ITensor& tensor) noexcept = 0;
1183 virtual bool unmarkOutputForShapes(ITensor& tensor) noexcept = 0;
1184 virtual IParametricReLULayer* addParametricReLU(ITensor& input, ITensor& slope) noexcept = 0;
1185 virtual IConvolutionLayer* addConvolutionNd(
1186 ITensor& input, int64_t nbOutputMaps, Dims const& kernelSize, Weights kernelWeights, Weights biasWeights) noexcept
1087 = 0;
1188 virtual IPoolingLayer* addPoolingNd(ITensor& input, PoolingType type, Dims const& windowSize) noexcept = 0;
1189 virtual IDeconvolutionLayer* addDeconvolutionNd(
1090 ITensor& input, int64_t nbOutputMaps, Dims const& kernelSize, Weights kernelWeights, Weights biasWeights) noexcept
1091 = 0;
1092 virtual IScaleLayer* addScaleNd(
1093 ITensor& input, ScaleMode mode, Weights shift, Weights scale, Weights power, int32_t channelAxis) noexcept = 0;
1094 virtual IResizeLayer* addResize(ITensor& input) noexcept = 0;
1095 virtual ILoop* addLoop() noexcept = 0;
1096 virtual ISelectLayer* addSelect(ITensor& condition, ITensor& thenInput, ITensor& elseInput) noexcept = 0;
1097 virtual IFillLayer* addFill(Dims const& dimensions, FillOperation op) noexcept = 0;
1098 virtual IPaddingLayer* addPaddingNd(ITensor& input, Dims const& prePadding, Dims const& postPadding) noexcept = 0;
1099 virtual bool setWeightsName(Weights weights, char const* name) noexcept = 0;
1100 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
1101 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
1102 virtual IDequantizeLayer* addDequantize(ITensor& input, ITensor& scale) noexcept = 0;
1103 virtual IQuantizeLayer* addQuantize(ITensor& input, ITensor& scale) noexcept = 0;
1104 virtual IGatherLayer* addGatherV2(ITensor& data, ITensor& indices, GatherMode mode) noexcept = 0;
1105 virtual IIfConditional* addIfConditional() noexcept = 0;
1106 virtual IScatterLayer* addScatter(ITensor& data, ITensor& indices, ITensor& updates, ScatterMode mode) noexcept = 0;
1107 virtual IEinsumLayer* addEinsum(ITensor* const* inputs, int32_t nbInputs, char const* equation) noexcept = 0;
1108 virtual IAssertionLayer* addAssertion(ITensor& condition, char const* message) noexcept = 0;
1109 virtual IOneHotLayer* addOneHot(ITensor& indices, ITensor& values, ITensor& depth, int32_t axis) noexcept = 0;
1110 virtual INonZeroLayer* addNonZero(ITensor& input) noexcept = 0;
1111 virtual IGridSampleLayer* addGridSample(ITensor& input, ITensor& grid) noexcept = 0;
1112 virtual INMSLayer* addNMS(ITensor& boxes, ITensor& scores, ITensor& maxOutputBoxesPerClass) noexcept = 0;
1113 virtual IReverseSequenceLayer* addReverseSequence(ITensor& input, ITensor& sequenceLens) noexcept = 0;
1114 virtual INormalizationLayer* addNormalization(
1115 ITensor& input, ITensor& scale, ITensor& bias, uint32_t axesMask) noexcept = 0;
1116 virtual ICastLayer* addCast(ITensor& input, DataType toType) noexcept = 0;
1117 virtual ICumulativeLayer* addCumulative(
1118 ITensor& input, ITensor& axis, CumulativeOperation operation, bool exclusive, bool reverse) noexcept = 0;
1119 virtual IBuilder& getBuilder() const noexcept = 0;
1120 virtual NetworkDefinitionCreationFlags getFlags() const noexcept = 0;
1121 virtual bool getFlag(NetworkDefinitionCreationFlag networkDefinitionCreationFlag) const noexcept = 0;
1122 virtual IQuantizeLayer* addQuantizeV2(ITensor& input, ITensor& scale, DataType outputType) noexcept = 0;
1123 virtual IDequantizeLayer* addDequantizeV2(ITensor& input, ITensor& scale, DataType outputType) noexcept = 0;
1124 virtual IFillLayer* addFillV2(Dims const& dimensions, FillOperation op, DataType outputType) noexcept = 0;
1125 virtual bool markDebug(ITensor& tensor) noexcept = 0;
1126 virtual bool unmarkDebug(ITensor& tensor) noexcept = 0;
1127 virtual bool isDebugTensor(nvinfer1::ITensor const& tensor) const noexcept = 0;
1128 virtual bool markWeightsRefittable(char const* name) noexcept = 0;
1129 virtual bool unmarkWeightsRefittable(char const* name) noexcept = 0;
1130 virtual bool areWeightsMarkedRefittable(char const* name) const noexcept = 0;
1131 virtual ISqueezeLayer* addSqueeze(ITensor& input, ITensor& axes) noexcept = 0;
1132 virtual IUnsqueezeLayer* addUnsqueeze(ITensor& input, ITensor& axes) noexcept = 0;
1133 virtual IDynamicQuantizeLayer* addDynamicQuantize(
1134 ITensor& input, int32_t axis, int32_t blockSize, DataType toType, DataType scaleType) noexcept
1135 = 0;
1136};
1137
1138class VAlgorithmIOInfo : public VRoot
1139{
1140public
1141 virtual DataType getDataType() const noexcept = 0;
1142 virtual Dims getStrides() const noexcept = 0;
1143 virtual int64_t getVectorizedDim() const noexcept = 0;
1144 virtual int64_t getComponentsPerElement() const noexcept = 0;
1145};
1146
1147class VAlgorithmVariant : public VRoot
1148{
1149public
1150 virtual int64_t getImplementation() const noexcept = 0;
1151 virtual int64_t getTactic() const noexcept = 0;
1152};
1153
1154class VAlgorithmContext : public VRoot
1155{
1156public
1157 virtual char const* getName() const noexcept = 0;
1158 virtual Dims getDimensions(int32_t index, OptProfileSelector select) const noexcept = 0;
1159 virtual int32_t getNbInputs() const noexcept = 0;
1160 virtual int32_t getNbOutputs() const noexcept = 0;
1161};
1162
1163class VAlgorithm : public VRoot
1164{
1165public
1166 virtual IAlgorithmVariant const& getAlgorithmVariant() const noexcept = 0;
1167 virtual float getTimingMSec() const noexcept = 0;
1168 virtual std::size_t getWorkspaceSize() const noexcept = 0;
1169 virtual IAlgorithmIOInfo const* getAlgorithmIOInfoByIndex(int32_t index) const noexcept = 0;
1170};
1171
1172class VTimingCache : public VRoot
1173{
1174public
1175 virtual nvinfer1::IHostMemory* serialize() const noexcept = 0;
1176 virtual bool combine(ITimingCache const& inputCache, bool ignoreMismatch) noexcept = 0;
1177 virtual bool reset() noexcept = 0;
1178 virtual int64_t queryKeys(TimingCacheKey* keyBuffer, int64_t capacity) const noexcept = 0;
1179 virtual TimingCacheValue query(TimingCacheKey const& key) const noexcept = 0;
1180 virtual bool update(TimingCacheKey const& key, TimingCacheValue const& value) noexcept = 0;
1181};
1182
1183class VBuilderConfig : public VRoot
1184{
1185public
1186 virtual void setAvgTimingIterations(int32_t avgTiming) noexcept = 0;
1187 virtual int32_t getAvgTimingIterations() const noexcept = 0;
1188 virtual void setEngineCapability(EngineCapability capability) noexcept = 0;
1189 virtual EngineCapability getEngineCapability() const noexcept = 0;
1190 virtual void setInt8Calibrator(IInt8Calibrator* calibrator) noexcept = 0;
1191 virtual IInt8Calibrator* getInt8Calibrator() const noexcept = 0;
1192 virtual void setFlags(BuilderFlags builderFlags) noexcept = 0;
1193 virtual BuilderFlags getFlags() const noexcept = 0;
1194 virtual void clearFlag(BuilderFlag builderFlag) noexcept = 0;
1195 virtual void setFlag(BuilderFlag builderFlag) noexcept = 0;
1196 virtual bool getFlag(BuilderFlag builderFlag) const noexcept = 0;
1197 virtual void setDeviceType(ILayer const* layer, DeviceType deviceType) noexcept = 0;
1198 virtual DeviceType getDeviceType(ILayer const* layer) const noexcept = 0;
1199 virtual bool isDeviceTypeSet(ILayer const* layer) const noexcept = 0;
1200 virtual void resetDeviceType(ILayer const* layer) noexcept = 0;
1201 virtual bool canRunOnDLA(ILayer const* layer) const noexcept = 0;
1202 virtual void setDLACore(int32_t dlaCore) noexcept = 0;
1203 virtual int32_t getDLACore() const noexcept = 0;
1204 virtual void setDefaultDeviceType(DeviceType deviceType) noexcept = 0;
1205 virtual DeviceType getDefaultDeviceType() const noexcept = 0;
1206 virtual void reset() noexcept = 0;
1207 virtual void setProfileStream(const cudaStream_t stream) noexcept = 0;
1208 virtual cudaStream_t getProfileStream() const noexcept = 0;
1209 virtual int32_t addOptimizationProfile(IOptimizationProfile const* profile) noexcept = 0;
1210 virtual int32_t getNbOptimizationProfiles() const noexcept = 0;
1211 virtual void setProfilingVerbosity(ProfilingVerbosity verbosity) noexcept = 0;
1212 virtual ProfilingVerbosity getProfilingVerbosity() const noexcept = 0;
1213 virtual void setAlgorithmSelector(IAlgorithmSelector* selector) noexcept = 0;
1214 virtual IAlgorithmSelector* getAlgorithmSelector() const noexcept = 0;
1215 virtual bool setCalibrationProfile(IOptimizationProfile const* profile) noexcept = 0;
1216 virtual IOptimizationProfile const* getCalibrationProfile() noexcept = 0;
1217 virtual void setQuantizationFlags(QuantizationFlags flags) noexcept = 0;
1218 virtual QuantizationFlags getQuantizationFlags() const noexcept = 0;
1219 virtual void clearQuantizationFlag(QuantizationFlag flag) noexcept = 0;
1220 virtual void setQuantizationFlag(QuantizationFlag flag) noexcept = 0;
1221 virtual bool getQuantizationFlag(QuantizationFlag flag) const noexcept = 0;
1222 virtual bool setTacticSources(TacticSources tacticSources) noexcept = 0;
1223 virtual TacticSources getTacticSources() const noexcept = 0;
1224 virtual nvinfer1::ITimingCache* createTimingCache(void const* blob, std::size_t size) const noexcept = 0;
1225 virtual bool setTimingCache(ITimingCache const& cache, bool ignoreMismatch) noexcept = 0;
1226 virtual nvinfer1::ITimingCache const* getTimingCache() const noexcept = 0;
1227 virtual void setMemoryPoolLimit(MemoryPoolType pool, std::size_t poolSize) noexcept = 0;
1228 virtual std::size_t getMemoryPoolLimit(MemoryPoolType pool) const noexcept = 0;
1229 virtual void setPreviewFeature(PreviewFeature feature, bool enable) noexcept = 0;
1230 virtual bool getPreviewFeature(PreviewFeature feature) const noexcept = 0;
1231 virtual void setBuilderOptimizationLevel(int32_t level) noexcept = 0;
1232 virtual int32_t getBuilderOptimizationLevel() const noexcept = 0;
1233 virtual void setHardwareCompatibilityLevel(HardwareCompatibilityLevel hardwareCompatibilityLevel) noexcept = 0;
1234 virtual HardwareCompatibilityLevel getHardwareCompatibilityLevel() const noexcept = 0;
1235 virtual void setPluginsToSerialize(char const* const* paths, int32_t nbPaths) noexcept = 0;
1236 virtual char const* getPluginToSerialize(int32_t index) const noexcept = 0;
1237 virtual int32_t getNbPluginsToSerialize() const noexcept = 0;
1238 virtual void setMaxAuxStreams(int32_t nbStreams) noexcept = 0;
1239 virtual int32_t getMaxAuxStreams() const noexcept = 0;
1240 virtual void setProgressMonitor(IProgressMonitor* monitor) noexcept = 0;
1241 virtual IProgressMonitor* getProgressMonitor() const noexcept = 0;
1242 virtual void setRuntimePlatform(RuntimePlatform runtimePlatform) noexcept = 0;
1243 virtual RuntimePlatform getRuntimePlatform() const noexcept = 0;
1244 virtual void setMaxNbTactics(int32_t maxTactics) noexcept = 0;
1245 virtual int32_t getMaxNbTactics() const noexcept = 0;
1246 virtual bool setTilingOptimizationLevel(TilingOptimizationLevel level) noexcept = 0;
1247 virtual TilingOptimizationLevel getTilingOptimizationLevel() const noexcept = 0;
1248 virtual bool setL2LimitForTiling(int64_t size) noexcept = 0;
1249 virtual int64_t getL2LimitForTiling() const noexcept = 0;
1250};
1251
1252class VSerializationConfig : public VRoot
1253{
1254public
1255 virtual bool setFlags(SerializationFlags serializationFlags) noexcept = 0;
1256 virtual SerializationFlags getFlags() const noexcept = 0;
1257 virtual bool clearFlag(SerializationFlag serializationFlag) noexcept = 0;
1258 virtual bool setFlag(SerializationFlag serializationFlag) noexcept = 0;
1259 virtual bool getFlag(SerializationFlag serializationFlag) const noexcept = 0;
1260};
1261
1262class VBuilder : public VRoot
1263{
1264public
1265 virtual bool platformHasFastFp16() const noexcept = 0;
1266 virtual bool platformHasFastInt8() const noexcept = 0;
1267 virtual int32_t getMaxDLABatchSize() const noexcept = 0;
1268 virtual int32_t getNbDLACores() const noexcept = 0;
1269 virtual void setGpuAllocator(IGpuAllocator* allocator) noexcept = 0;
1270 virtual nvinfer1::IBuilderConfig* createBuilderConfig() noexcept = 0;
1271 virtual nvinfer1::INetworkDefinition* createNetworkV2(NetworkDefinitionCreationFlags flags) noexcept = 0;
1272 virtual nvinfer1::IOptimizationProfile* createOptimizationProfile() noexcept = 0;
1273 virtual void setErrorRecorder(IErrorRecorder* recorder) noexcept = 0;
1274 virtual IErrorRecorder* getErrorRecorder() const noexcept = 0;
1275 virtual void reset() noexcept = 0;
1276 virtual bool platformHasTf32() const noexcept = 0;
1277 virtual nvinfer1::IHostMemory* buildSerializedNetwork(
1278 INetworkDefinition& network, IBuilderConfig& config) noexcept = 0;
1279 virtual bool isNetworkSupported(INetworkDefinition const& network, IBuilderConfig const& config) const noexcept = 0;
1280 virtual ILogger* getLogger() const noexcept = 0;
1281 virtual bool setMaxThreads(int32_t maxThreads) noexcept = 0;
1282 virtual int32_t getMaxThreads() const noexcept = 0;
1283 virtual IPluginRegistry& getPluginRegistry() noexcept = 0;
1284 virtual ICudaEngine* buildEngineWithConfig(INetworkDefinition& network, IBuilderConfig& config) noexcept = 0;
1285};
1286
1287} // namespace apiv
1288} // namespace nvinfer1
1289
1290// @endcond
1291
1292#endif // NV_INFER_RUNTIME_IMPL_H
nvinfer1::ILogger * getLogger() noexcept
返回 logger 对象。
nvinfer1::IPluginRegistry * getPluginRegistry() noexcept
返回插件注册表。
用于定义张量维度的结构体。
应用程序实现的接口,用于选择和报告层算法,由...
用户实现的回调,用于在调试张量的值更新时进行通知。
引用计数应用程序实现的错误报告接口,用于 TensorRT 对象。
应用程序实现的类,用于控制 GPU 上的分配。
来自 ExecutionContext::enqueueV3() 的回调
V3 代用户实现层的插件类。
应用程序实现的性能分析接口。
应用程序实现的 TensorRT 进度报告接口。
应用程序实现的类,用于以基于流的方式读取数据。
应用程序实现的类,用于以异步的基于流的方式读取数据....
用于处理用户可访问的库分配内存的类。
Definition: NvInferRuntime.h:142
TensorRT API 版本 1 命名空间。
uint32_t TacticSources
表示使用按位 OR 运算组合的一个或多个 TacticSource 值的集合。
Definition: NvInferRuntime.h:2832
v_1_0::IOutputAllocator IOutputAllocator
Definition: NvInferRuntime.h:3967
ResizeSelector
调整大小到单像素输出时的坐标选择器。
Definition: NvInfer.h:4004
EngineCapability
支持的引擎功能流程列表。
Definition: NvInferRuntime.h:76
DimensionOperation
对两个 IDimensionExpr 的运算,IDimensionExpr 表示维度计算中使用的整数表达式...
Definition: NvInferRuntime.h:179
MemoryPoolType
TensorRT 使用的内存池类型。
Definition: NvInfer.h:9089
ScaleMode
控制如何在 Scale 层中应用 shift、scale 和 power。
Definition: NvInfer.h:1815
RuntimePlatform
描述了用于执行...的预期运行时平台(操作系统和 CPU 架构)。
Definition: NvInfer.h:8710
uint32_t QuantizationFlags
表示使用二进制 OR 运算的一个或多个 QuantizationFlag 值。
Definition: NvInfer.h:8662
TensorIOMode
张量 IO 模式的定义。
Definition: NvInferRuntimeBase.h:643
HardwareCompatibilityLevel
描述了与其他 GPU 架构(而不是在其上...的 GPU 架构)的兼容性要求。
Definition: NvInfer.h:9203
CumulativeOperation
枚举 Cumulative 层可能执行的累积运算。
Definition: NvInfer.h:6481
SerializationFlag
引擎在序列化字节时可以启用的有效标志列表。
Definition: NvInferRuntime.h:2873
BoundingBoxFormat
用于 INMSLayer 中 Boxes 输入张量的边界框数据表示。
Definition: NvInfer.h:6067
v_1_0::IPluginV3 IPluginV3
Definition: NvInferPluginBase.h:273
UnaryOperation
枚举 Unary 层可能执行的一元运算。
Definition: NvInfer.h:2762
v_1_0::IProfiler IProfiler
Definition: NvInferRuntime.h:1271
v_1_0::IAlgorithmSelector IAlgorithmSelector
Definition: NvInfer.h:8654
v_1_0::IStreamReaderV2 IStreamReaderV2
Definition: NvInferRuntime.h:751
ActivationType
枚举激活层中要执行的激活类型。
Definition: NvInfer.h:137
uint32_t TempfileControlFlags
表示使用按位 OR 运算组合的一个或多个 TempfileControlFlag 值的集合...
Definition: NvInferRuntime.h:1349
FillOperation
枚举 fill 层可能执行的张量填充运算。
Definition: NvInfer.h:4979
ResizeRoundMode
最近邻调整大小的舍入模式。
Definition: NvInfer.h:4034
PaddingMode
枚举在卷积、反卷积和池化层中执行的填充模式,...
Definition: NvInfer.h:993
TripLimit
Definition: NvInfer.h:4389
uint32_t NetworkDefinitionCreationFlags
表示使用二进制 OR 运算的一个或多个 NetworkDefinitionCreationFlag 标志....
Definition: NvInfer.h:10289
PreviewFeature
定义预览功能。
Definition: NvInfer.h:9164
TilingOptimizationLevel
定义 Tiling 的优化级别。
Definition: NvInfer.h:9243
DataType
权重和张量的类型。
Definition: NvInferRuntimeBase.h:133
uint32_t BuilderFlags
表示使用二进制 OR 运算的一个或多个 BuilderFlag 值,例如,1U << BuilderFlag::kFP16 ...
Definition: NvInfer.h:8740
DeviceType
此层/网络将在其上执行的设备。
Definition: NvInferRuntime.h:1303
CalibrationAlgoType
要使用的校准算法版本。
Definition: NvInfer.h:8088
LayerType
层类的类型值。
Definition: NvInfer.h:58
SampleMode
控制 ISliceLayer 和 IGridSample 如何处理越界坐标。
Definition: NvInfer.h:3220
GatherMode
控制 IGatherLayer 的形式。
Definition: NvInfer.h:2509
v_1_0::IDebugListener IDebugListener
Definition: NvInferRuntime.h:4008
WeightsRole
层如何使用特定的权重。
Definition: NvInferRuntime.h:1281
uint32_t TensorFormats
它能够通过二进制 OR 运算表示一个或多个 TensorFormat,例如....
Definition: NvInfer.h:129
ProfilingVerbosity
在 NVTX 注释和 IEngineInspector 中公开的层信息的详细程度级别列表。
Definition: NvInferRuntime.h:2844
NetworkDefinitionCreationFlag
在网络创建时表示的不可变网络属性列表。NetworkDefinitionCreationFla...
Definition: NvInfer.h:10300
ElementWiseOperation
枚举 ElementWise 层可能执行的二元运算。
Definition: NvInfer.h:2419
QuantizationFlag
用于将网络量化为 int8 的有效标志列表。
Definition: NvInfer.h:8674
uint32_t SerializationFlags
表示使用二进制 OR 运算的一个或多个 SerializationFlag 值,例如,1U << Serialization...
Definition: NvInferRuntime.h:2863
InterpolationMode
枚举各种插值模式。
Definition: NvInfer.h:3922
BuilderFlag
构建器在从网络定义创建引擎时可以启用的有效模式列表。
Definition: NvInfer.h:8750
TensorFormat
输入/输出张量的格式。
Definition: NvInferRuntime.h:1382
ExecutionContextAllocationStrategy
IExecutionContext 的不同内存分配行为。
Definition: NvInferRuntime.h:2977
TopKOperation
枚举 TopK 层可能执行的运算。
Definition: NvInfer.h:3501
ReduceOperation
枚举 Reduce 层可能执行的 reduce 运算。
Definition: NvInfer.h:2857
LayerInformationFormat
IEngineInspector 打印层信息的格式。
Definition: NvInferRuntime.h:4903
ScatterMode
控制 IScatterLayer 的形式。
Definition: NvInfer.h:5802
MatrixOperation
枚举 IMatrixMultiplyLayer 在乘法之前可能对张量执行的运算...
Definition: NvInfer.h:3627
ResizeCoordinateTransformation
调整大小坐标变换函数。
Definition: NvInfer.h:3950
LoopOutput
Definition: NvInfer.h:4363
v_1_0::IStreamReader IStreamReader
Definition: NvInferRuntime.h:674
PoolingType
池化层中要执行的池化类型。
Definition: NvInfer.h:1429
v_1_0::IProgressMonitor IProgressMonitor
Definition: NvInfer.h:9359
TensorLocation
张量数据存储的位置,设备或主机。
Definition: NvInferRuntime.h:204
OptProfileSelector
当设置或查询优化配置文件参数时(例如形状张量输入或动态维度...
Definition: NvInferRuntime.h:2576

  Copyright © 2024 NVIDIA Corporation
  隐私政策 | 管理我的隐私 | 请勿出售或分享我的数据 | 服务条款 | 无障碍功能 | 公司政策 | 产品安全 | 联系方式