DriveWorks SDK Reference
3.5.78 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 
51 #include <dw/core/Types.h>
52 #include <dw/dnn/DNN.h>
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
61 typedef enum dwDNNPluginLayout {
72 
76 typedef struct dwDNNPluginWeights
77 {
79  const void* values;
80  int64_t count;
82 
86 typedef enum dwDNNPluginFieldType {
97 
101 typedef struct dwDNNPluginField
102 {
104  const char8_t* name;
106  const void* data;
110  int32_t length;
112 
117 {
118  int32_t numFields;
121 
125 typedef struct dwDNNPluginTensorDesc
126 {
132 
137 typedef void* _dwDNNPluginHandle_t;
138 typedef void const* _dwConstDNNPluginHandle_t;
139 
146 dwStatus _dwDNNPlugin_create(_dwDNNPluginHandle_t* handle);
147 
155 dwStatus _dwDNNPlugin_clone(_dwDNNPluginHandle_t* out, _dwDNNPluginHandle_t handle);
156 
163 dwStatus _dwDNNPlugin_setup(_dwDNNPluginHandle_t handle);
164 
171 dwStatus _dwDNNPlugin_terminate(_dwDNNPluginHandle_t handle);
172 
179 dwStatus _dwDNNPlugin_destroy(_dwDNNPluginHandle_t handle);
180 
187 dwStatus _dwDNNPlugin_getNumOutputs(int32_t* numOutputs, _dwDNNPluginHandle_t handle);
188 
199  int32_t outputIndex, const dwBlobSize* inputDimensions,
200  int32_t numInputs, _dwDNNPluginHandle_t handle);
201 
209 dwStatus _dwDNNPlugin_getWorkspaceSize(size_t* workspaceSize, int32_t maxBatchSize,
210  _dwDNNPluginHandle_t handle);
211 
223 dwStatus _dwDNNPlugin_supportsFormatCombination(bool* res, int32_t index, const dwDNNPluginTensorDesc* inOut,
224  int32_t numInputs, int32_t numOutputs,
225  _dwConstDNNPluginHandle_t handle);
226 
236 dwStatus _dwDNNPlugin_configurePlugin(const dwDNNPluginTensorDesc* inputDescs, int32_t numInputs,
237  const dwDNNPluginTensorDesc* outputDescs, int32_t numOutputs,
238  _dwDNNPluginHandle_t handle);
239 
250 dwStatus _dwDNNPlugin_enqueue(int32_t batchSize, const void* const* inputs, void** outputs,
251  void* workspace, cudaStream_t stream, _dwDNNPluginHandle_t handle);
252 
259 dwStatus _dwDNNPlugin_getSerializationSize(size_t* serializationSize, _dwDNNPluginHandle_t handle);
260 
268 dwStatus _dwDNNPlugin_serialize(void* buffer, _dwDNNPluginHandle_t handle);
269 
279 dwStatus _dwDNNPlugin_deserializeFromBuffer(const char8_t* name, const void* buffer,
280  size_t len, _dwDNNPluginHandle_t handle);
281 
291  const dwDNNPluginFieldCollection* fieldCollection,
292  _dwDNNPluginHandle_t handle);
293 
302 dwStatus _dwDNNPlugin_deserializeFromWeights(const dwDNNPluginWeights* weights, int32_t numWeights,
303  _dwDNNPluginHandle_t handle);
304 
312 dwStatus _dwDNNPlugin_getPluginType(const char8_t** pluginType, _dwConstDNNPluginHandle_t handle);
313 
321 dwStatus _dwDNNPlugin_getPluginVersion(const char8_t** pluginVersion, _dwConstDNNPluginHandle_t handle);
322 
330 dwStatus _dwDNNPlugin_setPluginNamespace(const char8_t* pluginNamespace, _dwDNNPluginHandle_t handle);
331 
339 dwStatus _dwDNNPlugin_getPluginNamespace(const char8_t** pluginNamespace, _dwConstDNNPluginHandle_t handle);
340 
352 dwStatus _dwDNNPlugin_isOutputBroadcastAcrossBatch(bool* isOutputBroadcastAcrossBatch,
353  int32_t outputIndex, const bool* inputIsBroadcasted,
354  int32_t numInputs, _dwConstDNNPluginHandle_t handle);
355 
365 dwStatus _dwDNNPlugin_canBroadcastInputAcrossBatch(bool* canBroadcastInputAcrossBatch, int32_t inputIndex,
366  _dwConstDNNPluginHandle_t handle);
367 
378 dwStatus _dwDNNPlugin_getOutputPrecision(dwPrecision* outputPrecision, int32_t outputIndex,
379  const dwPrecision* inputPrecisions, int32_t numInputs,
380  _dwConstDNNPluginHandle_t handle);
381 
390  _dwDNNPluginHandle_t handle);
391 
392 // -----------------------------------------------------------------------------
393 // Deprecated Functions
394 // -----------------------------------------------------------------------------
395 
404 DW_DEPRECATED("WARNING: will be removed in the next major release")
405 dwStatus _dwDNNPlugin_initializeFromWeights(_dwDNNPluginHandle_t* handle, const char8_t* layerName,
406  const dwDNNPluginWeights* weights, int32_t numWeights);
407 
416 DW_DEPRECATED("WARNING: will be removed in the next major release")
417 dwStatus _dwDNNPlugin_initialize(_dwDNNPluginHandle_t* handle, const char8_t* layerName,
418  const void* data, size_t length);
419 
425 DW_DEPRECATED("WARNING: will be removed in the next major release")
426 dwStatus _dwDNNPlugin_release(_dwDNNPluginHandle_t handle);
427 
440 DW_DEPRECATED("WARNING: will be removed in the next major release")
442  int32_t numInputs, const dwBlobSize* outputDimensions,
443  int32_t numOutputs, dwPrecision precision,
444  dwDNNPluginLayout layout, int32_t maxBatchSize,
445  _dwDNNPluginHandle_t handle);
446 
455 DW_DEPRECATED("WARNING: will be removed in the next major release")
457  dwDNNPluginLayout pluginLayout, _dwDNNPluginHandle_t handle);
458 
461 #ifdef __cplusplus
462 }
463 #endif
464 
465 #endif // DW_DNN_PLUGIN_H_
int32_t length
Number of data entries in the plugin attribute.
Definition: DNNPlugin.h:110
INT32 field type.
Definition: DNNPlugin.h:92
dwDNNPluginFieldType
Plugin field type.
Definition: DNNPlugin.h:86
dwStatus _dwDNNPlugin_getSerializationSize(size_t *serializationSize, _dwDNNPluginHandle_t handle)
Returns serialization size.
CHW with 4-element packed channels.
Definition: DNNPlugin.h:68
NVIDIA DriveWorks API: Core Types
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:119
dwStatus _dwDNNPlugin_destroy(_dwDNNPluginHandle_t handle)
Destroys the plugin.
DNN plugin field colleciton.
Definition: DNNPlugin.h:116
char field type.
Definition: DNNPlugin.h:93
DNN plugin field.
Definition: DNNPlugin.h:101
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:70
dwDNNPluginLayout
Represents different layouts for plugins.
Definition: DNNPlugin.h:61
dwPrecision precision
data type of the weights
Definition: DNNPlugin.h:78
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:90
CHW with 2-element packed channels.
Definition: DNNPlugin.h:65
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:130
CHW with 16-element packed channels.
Definition: DNNPlugin.h:69
dwStatus _dwDNNPlugin_deserializeFromWeights(const dwDNNPluginWeights *weights, int32_t numWeights, _dwDNNPluginHandle_t handle)
Deserializes plugin from weights.
dwStatus
Status definition.
Definition: Status.h:178
const void * data
Plugin field attribute data.
Definition: DNNPlugin.h:106
void const * _dwConstDNNPluginHandle_t
Definition: DNNPlugin.h:138
Holds blob dimensions.
Definition: Types.h:560
dwDNNPluginLayout layout
Tensor layout.
Definition: DNNPlugin.h:129
HWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:66
dwBlobSize field type.
Definition: DNNPlugin.h:94
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:68
HWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:67
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 with 2-element packed channels.
Definition: DNNPlugin.h:64
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:137
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:108
dwStatus _dwDNNPlugin_setup(_dwDNNPluginHandle_t handle)
Initializes the created plugin.
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:128
int32_t numFields
Number of dwDNNPluginField entries.
Definition: DNNPlugin.h:118
const char8_t * name
Plugin field attribute name.
Definition: DNNPlugin.h:104
dwBlobSize dims
Tensor dimensions.
Definition: DNNPlugin.h:127
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:76
dwStatus _dwDNNPlugin_getPluginType(const char8_t **pluginType, _dwConstDNNPluginHandle_t handle)
Returns the plugin type as string.
Unknown field type.
Definition: DNNPlugin.h:95
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:80
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:125
INT16 field type.
Definition: DNNPlugin.h:91
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:79