DriveWorks SDK Reference
4.0.0 Release
For Test and Development only

DNNPlugin.h
Go to the documentation of this file.
1 // This code contains NVIDIA Confidential Information and is disclosed
3 // under the Mutual Non-Disclosure Agreement.
4 //
5 // Notice
6 // ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
7 // NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
8 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
9 // MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
10 //
11 // NVIDIA Corporation assumes no responsibility for the consequences of use of such
12 // information or for any infringement of patents or other rights of third parties that may
13 // result from its use. No license is granted by implication or otherwise under any patent
14 // or patent rights of NVIDIA Corporation. No third party distribution is allowed unless
15 // expressly authorized by NVIDIA. Details are subject to change without notice.
16 // This code supersedes and replaces all information previously supplied.
17 // NVIDIA Corporation products are not authorized for use as critical
18 // components in life support devices or systems without express written approval of
19 // NVIDIA Corporation.
20 //
21 // Copyright (c) 2018 NVIDIA Corporation. All rights reserved.
22 //
23 // NVIDIA Corporation and its licensors retain all intellectual property and proprietary
24 // rights in and to this software and related documentation and any modifications thereto.
25 // Any use, reproduction, disclosure or distribution of this software and related
26 // documentation without an express license agreement from NVIDIA Corporation is
27 // strictly prohibited.
28 //
30 
38 #ifndef DW_DNN_PLUGIN_H_
39 #define DW_DNN_PLUGIN_H_
40 
49 #include <dw/core/base/Types.h>
50 #include <dw/dnn/DNN.h>
51 
52 #ifdef __cplusplus
53 extern "C" {
54 #endif
55 
59 typedef enum dwDNNPluginLayout {
75 
79 typedef struct dwDNNPluginWeights
80 {
82  const void* values;
83  int64_t count;
85 
89 typedef enum dwDNNPluginFieldType {
100 
104 typedef struct dwDNNPluginField
105 {
107  const char8_t* name;
109  const void* data;
113  int32_t length;
115 
120 {
121  int32_t numFields;
124 
128 typedef struct dwDNNPluginTensorDesc
129 {
135 
140 typedef void* _dwDNNPluginHandle_t;
141 typedef void const* _dwConstDNNPluginHandle_t;
142 
149 dwStatus _dwDNNPlugin_create(_dwDNNPluginHandle_t* handle);
150 
158 dwStatus _dwDNNPlugin_clone(_dwDNNPluginHandle_t* out, _dwDNNPluginHandle_t handle);
159 
166 dwStatus _dwDNNPlugin_setup(_dwDNNPluginHandle_t handle);
167 
174 dwStatus _dwDNNPlugin_terminate(_dwDNNPluginHandle_t handle);
175 
182 dwStatus _dwDNNPlugin_destroy(_dwDNNPluginHandle_t handle);
183 
190 dwStatus _dwDNNPlugin_getNumOutputs(int32_t* numOutputs, _dwDNNPluginHandle_t handle);
191 
202  int32_t outputIndex, const dwBlobSize* inputDimensions,
203  int32_t numInputs, _dwDNNPluginHandle_t handle);
204 
212 dwStatus _dwDNNPlugin_getWorkspaceSize(size_t* workspaceSize, int32_t maxBatchSize,
213  _dwDNNPluginHandle_t handle);
214 
226 dwStatus _dwDNNPlugin_supportsFormatCombination(bool* res, int32_t index, const dwDNNPluginTensorDesc* inOut,
227  int32_t numInputs, int32_t numOutputs,
228  _dwConstDNNPluginHandle_t handle);
229 
239 dwStatus _dwDNNPlugin_configurePlugin(const dwDNNPluginTensorDesc* inputDescs, int32_t numInputs,
240  const dwDNNPluginTensorDesc* outputDescs, int32_t numOutputs,
241  _dwDNNPluginHandle_t handle);
242 
253 dwStatus _dwDNNPlugin_enqueue(int32_t batchSize, const void* const* inputs, void** outputs,
254  void* workspace, cudaStream_t stream, _dwDNNPluginHandle_t handle);
255 
262 dwStatus _dwDNNPlugin_getSerializationSize(size_t* serializationSize, _dwDNNPluginHandle_t handle);
263 
271 dwStatus _dwDNNPlugin_serialize(void* buffer, _dwDNNPluginHandle_t handle);
272 
282 dwStatus _dwDNNPlugin_deserializeFromBuffer(const char8_t* name, const void* buffer,
283  size_t len, _dwDNNPluginHandle_t handle);
284 
294  const dwDNNPluginFieldCollection* fieldCollection,
295  _dwDNNPluginHandle_t handle);
296 
305 dwStatus _dwDNNPlugin_deserializeFromWeights(const dwDNNPluginWeights* weights, int32_t numWeights,
306  _dwDNNPluginHandle_t handle);
307 
315 dwStatus _dwDNNPlugin_getPluginType(const char8_t** pluginType, _dwConstDNNPluginHandle_t handle);
316 
324 dwStatus _dwDNNPlugin_getPluginVersion(const char8_t** pluginVersion, _dwConstDNNPluginHandle_t handle);
325 
333 dwStatus _dwDNNPlugin_setPluginNamespace(const char8_t* pluginNamespace, _dwDNNPluginHandle_t handle);
334 
342 dwStatus _dwDNNPlugin_getPluginNamespace(const char8_t** pluginNamespace, _dwConstDNNPluginHandle_t handle);
343 
355 dwStatus _dwDNNPlugin_isOutputBroadcastAcrossBatch(bool* isOutputBroadcastAcrossBatch,
356  int32_t outputIndex, const bool* inputIsBroadcasted,
357  int32_t numInputs, _dwConstDNNPluginHandle_t handle);
358 
368 dwStatus _dwDNNPlugin_canBroadcastInputAcrossBatch(bool* canBroadcastInputAcrossBatch, int32_t inputIndex,
369  _dwConstDNNPluginHandle_t handle);
370 
381 dwStatus _dwDNNPlugin_getOutputPrecision(dwPrecision* outputPrecision, int32_t outputIndex,
382  const dwPrecision* inputPrecisions, int32_t numInputs,
383  _dwConstDNNPluginHandle_t handle);
384 
393  _dwDNNPluginHandle_t handle);
394 
395 // -----------------------------------------------------------------------------
396 // Deprecated Functions
397 // -----------------------------------------------------------------------------
398 
407 DW_DEPRECATED("WARNING: will be removed in the next major release")
408 dwStatus _dwDNNPlugin_initializeFromWeights(_dwDNNPluginHandle_t* handle, const char8_t* layerName,
409  const dwDNNPluginWeights* weights, int32_t numWeights);
410 
419 DW_DEPRECATED("WARNING: will be removed in the next major release")
420 dwStatus _dwDNNPlugin_initialize(_dwDNNPluginHandle_t* handle, const char8_t* layerName,
421  const void* data, size_t length);
422 
428 DW_DEPRECATED("WARNING: will be removed in the next major release")
429 dwStatus _dwDNNPlugin_release(_dwDNNPluginHandle_t handle);
430 
443 DW_DEPRECATED("WARNING: will be removed in the next major release")
445  int32_t numInputs, const dwBlobSize* outputDimensions,
446  int32_t numOutputs, dwPrecision precision,
447  dwDNNPluginLayout layout, int32_t maxBatchSize,
448  _dwDNNPluginHandle_t handle);
449 
458 DW_DEPRECATED("WARNING: will be removed in the next major release")
460  dwDNNPluginLayout pluginLayout, _dwDNNPluginHandle_t handle);
461 
464 #ifdef __cplusplus
465 }
466 #endif
467 
468 #endif // DW_DNN_PLUGIN_H_
NVIDIA DriveWorks API: Core Types
int32_t length
Number of data entries in the plugin attribute.
Definition: DNNPlugin.h:113
INT32 field type.
Definition: DNNPlugin.h:95
dwDNNPluginFieldType
Plugin field type.
Definition: DNNPlugin.h:89
dwStatus _dwDNNPlugin_getSerializationSize(size_t *serializationSize, _dwDNNPluginHandle_t handle)
Returns serialization size.
CHW with 4-element packed channels.
Definition: DNNPlugin.h:66
HWC Non-vectorized channel-last format.
Definition: DNNPlugin.h:71
dwStatus _dwDNNPlugin_release(_dwDNNPluginHandle_t handle)
Releases the custom plugin.
float float32_t
Specifies POD types.
Definition: Types.h:70
const dwDNNPluginField * fields
Pointer to dwDNNPluginField entries.
Definition: DNNPlugin.h:122
HWC DLA image format.
Definition: DNNPlugin.h:73
dwStatus _dwDNNPlugin_destroy(_dwDNNPluginHandle_t handle)
Destroys the plugin.
DNN plugin field colleciton.
Definition: DNNPlugin.h:119
char field type.
Definition: DNNPlugin.h:96
DNN plugin field.
Definition: DNNPlugin.h:104
dwStatus _dwDNNPlugin_configureWithFormat(const dwBlobSize *inputDimensions, int32_t numInputs, const dwBlobSize *outputDimensions, int32_t numOutputs, dwPrecision precision, dwDNNPluginLayout layout, int32_t maxBatchSize, _dwDNNPluginHandle_t handle)
Configures the plugin with given format.
dwPrecision
Definition: Types.h:140
dwStatus _dwDNNPlugin_getPluginVersion(const char8_t **pluginVersion, _dwConstDNNPluginHandle_t handle)
Returns plugin version as string.
CHW with 32-element packed channels.
Definition: DNNPlugin.h:68
dwDNNPluginLayout
Represents different layouts for plugins.
Definition: DNNPlugin.h:59
dwPrecision precision
data type of the weights
Definition: DNNPlugin.h:81
dwStatus _dwDNNPlugin_initialize(_dwDNNPluginHandle_t *handle, const char8_t *layerName, const void *data, size_t length)
Initializes the custom plugin from serialized bytes.
dwStatus _dwDNNPlugin_terminate(_dwDNNPluginHandle_t handle)
Terminates the plugin.
dwStatus _dwDNNPlugin_create(_dwDNNPluginHandle_t *handle)
Creates a custom plugin.
dwStatus _dwDNNPlugin_getPluginNamespace(const char8_t **pluginNamespace, _dwConstDNNPluginHandle_t handle)
Returns plugin namespace.
INT8 field type.
Definition: DNNPlugin.h:93
CHW with 2-element packed channels.
Definition: DNNPlugin.h:63
DHWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:69
dwStatus _dwDNNPlugin_setPluginNamespace(const char8_t *pluginNamespace, _dwDNNPluginHandle_t handle)
Sets plugin namespace.
NVIDIA DriveWorks API: DNN Methods
float32_t scale
Tensor scale.
Definition: DNNPlugin.h:133
CHW with 16-element packed channels.
Definition: DNNPlugin.h:67
dwStatus _dwDNNPlugin_deserializeFromWeights(const dwDNNPluginWeights *weights, int32_t numWeights, _dwDNNPluginHandle_t handle)
Deserializes plugin from weights.
dwStatus
Status definition.
Definition: Status.h:180
const void * data
Plugin field attribute data.
Definition: DNNPlugin.h:109
void const * _dwConstDNNPluginHandle_t
Definition: DNNPlugin.h:141
Holds blob dimensions.
Definition: Types.h:560
dwDNNPluginLayout layout
Tensor layout.
Definition: DNNPlugin.h:132
HWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:64
dwBlobSize field type.
Definition: DNNPlugin.h:97
dwStatus _dwDNNPlugin_getNumOutputs(int32_t *numOutputs, _dwDNNPluginHandle_t handle)
Returns number of outputs.
dwStatus _dwDNNPlugin_getPluginFieldCollection(dwDNNPluginFieldCollection *fieldCollection, _dwDNNPluginHandle_t handle)
Returns a list of fields that needs to be passed to plugin at creation.
#define DW_DEPRECATED(msg)
Definition: Exports.h:66
HWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:65
dwStatus _dwDNNPlugin_configurePlugin(const dwDNNPluginTensorDesc *inputDescs, int32_t numInputs, const dwDNNPluginTensorDesc *outputDescs, int32_t numOutputs, _dwDNNPluginHandle_t handle)
Configures the plugin with given format.
dwStatus _dwDNNPlugin_canBroadcastInputAcrossBatch(bool *canBroadcastInputAcrossBatch, int32_t inputIndex, _dwConstDNNPluginHandle_t handle)
Returns whether plugin can use input that is broadcast across batch without replication.
CHW DLA planar format.
Definition: DNNPlugin.h:72
CHW with 2-element packed channels.
Definition: DNNPlugin.h:62
dwStatus _dwDNNPlugin_serialize(void *buffer, _dwDNNPluginHandle_t handle)
Serializes the plugin to buffer.
dwStatus _dwDNNPlugin_getOutputPrecision(dwPrecision *outputPrecision, int32_t outputIndex, const dwPrecision *inputPrecisions, int32_t numInputs, _dwConstDNNPluginHandle_t handle)
Returns output precision at given index given the input precisions.
void * _dwDNNPluginHandle_t
_dwDNNPluginHandle_t can be optionally used for storing and accessing variables among the functions d...
Definition: DNNPlugin.h:140
dwStatus _dwDNNPlugin_supportsFormatCombination(bool *res, int32_t index, const dwDNNPluginTensorDesc *inOut, int32_t numInputs, int32_t numOutputs, _dwConstDNNPluginHandle_t handle)
Returns a flag indicating whether the given format is supported.
dwDNNPluginFieldType type
Plugin fild attribute type.
Definition: DNNPlugin.h:111
dwStatus _dwDNNPlugin_setup(_dwDNNPluginHandle_t handle)
Initializes the created plugin.
CDHW with 32-element packed channels.
Definition: DNNPlugin.h:70
char char8_t
Definition: Types.h:72
dwStatus _dwDNNPlugin_deserializeFromFieldCollection(const char8_t *name, const dwDNNPluginFieldCollection *fieldCollection, _dwDNNPluginHandle_t handle)
Deserializes plugin from field collection.
dwPrecision precision
Tensor precision.
Definition: DNNPlugin.h:131
int32_t numFields
Number of dwDNNPluginField entries.
Definition: DNNPlugin.h:121
const char8_t * name
Plugin field attribute name.
Definition: DNNPlugin.h:107
dwBlobSize dims
Tensor dimensions.
Definition: DNNPlugin.h:130
dwStatus _dwDNNPlugin_deserializeFromBuffer(const char8_t *name, const void *buffer, size_t len, _dwDNNPluginHandle_t handle)
Deserializes plugin from buffer.
Stores DNN weights.
Definition: DNNPlugin.h:79
dwStatus _dwDNNPlugin_getPluginType(const char8_t **pluginType, _dwConstDNNPluginHandle_t handle)
Returns the plugin type as string.
Unknown field type.
Definition: DNNPlugin.h:98
dwStatus _dwDNNPlugin_initializeFromWeights(_dwDNNPluginHandle_t *handle, const char8_t *layerName, const dwDNNPluginWeights *weights, int32_t numWeights)
Initializes the custom plugin from weights.
dwStatus _dwDNNPlugin_getWorkspaceSize(size_t *workspaceSize, int32_t maxBatchSize, _dwDNNPluginHandle_t handle)
Returns workspace size.
int64_t count
the number of weights in the array
Definition: DNNPlugin.h:83
dwStatus _dwDNNPlugin_isOutputBroadcastAcrossBatch(bool *isOutputBroadcastAcrossBatch, int32_t outputIndex, const bool *inputIsBroadcasted, int32_t numInputs, _dwConstDNNPluginHandle_t handle)
Returns whether output is broadcast across batch.
DNN Plugin tensor descriptor.
Definition: DNNPlugin.h:128
INT16 field type.
Definition: DNNPlugin.h:94
dwStatus _dwDNNPlugin_enqueue(int32_t batchSize, const void *const *inputs, void **outputs, void *workspace, cudaStream_t stream, _dwDNNPluginHandle_t handle)
Performs forward-pass.
dwStatus _dwDNNPlugin_getOutputDimensions(dwBlobSize *outputDimensions, int32_t outputIndex, const dwBlobSize *inputDimensions, int32_t numInputs, _dwDNNPluginHandle_t handle)
Returns output dimensions of an output at a given index based on inputDimensions. ...
dwStatus _dwDNNPlugin_supportsFormat(bool *res, dwPrecision precision, dwDNNPluginLayout pluginLayout, _dwDNNPluginHandle_t handle)
Returns a flag indicating whether the given format is supported.
dwStatus _dwDNNPlugin_clone(_dwDNNPluginHandle_t *out, _dwDNNPluginHandle_t handle)
Clones the plugin.
const void * values
the weight values, in a contiguous array
Definition: DNNPlugin.h:82