DriveWorks SDK Reference
5.10.90 Release
For Test and Development only

DNNPlugin.h
Go to the documentation of this file.
1
2//
3// Notice
4// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
5// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
6// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
7// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
8//
9// NVIDIA CORPORATION & AFFILIATES assumes no responsibility for the consequences of use of such
10// information or for any infringement of patents or other rights of third parties that may
11// result from its use. No license is granted by implication or otherwise under any patent
12// or patent rights of NVIDIA CORPORATION & AFFILIATES. No third party distribution is allowed unless
13// expressly authorized by NVIDIA. Details are subject to change without notice.
14// This code supersedes and replaces all information previously supplied.
15// NVIDIA CORPORATION & AFFILIATES products are not authorized for use as critical
16// components in life support devices or systems without express written approval of
17// NVIDIA CORPORATION & AFFILIATES.
18//
19// SPDX-FileCopyrightText: Copyright (c) 2018-2022 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
20// SPDX-License-Identifier: LicenseRef-NvidiaProprietary
21//
22// NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
23// property and proprietary rights in and to this material, related
24// documentation and any modifications thereto. Any use, reproduction,
25// disclosure or distribution of this material and related documentation
26// without an express license agreement from NVIDIA CORPORATION or
27// its affiliates is 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
53extern "C" {
54#endif
55
59typedef enum dwDNNPluginLayout {
75
79typedef struct dwDNNPluginWeights
80{
82 const void* values;
83 int64_t count;
85
100
104typedef struct dwDNNPluginField
105{
107 const char8_t* name;
109 const void* data;
113 int32_t length;
115
120{
121 int32_t numFields;
124
129{
135
141typedef void const* _dwConstDNNPluginHandle_t;
142
150
159
167
175
183
191
202 int32_t outputIndex, const dwBlobSize* inputDimensions,
203 int32_t numInputs, _dwDNNPluginHandle_t handle);
204
212dwStatus _dwDNNPlugin_getWorkspaceSize(size_t* workspaceSize, int32_t maxBatchSize,
213 _dwDNNPluginHandle_t handle);
214
227 int32_t numInputs, int32_t numOutputs,
229
240 const dwDNNPluginTensorDesc* outputDescs, int32_t numOutputs,
241 _dwDNNPluginHandle_t handle);
242
253dwStatus _dwDNNPlugin_enqueue(int32_t batchSize, const void* const* inputs, void** outputs,
254 void* workspace, cudaStream_t stream, _dwDNNPluginHandle_t handle);
255
263
272
282dwStatus _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
306 _dwDNNPluginHandle_t handle);
307
316
325
333dwStatus _dwDNNPlugin_setPluginNamespace(const char8_t* pluginNamespace, _dwDNNPluginHandle_t handle);
334
343
355dwStatus _dwDNNPlugin_isOutputBroadcastAcrossBatch(bool* isOutputBroadcastAcrossBatch,
356 int32_t outputIndex, const bool* inputIsBroadcasted,
357 int32_t numInputs, _dwConstDNNPluginHandle_t handle);
358
368dwStatus _dwDNNPlugin_canBroadcastInputAcrossBatch(bool* canBroadcastInputAcrossBatch, int32_t inputIndex,
370
381dwStatus _dwDNNPlugin_getOutputPrecision(dwPrecision* outputPrecision, int32_t outputIndex,
382 const dwPrecision* inputPrecisions, int32_t numInputs,
384
393 _dwDNNPluginHandle_t handle);
394
395// -----------------------------------------------------------------------------
396// Deprecated Functions
397// -----------------------------------------------------------------------------
398
407DW_DEPRECATED("WARNING: will be removed in the next major release")
409 const dwDNNPluginWeights* weights, int32_t numWeights);
410
419DW_DEPRECATED("WARNING: will be removed in the next major release")
420dwStatus _dwDNNPlugin_initialize(_dwDNNPluginHandle_t* handle, const char8_t* layerName,
421 const void* data, size_t length);
422
428DW_DEPRECATED("WARNING: will be removed in the next major release")
430
443DW_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
458DW_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: DNN Methods
NVIDIA DriveWorks API: Core Types
float float32_t
Specifies POD types.
Definition: BasicTypes.h:57
#define DW_DEPRECATED(msg)
Definition: Exports.h:66
dwStatus
Status definition.
Definition: Status.h:173
dwPrecision
Precision type definitions.
Definition: Types.h:133
Holds blob dimensions.
Definition: Types.h:257
float32_t scale
Tensor scale.
Definition: DNNPlugin.h:133
int64_t count
the number of weights in the array
Definition: DNNPlugin.h:83
int32_t numFields
Number of dwDNNPluginField entries.
Definition: DNNPlugin.h:121
const void * data
Plugin field attribute data.
Definition: DNNPlugin.h:109
const void * values
the weight values, in a contiguous array
Definition: DNNPlugin.h:82
dwDNNPluginLayout layout
Tensor layout.
Definition: DNNPlugin.h:132
dwPrecision precision
Tensor precision.
Definition: DNNPlugin.h:131
const dwDNNPluginField * fields
Pointer to dwDNNPluginField entries.
Definition: DNNPlugin.h:122
dwBlobSize dims
Tensor dimensions.
Definition: DNNPlugin.h:130
dwPrecision precision
data type of the weights
Definition: DNNPlugin.h:81
int32_t length
Number of data entries in the plugin attribute.
Definition: DNNPlugin.h:113
dwDNNPluginFieldType type
Plugin fild attribute type.
Definition: DNNPlugin.h:111
const char8_t * name
Plugin field attribute name.
Definition: DNNPlugin.h:107
void const * _dwConstDNNPluginHandle_t
Definition: DNNPlugin.h:141
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.
dwDNNPluginFieldType
Plugin field type.
Definition: DNNPlugin.h:89
dwStatus _dwDNNPlugin_create(_dwDNNPluginHandle_t *handle)
Creates a custom plugin.
dwStatus _dwDNNPlugin_clone(_dwDNNPluginHandle_t *out, _dwDNNPluginHandle_t handle)
Clones the plugin.
dwStatus _dwDNNPlugin_serialize(void *buffer, _dwDNNPluginHandle_t handle)
Serializes the plugin to buffer.
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.
dwStatus _dwDNNPlugin_getPluginNamespace(const char8_t **pluginNamespace, _dwConstDNNPluginHandle_t handle)
Returns plugin namespace.
dwStatus _dwDNNPlugin_getWorkspaceSize(size_t *workspaceSize, int32_t maxBatchSize, _dwDNNPluginHandle_t handle)
Returns workspace size.
void * _dwDNNPluginHandle_t
_dwDNNPluginHandle_t can be optionally used for storing and accessing variables among the functions d...
Definition: DNNPlugin.h:140
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_deserializeFromFieldCollection(const char8_t *name, const dwDNNPluginFieldCollection *fieldCollection, _dwDNNPluginHandle_t handle)
Deserializes plugin from field collection.
dwStatus _dwDNNPlugin_getPluginVersion(const char8_t **pluginVersion, _dwConstDNNPluginHandle_t handle)
Returns plugin version as string.
dwStatus _dwDNNPlugin_getPluginType(const char8_t **pluginType, _dwConstDNNPluginHandle_t handle)
Returns the plugin type as string.
dwStatus _dwDNNPlugin_canBroadcastInputAcrossBatch(bool *canBroadcastInputAcrossBatch, int32_t inputIndex, _dwConstDNNPluginHandle_t handle)
Returns whether plugin can use input that is broadcast across batch without replication.
dwStatus _dwDNNPlugin_deserializeFromWeights(const dwDNNPluginWeights *weights, int32_t numWeights, _dwDNNPluginHandle_t handle)
Deserializes plugin from weights.
dwStatus _dwDNNPlugin_setup(_dwDNNPluginHandle_t handle)
Initializes the created plugin.
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_destroy(_dwDNNPluginHandle_t handle)
Destroys the plugin.
dwStatus _dwDNNPlugin_isOutputBroadcastAcrossBatch(bool *isOutputBroadcastAcrossBatch, int32_t outputIndex, const bool *inputIsBroadcasted, int32_t numInputs, _dwConstDNNPluginHandle_t handle)
Returns whether output is broadcast across batch.
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_initializeFromWeights(_dwDNNPluginHandle_t *handle, const char8_t *layerName, const dwDNNPluginWeights *weights, int32_t numWeights)
Initializes the custom plugin from weights.
dwStatus _dwDNNPlugin_getSerializationSize(size_t *serializationSize, _dwDNNPluginHandle_t handle)
Returns serialization size.
dwStatus _dwDNNPlugin_setPluginNamespace(const char8_t *pluginNamespace, _dwDNNPluginHandle_t handle)
Sets plugin namespace.
dwStatus _dwDNNPlugin_release(_dwDNNPluginHandle_t handle)
Releases the custom plugin.
dwStatus _dwDNNPlugin_getNumOutputs(int32_t *numOutputs, _dwDNNPluginHandle_t handle)
Returns number of outputs.
dwDNNPluginLayout
Represents different layouts for plugins.
Definition: DNNPlugin.h:59
dwStatus _dwDNNPlugin_supportsFormat(bool *res, dwPrecision precision, dwDNNPluginLayout pluginLayout, _dwDNNPluginHandle_t handle)
Returns a flag indicating whether the given format is supported.
dwStatus _dwDNNPlugin_getPluginFieldCollection(dwDNNPluginFieldCollection *fieldCollection, _dwDNNPluginHandle_t handle)
Returns a list of fields that needs to be passed to plugin at creation.
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.
dwStatus _dwDNNPlugin_deserializeFromBuffer(const char8_t *name, const void *buffer, size_t len, _dwDNNPluginHandle_t handle)
Deserializes plugin from buffer.
dwStatus _dwDNNPlugin_terminate(_dwDNNPluginHandle_t handle)
Terminates the plugin.
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.
@ DW_DNN_PLUGIN_FIELD_TYPE_FLOAT16
FP16 field type.
Definition: DNNPlugin.h:90
@ DW_DNN_PLUGIN_FIELD_TYPE_FLOAT64
FP64 field type.
Definition: DNNPlugin.h:92
@ DW_DNN_PLUGIN_FIELD_TYPE_CHAR
char field type.
Definition: DNNPlugin.h:96
@ DW_DNN_PLUGIN_FIELD_TYPE_INT8
INT8 field type.
Definition: DNNPlugin.h:93
@ DW_DNN_PLUGIN_FIELD_TYPE_FLOAT32
FP32 field type.
Definition: DNNPlugin.h:91
@ DW_DNN_PLUGIN_FIELD_TYPE_UNKNOWN
Unknown field type.
Definition: DNNPlugin.h:98
@ DW_DNN_PLUGIN_FIELD_TYPE_DIMS
dwBlobSize field type.
Definition: DNNPlugin.h:97
@ DW_DNN_PLUGIN_FIELD_TYPE_INT16
INT16 field type.
Definition: DNNPlugin.h:94
@ DW_DNN_PLUGIN_FIELD_TYPE_INT32
INT32 field type.
Definition: DNNPlugin.h:95
@ DW_DNN_PLUGIN_LAYOUT_DLA_LINEAR
CHW DLA planar format.
Definition: DNNPlugin.h:72
@ DW_DNN_PLUGIN_LAYOUT_NHWC8
HWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:64
@ DW_DNN_PLUGIN_LAYOUT_NCHW
CHW.
Definition: DNNPlugin.h:61
@ DW_DNN_PLUGIN_LAYOUT_CHW4
CHW with 4-element packed channels.
Definition: DNNPlugin.h:66
@ DW_DNN_PLUGIN_LAYOUT_NC2HW2
CHW with 2-element packed channels.
Definition: DNNPlugin.h:62
@ DW_DNN_PLUGIN_LAYOUT_CHW2
CHW with 2-element packed channels.
Definition: DNNPlugin.h:63
@ DW_DNN_PLUGIN_LAYOUT_DLA_HWC4
HWC DLA image format.
Definition: DNNPlugin.h:73
@ DW_DNN_PLUGIN_LAYOUT_CHW32
CHW with 32-element packed channels.
Definition: DNNPlugin.h:68
@ DW_DNN_PLUGIN_LAYOUT_CDHW32
CDHW with 32-element packed channels.
Definition: DNNPlugin.h:70
@ DW_DNN_PLUGIN_LAYOUT_LINEAR
CHW.
Definition: DNNPlugin.h:60
@ DW_DNN_PLUGIN_LAYOUT_HWC8
HWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:65
@ DW_DNN_PLUGIN_LAYOUT_DHWC8
DHWC with 8-element packed channels. (C must be a multiple of 8)
Definition: DNNPlugin.h:69
@ DW_DNN_PLUGIN_LAYOUT_CHW16
CHW with 16-element packed channels.
Definition: DNNPlugin.h:67
@ DW_DNN_PLUGIN_LAYOUT_HWC
HWC Non-vectorized channel-last format.
Definition: DNNPlugin.h:71
DNN plugin field.
Definition: DNNPlugin.h:105
DNN plugin field colleciton.
Definition: DNNPlugin.h:120
DNN Plugin tensor descriptor.
Definition: DNNPlugin.h:129
Stores DNN weights.
Definition: DNNPlugin.h:80