24#ifndef NV_INFER_SAFE_RUNTIME_H
25#define NV_INFER_SAFE_RUNTIME_H
68 TypedArray(
float* ptr, uint64_t const bufferSize) noexcept
71 , mBufferSize(bufferSize)
77 : mType(DataType::kHALF)
79 , mBufferSize(bufferSize)
84 TypedArray(int64_t* ptr, uint64_t
const bufferSize) noexcept
85 : mType(DataType::kINT64)
87 , mBufferSize(bufferSize)
92 TypedArray(int32_t* ptr, uint64_t
const bufferSize) noexcept
93 : mType(DataType::kINT32)
95 , mBufferSize(bufferSize)
101 : mType(DataType::kINT8)
103 , mBufferSize(bufferSize)
109 : mType(DataType::kUINT8)
111 , mBufferSize(bufferSize)
116 : mType(DataType::kBOOL)
118 , mBufferSize(bufferSize)
133 if (mType == DataType::kFLOAT)
135 return static_cast<float*
>(mData);
144 if (mType == DataType::kHALF)
146 return static_cast<half_t*
>(mData);
155 if (mType == DataType::kINT64)
157 return static_cast<int64_t*
>(mData);
166 if (mType == DataType::kINT32)
168 return static_cast<int32_t*
>(mData);
177 if (mType == DataType::kINT8)
179 return static_cast<int8_t*
>(mData);
188 if (mType == DataType::kUINT8)
190 return static_cast<uint8_t*
>(mData);
199 if (mType == DataType::kBOOL)
201 return static_cast<bool*
>(mData);
223 uint64_t mBufferSize;
255 return d0.nbDims == d1.nbDims
256 && (d0.nbDims <= 0 || std::equal(std::cbegin(d0.d), std::cbegin(d0.d) + d0.nbDims, std::cbegin(d1.d)));
Structure to define the dimensions of a tensor.
Application-implemented class for controlling memory allocation on the GPU/CPU.
Definition: NvInferSafeMemAllocator.h:86
Interface for extended recorder which allows error, warn, debug, or info messages to be recorded.
Definition: NvInferSafeRecorder.h:82
Abstract Interface for a functionally safe graph for executing inference on a built network.
Definition: NvInferSafeRuntime.h:331
virtual ErrorCode getNbIOTensors(int64_t &nb) const noexcept=0
This function returns the total number of input and output tensor for the current graph.
ITRTGraph & operator=(ITRTGraph const &) &=delete
virtual ErrorCode executeAsync(cudaStream_t stream) noexcept=0
execute one inference of this graph.
virtual ErrorCode getSafeRecorder(ISafeRecorder *&recorder) const noexcept=0
This function retrieves the ISafeRecorder for the current graph.
ITRTGraph(ITRTGraph const &)=delete
virtual ErrorCode setIOProfile(int64_t profileIndex) noexcept=0
This function selects the active IOProfile for the graph. If this function is not called,...
virtual ErrorCode setScratchMemory(void *memory) noexcept=0
This function sets the scratch memory for the graph. This should only be called if scratch memory is ...
virtual ErrorCode setInputConsumedEvent(cudaEvent_t event) noexcept=0
This function sets a cudaEvent on the current graph that triggers when the input is consumed....
virtual ErrorCode setIOTensorAddress(AsciiChar const *const tensorName, TypedArray const &tensor) noexcept=0
This function assigns a user allocated device memory block for an input tensor to the graph based on ...
virtual ErrorCode getIOProfile(int64_t &profileIndex) const noexcept=0
This function retrieves the index of the current active IOProfile for the graph.
virtual ErrorCode setAuxStreams(cudaStream_t *auxStreams, int32_t nbStreams) noexcept=0
Set the auxiliary streams that TensorRT should use to run kernels on.
virtual ErrorCode getErrorBuffer(RuntimeErrorInformation *&buffer) const noexcept=0
This function retrieves the RuntimeErrorInformation (for async error) buffer for the current graph....
ITRTGraph & operator=(ITRTGraph &&) &=delete
virtual ErrorCode getScratchMemorySize(size_t &size) const noexcept=0
This function returns the scratch memory size (in bytes) needed to store all the intermediate tensors...
virtual ErrorCode getTRTManagedScratch(bool &flag) const noexcept=0
This function returns the trtManagedScratch flag provided in createTRTGraph call.
ITRTGraph(ITRTGraph &&)=delete
virtual ErrorCode sync() noexcept=0
synchronize one inference of this graph.
virtual ErrorCode getNbAuxStreams(int32_t &nbStreams) const noexcept=0
Return the number of auxiliary streams used by this graph.
virtual ErrorCode getScratchMemory(void *&memory) noexcept=0
This function gets the scratch memory for the graph. This should only be called if scratch memory is ...
virtual ErrorCode getIOTensorName(AsciiChar const *&name, size_t const index) const noexcept=0
This function returns the name of a tensor for a given index.
virtual ErrorCode getIOTensorAddress(AsciiChar const *const tensorName, TypedArray &tensor) noexcept=0
This function gets the memory address for an user provided input tensor to the graph based on its nam...
virtual ~ITRTGraph() noexcept=default
A shallow destructor of ITRTGraph.
virtual ErrorCode getNbIOProfiles(int64_t &nb) const noexcept=0
This function returns the total number of IO tensor profiles for the current graph.
virtual ErrorCode getInputConsumedEvent(cudaEvent_t &event) const noexcept=0
This function retrieves the cudaEvent on the current graph that triggers when the input is fully cons...
virtual ErrorCode getIOTensorDescriptor(TensorDescriptor &desc, AsciiChar const *const tensorName) const noexcept=0
This function should return a TensorDescriptor which contains all the information about the tensor ba...
virtual ErrorCode clone(ITRTGraph *&graph, ISafeRecorder &recorder) noexcept=0
Specialized Graph shallow copy.
Structure to define the physical dimensions of a tensor with support for up to 9 dimensions.
Definition: NvInferSafeRuntime.h:240
int32_t nbDims
The rank (number of dimensions).
Definition: NvInferSafeRuntime.h:247
static constexpr int32_t MAX_DIMS
Definition: NvInferSafeRuntime.h:244
int64_t d[MAX_DIMS]
The extent of each dimension.
Definition: NvInferSafeRuntime.h:250
A standard_layout and trivially_copyable typed array that knows the data type and size it is holding.
Definition: NvInferSafeRuntime.h:52
TypedArray() noexcept
Definition: NvInferSafeRuntime.h:54
DataType getType() const noexcept
This method returns the current type of the data.
Definition: NvInferSafeRuntime.h:124
TypedArray & operator=(TypedArray const &) &=default
int32_t * getInt32() const noexcept
Retrieves the data as int32_t*. It should only be called when the current type is kINT32....
Definition: NvInferSafeRuntime.h:164
int8_t * getInt8() const noexcept
Retrieves the data as int8_t*. It should only be called when the current type is kINT8....
Definition: NvInferSafeRuntime.h:175
TypedArray(bool *ptr, uint64_t const bufferSize) noexcept
sets the data to a bool ptr. It also sets the current type to kBOOL
Definition: NvInferSafeRuntime.h:115
TypedArray(TypedArray &&)=default
bool * getBool() const noexcept
Retrieves the data as bool*. It should only be called when the current type is kBOOL....
Definition: NvInferSafeRuntime.h:197
half_t * getHalf() const noexcept
Retrieves the data as half_t*. It should only be called when the current type is kHALF....
Definition: NvInferSafeRuntime.h:142
void * getData() const noexcept
Retrieves the data regardless of the type.
Definition: NvInferSafeRuntime.h:214
TypedArray(half_t *ptr, uint64_t const bufferSize) noexcept
sets the data to a half_t ptr. It also sets the current type to kHALF
Definition: NvInferSafeRuntime.h:76
TypedArray(int32_t *ptr, uint64_t const bufferSize) noexcept
sets the data to a int32_t ptr. It also sets the current type to kINT32
Definition: NvInferSafeRuntime.h:92
uint8_t * getUint8() const noexcept
Retrieves the data as uint8_t*. It should only be called when the current type is kUINT8....
Definition: NvInferSafeRuntime.h:186
TypedArray(TypedArray const &)=default
~TypedArray() noexcept=default
uint64_t getSize() const noexcept
Retrieves the size of the array in bytes.
Definition: NvInferSafeRuntime.h:207
TypedArray & operator=(TypedArray &&) &=default
TypedArray(int64_t *ptr, uint64_t const bufferSize) noexcept
sets the data to a int64_t ptr. It also sets the current type to kINT64
Definition: NvInferSafeRuntime.h:84
int64_t * getInt64() const noexcept
Retrieves the data as int64_t*. It should only be called when the current type is kINT64....
Definition: NvInferSafeRuntime.h:153
TypedArray(int8_t *ptr, uint64_t const bufferSize) noexcept
sets the data to a int8_t ptr. It also sets the current type to kINT8
Definition: NvInferSafeRuntime.h:100
TypedArray(uint8_t *ptr, uint64_t const bufferSize) noexcept
sets the data to a uint8_t ptr. It also sets the current type to kUINT8
Definition: NvInferSafeRuntime.h:108
float * getFloat() const noexcept
Retrieves the data as float*. It should only be called when the current type is kFLOAT....
Definition: NvInferSafeRuntime.h:131
ErrorCode
Error codes that can be returned by TensorRT during execution.
Definition: NvInferRuntimeBase.h:317
TensorIOMode
Definition of tensor IO Mode.
Definition: NvInferRuntimeBase.h:664
char_t AsciiChar
Definition: NvInferRuntimeBase.h:116
DataType
The type of weights and tensors. The datatypes other than kBOOL, kINT32, and kINT64 are "activation d...
Definition: NvInferRuntimeBase.h:151
MemoryPlacement
Enum to describe the placement of the memory region.
Definition: NvInferSafeMemAllocator.h:49
@ kNONE
Invalid or unspecified placement (used for error checking)
bool operator==(PhysicalDims const &d0, PhysicalDims const &d1) noexcept
Definition: NvInferSafeRuntime.h:253
__half half_t
Definition: NvInferSafeRuntime.h:37
ErrorCode destroyTRTGraph(ITRTGraph *&graph) noexcept
Toplevel graph destructor.
ErrorCode createTRTGraph(ITRTGraph *&graph, void const *buffer, int64_t bufferSize, AsciiChar const *companionSoPath, ISafeRecorder &recorder, bool trtManagedScratch=true, ISafeMemAllocator *allocator=nullptr) noexcept
The C factory function which serves as an entry point to TRT that creates an instance of a ITRTGraph ...
bool operator!=(PhysicalDims const &d0, PhysicalDims const &d1) noexcept
Definition: NvInferSafeRuntime.h:259
Definition: NvInferConsistency.h:34
A simple record summarizing various properties of a network IO Tensor.
Definition: NvInferSafeRuntime.h:287
MemoryPlacement memPlacement
Enum to denote whether the Tensor memory is allocated on the GPU, CPU, or CPU_PINNED.
Definition: NvInferSafeRuntime.h:309
AsciiChar const * tensorName
Name of the IO Tensor.
Definition: NvInferSafeRuntime.h:289
uint64_t bytesPerComponent
The size of the tensor data type in bytes (4 for float and int32, 2 for half, 1 for int8)
Definition: NvInferSafeRuntime.h:299
DataType dataType
Definition: NvInferSafeRuntime.h:297
PhysicalDims strideOrder
The order in which the dimensions are laid out in memory.
Definition: NvInferSafeRuntime.h:311
Dims userShape
Definition: NvInferSafeRuntime.h:315
uint64_t sizeInBytes
Total size in bytes for the IO Tensor.
Definition: NvInferSafeRuntime.h:305
uint64_t componentsPerVector
The vector length (in scalars) for a vectorized tensor, 1 if the tensor is not vectorized.
Definition: NvInferSafeRuntime.h:301
int64_t vectorizedDim
The dimension index along which the tensor is vectorized, -1 if the tensor is not vectorized.
Definition: NvInferSafeRuntime.h:303
PhysicalDims shape
Definition: NvInferSafeRuntime.h:292
TensorIOMode ioMode
Enum to denote whether the Tensor is for input or output.
Definition: NvInferSafeRuntime.h:307
PhysicalDims stride
Stride vector for each element of the IO Tensor.
Definition: NvInferSafeRuntime.h:294