NVIDIA DRIVE OS Linux SDK API Reference

6.0.4 Release
nvmedia_dla.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3  * All information contained herein is proprietary and confidential to NVIDIA
4  * Corporation. Any use, reproduction, or disclosure without the written
5  * permission of NVIDIA Corporation is prohibited.
6  */
7 
8 
16 #ifndef NVMEDIA_DLA_H
17 #define NVMEDIA_DLA_H
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 #include "nvmedia_core.h"
24 #include "nvmedia_tensor.h"
25 
47 #define NVMEDIA_DLA_VERSION_MAJOR 4
48 
49 #define NVMEDIA_DLA_VERSION_MINOR 0
50 
51 #define NVMEDIA_DLA_VERSION_PATCH 0
52 
63 #define NVMEDIA_DLA_TENSOR_DESC_NAME_MAX_LEN (80U)
64 
66 #define NVMEDIA_DLA_DEFAULT_TASKTIMEOUT (100000U)
67 
74 typedef struct NvMediaDla NvMediaDla;
75 
79 typedef struct {
81  uint8_t major;
83  uint8_t minor;
85  uint8_t subMinor;
87 
91 typedef enum {
95 
99 typedef struct {
103 
107 typedef struct {
113 
121 
125 typedef struct {
127  uint8_t const *loadable;
129  uint64_t loadableSize;
131 
135 typedef struct {
139  uint32_t numArgs;
141 
145 typedef struct {
151  uint32_t numAttrs;
153 
186  NvMediaVersion *version
187 );
188 
219  const uint32_t dlaId
220 );
221 
245 NvMediaDla *
246 NvMediaDlaCreate(void);
247 
275  NvMediaDla *dla
276 );
277 
310  const NvMediaDla *dla,
311  NvMediaDlaUMDVersion *version
312 );
313 
344  const NvMediaDla *dla,
345  uint16_t *numEngines
346 );
347 
380  const NvMediaDla *dla,
381  uint32_t *maxOutstandingTasks
382 );
383 
421  NvMediaDla *dla,
422  uint32_t dlaId,
423  uint32_t numTasks
424 );
425 
459  const NvMediaDla *dla,
460  uint32_t *dlaId
461 );
462 
496  const NvMediaDla *dla,
497  uint32_t *numTasks
498 );
499 
531  NvMediaDla *dla,
532  NvMediaDlaLoadable **loadable
533 );
534 
565  const NvMediaDla *dla,
566  NvMediaDlaLoadable *loadable
567 );
568 
608  const NvMediaDla *dla,
609  const NvMediaDlaBinaryLoadable binaryLoadable,
610  NvMediaDlaLoadable *loadable
611 );
612 
643  NvMediaDla *dla,
644  const NvMediaDlaLoadable *loadable
645 );
646 
679  const NvMediaDla *dla,
680  int32_t *numOfInputTensors
681 );
682 
718  const NvMediaDla *dla,
719  const uint32_t idx,
720  NvMediaDlaTensorDescriptor *descriptor
721 );
722 
755  const NvMediaDla *dla,
756  int32_t *numOfOutputTensors
757 );
758 
795  const NvMediaDla *dla,
796  const uint32_t idx,
797  NvMediaDlaTensorDescriptor *descriptor
798 );
799 
830  const NvMediaDla *dla,
831  const NvMediaDlaData *dlaData,
832  uint32_t flags
833 );
834 
865  const NvMediaDla *dla,
866  const NvMediaDlaData *dlaData
867 );
868 
898  NvMediaDla *dla
899 );
900 
932  NvMediaDla *dla
933 );
934 
996  NvMediaDla *dla,
997  const NvMediaDlaArgs *inputArgs,
998  const NvMediaDlaArgs *scratchpadArgs,
999  const NvMediaDlaArgs *outputArgs,
1000  uint32_t taskTimeout
1001 );
1002 
1059  NvMediaDla *dla,
1060  const NvMediaDlaArgs *inputArgs,
1061  const NvMediaDlaArgs *scratchpadArgs,
1062  const NvMediaDlaArgs *outputArgs
1063 );
1064 
1065 /*
1066  * \defgroup history_nvmedia_dla History
1067  * Provides change history for the NvMedia DLA API.
1068  *
1069  * \section history_nvmedia_dla Version History
1070  *
1071  * <b> Version 1.0 </b> Oct 31, 2017
1072  * - Initial Release.
1073  *
1074  * <b> Version 1.1 </b> Feb 12, 2018
1075  * - Add separate functionality to load from memory.
1076  *
1077  * <b> Version 1.2 </b> Mar 12, 2018
1078  * - Add query API's for version, num engines, maxOutstandingRequests.
1079  *
1080  * <c> Version 1.3 </b> Mar 26, 2018
1081  * - Add helper to query tensor descriptor.
1082  *
1083  * <c> Version 1.4 </b> May 3, 2018
1084  * - Add dynamic task timeout support.
1085  *
1086  * <c> Version 2.0 </b> June 26, 2018
1087  * - Remove load using filename functionality.
1088  *
1089  * <c> Version 2.1 </b> August 13, 2018
1090  * - Add NvMediaDlaPingById. NvMediaDlaPing will be deprecated in the future.
1091  *
1092  * <c> Version 2.2 </b> Oct 1, 2018
1093  * - Add new API NvMediaDlaGetUMDVersion and data structure NvMediaDlaUMDVersion.
1094  *
1095  * <c> Version 2.3 </b> Dec 14, 2018
1096  * - Add new API NvMediaLoadableIdCreate, NvMediaLoadableIdDestroy,
1097  * NvMediaDlaAppendLoadable, NvMediaDlaLoadLoadable, NvMediaDlaSetCurrentLoadable,
1098  * NvMediaDlaInit, NvMediaDlaGetScratchpadDescriptor and NvMediaDlaBindScratchpad.
1099  * - Add new structure NvMediaDlaLoadableId, NvMediaDlaLoadable and NvMediaDlaScratchpadDescriptor.
1100  *
1101  * <c> Version 2.4 </b> Jan 9, 2019
1102  * - Remove NvMediaImage as Dla data.
1103  *
1104  * <c> Version 2.5 </b> Mar 7, 2019
1105  * - Rename NvMediaLoadableIdCreate to NvMediaDlaLoadableIdCreate.
1106  * - Rename NvMediaLoadableIdDestroy to NvMediaDlaLoadableIdDestroy.
1107  *
1108  * <c> Version 2.6 </b> Mar 11, 2019
1109  * - Add new API NvMediaDlaDataRegister and NvMediaDlaDataUnRegister.
1110  *
1111  * <c> Version 2.7 </b> Mar 13, 2019
1112  * - Deprecate NvMediaDlaPing API.
1113  *
1114  * <c> Version 2.8 </b> Mar 14, 2019
1115  * - Deprecate NvMediaDlaSubmit API.
1116  *
1117  * <c> Version 3.0 </b> April 19, 2019
1118  * - Add NvMediaDlaSubmit as new API for task submission.
1119  * - Move to new APIs for NvMediaDla programming.
1120  * - Mark NvMediaDlaLoadFromMemory, NvMediaDlaSubmitTimeout
1121  * and NvMediaDlaGetMaxOutstandingRequests as deprecated APIs.
1122  *
1123  * <c> Version 3.1 </b> July 08, 2019
1124  * - Remove the restriction of calling sequence for data registration.
1125  *
1126  * <c> Version 3.2 </b> July 30, 2019
1127  * - Deleting NvMediaDlaGetScratchpadDescriptor and NvMediaDlaBindScratchpad.
1128  * - added const for parameters in APIs that do not modify the parameter
1129  *
1130  * <c> Version 3.3 </b> Sep 9th, 2019
1131  * - Deprecate following APIs: NvMediaDlaLoadFromMemory, NvMediaDlaSubmitTimeout
1132  * and NvMediaDlaGetMaxOutstandingRequests
1133  *
1134  * <c> Version 3.4 </b> Jan 22, 2020
1135  * - Add const to NvMediaDlaSubmit to comply with MISRA rule 8.13
1136  *
1137  * <c> Version 3.5 </b> Mar 28, 2020
1138  * - Update possible return status of NvMediaDlaGetNumEngines, NvMediaDlaGetInstanceId,
1139  * NvMediaDlaGetNumTasks, NvMediaDlaSubmit.
1140  *
1141  * <c> Version 3.6 </b> Apr 24, 2020
1142  * - Removed const from NvMediaDlaSetCurrentLoadable and
1143  * NvMediaDlaRemoveLoadable to support new functionality
1144  *
1145  * <c> Version 3.7 </b> Nov 30, 2020
1146  * - Updated doxygen comments for NvMediaDlaSubmit.
1147  *
1148  * <c> Version 3.8 </b> Jan 5, 2021
1149  * - Updated last sentence of NvMediaDlaSubmit restrictions.
1150  *
1151  * <c> Version 3.9 </b> Mar 1, 2021
1152  * - Updated doxy comments for NvMediaDlaSubmit,NvMediaDlaGetInput/OutputTensorDescriptor.
1153  *
1154  * <c> Version 3.10 </b> Mar 22, 2021
1155  * - Updated doxy comments for NvMediaDlaAppendLoadable.
1156  *
1157  * <c> Version 3.11 </b> Jul 20, 2021
1158  * - Added "submit with bypass execution" feature (NvMediaDlaSubmitBypass).
1159  *
1160  * <b> Version 3.12 </b> August 20, 2021
1161  * - Update doxygen comments for All APIs to have Thread safety information and API Group information
1162  *
1163  * <b> Version 4.0 </b> September 2, 2021
1164  * - Adding Const Qualifier for loadable member in NvMediaDlaBinaryLoadable
1165  *
1166  * <b> Version 4.0 </b> February 08, 2022
1167  * - Updated the doxygen comments with usage considerations for all APIs.
1168  *
1169  * <b> Version 4.0 </b> April 04, 2022
1170  * - Updated doxy comments for NvMediaDlaAppendLoadable, NvMediaDlaRemoveLoadable.
1171  * - Updated valid range for structures.
1172  *
1173  * <b> Version 4.0.0 </b> May 10, 2022
1174  * - Added patch version number macro: NVMEDIA_DLA_VERSION_PATCH.
1175  *
1176  */
1181 #ifdef __cplusplus
1182 }
1183 #endif
1184 
1185 #endif // NVMEDIA_DLA_H
NvMediaDlaDataPointer::tensor
NvMediaTensor * tensor
A pointer to NvMediaTensor.
Definition: nvmedia_dla.h:101
NvMediaDlaGetNumOfInputTensors
NvMediaStatus NvMediaDlaGetNumOfInputTensors(const NvMediaDla *dla, int32_t *numOfInputTensors)
Gets the number of input tensors for the current loadable in the NvMediaDla context.
NvMediaDlaUMDVersion::minor
uint8_t minor
Minor version.
Definition: nvmedia_dla.h:83
NvMediaDlaArgs
Holds input and output DLA data.
Definition: nvmedia_dla.h:135
NvMediaDlaSubmit
NvMediaStatus NvMediaDlaSubmit(NvMediaDla *dla, const NvMediaDlaArgs *inputArgs, const NvMediaDlaArgs *scratchpadArgs, const NvMediaDlaArgs *outputArgs, uint32_t taskTimeout)
Submits a job to the DLA to run the network on a set of input NvMediaDla arguments and a timeout valu...
NvMediaDlaDataPointer
Holds pointers to the DLA data.
Definition: nvmedia_dla.h:99
NvMediaDlaDataUnregister
NvMediaStatus NvMediaDlaDataUnregister(const NvMediaDla *dla, const NvMediaDlaData *dlaData)
Unregisters an NvMediaDlaData after use.
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:104
NvMediaDlaLoadable
struct NvMediaDlaLoadable NvMediaDlaLoadable
Holds a handle to NvMediaDlaLoadable.
Definition: nvmedia_dla.h:120
NvMediaDlaInit
NvMediaStatus NvMediaDlaInit(NvMediaDla *dla, uint32_t dlaId, uint32_t numTasks)
Configures the context for a particular DLA engine.
NvMediaDlaBinaryLoadable::loadable
const uint8_t * loadable
Pointer to in-memory loadable.
Definition: nvmedia_dla.h:127
NvMediaDlaRemoveLoadable
NvMediaStatus NvMediaDlaRemoveLoadable(NvMediaDla *dla)
Removes the current loadable from the provided NvMediaDla context.
nvmedia_tensor.h
NVIDIA Media Interface: Tensor Processing
NvMediaVersion
Holds NvMedia version information.
Definition: nvmedia_core.h:149
NvMediaDlaUMDVersion
Holds the DLA UMD version.
Definition: nvmedia_dla.h:79
NvMediaDlaArgs::numArgs
uint32_t numArgs
Number of NvMediaDlaData.
Definition: nvmedia_dla.h:139
NvMediaDlaDataRegister
NvMediaStatus NvMediaDlaDataRegister(const NvMediaDla *dla, const NvMediaDlaData *dlaData, uint32_t flags)
Registers an NvMediaDlaData for use with an NvMediaDla handle.
NvMediaDlaAppendLoadable
NvMediaStatus NvMediaDlaAppendLoadable(const NvMediaDla *dla, const NvMediaDlaBinaryLoadable binaryLoadable, NvMediaDlaLoadable *loadable)
Appends a loadable to the NvMediaDla context.
NvMediaDlaUMDVersion::major
uint8_t major
Major version.
Definition: nvmedia_dla.h:81
NvMediaDlaGetNumOfOutputTensors
NvMediaStatus NvMediaDlaGetNumOfOutputTensors(const NvMediaDla *dla, int32_t *numOfOutputTensors)
Gets the number of output tensors for the current loadable in the NvMediaDla context.
NvMediaTensor
struct NvMediaTensor NvMediaTensor
A handle representing tensor objects.
Definition: nvmedia_tensor.h:83
NVM_TENSOR_ATTR_MAX
@ NVM_TENSOR_ATTR_MAX
Defines the maximum number of tensor creation attributes.
Definition: nvmedia_tensor.h:113
nvmedia_core.h
NVIDIA Media Interface: Core
NvMediaDlaGetMaxOutstandingTasks
NvMediaStatus NvMediaDlaGetMaxOutstandingTasks(const NvMediaDla *dla, uint32_t *maxOutstandingTasks)
Returns the maximum number of tasks that can be queued to an instance of an engine.
NvMediaDlaGetNumEngines
NvMediaStatus NvMediaDlaGetNumEngines(const NvMediaDla *dla, uint16_t *numEngines)
Returns the number of DLA hardware engines available.
NvMediaDlaGetInstanceId
NvMediaStatus NvMediaDlaGetInstanceId(const NvMediaDla *dla, uint32_t *dlaId)
Returns the instance id of the NvMediaDla.
NvMediaDlaGetOutputTensorDescriptor
NvMediaStatus NvMediaDlaGetOutputTensorDescriptor(const NvMediaDla *dla, const uint32_t idx, NvMediaDlaTensorDescriptor *descriptor)
Gets the output tensor descriptor for the current loadable in the NvMediaDla context.
NVMEDIA_DLA_TENSOR_DESC_NAME_MAX_LEN
#define NVMEDIA_DLA_TENSOR_DESC_NAME_MAX_LEN
Maximum length of the name of the tensor to store in the descriptor.
Definition: nvmedia_dla.h:63
NvMediaDlaGetUMDVersion
NvMediaStatus NvMediaDlaGetUMDVersion(const NvMediaDla *dla, NvMediaDlaUMDVersion *version)
Returns the version information for the NvMedia DLA UMD library.
NvMediaDlaLoadLoadable
NvMediaStatus NvMediaDlaLoadLoadable(NvMediaDla *dla)
Loads the current loadable to the provided NvMediaDla context.
NvMediaDlaTensorDescriptor::numAttrs
uint32_t numAttrs
Holds the number of tensor attributes in tensorAttrs[ ].
Definition: nvmedia_dla.h:151
NvMediaDlaLoadableCreate
NvMediaStatus NvMediaDlaLoadableCreate(NvMediaDla *dla, NvMediaDlaLoadable **loadable)
Creates a loadable handle.
NvMediaDlaLoadableDestroy
NvMediaStatus NvMediaDlaLoadableDestroy(const NvMediaDla *dla, NvMediaDlaLoadable *loadable)
Destroys a loadable handle.
NvMediaDlaTensorDescriptor
Holds tensor attributes.
Definition: nvmedia_dla.h:145
NvMediaDlaGetVersion
NvMediaStatus NvMediaDlaGetVersion(NvMediaVersion *version)
Returns the version information for the NvMediaDla library.
NvMediaDlaBinaryLoadable::loadableSize
uint64_t loadableSize
Size (in bytes) of in-memory loadable.
Definition: nvmedia_dla.h:129
NvMediaDlaBinaryLoadable
Holds attributes for populating binary loadables for NvMediaDla.
Definition: nvmedia_dla.h:125
NvMediaDlaPingById
NvMediaStatus NvMediaDlaPingById(const uint32_t dlaId)
Checks the status of the DLA engine.
NvMediaDla
struct NvMediaDla NvMediaDla
Holds a handle to the NvMedia DLA device.
Definition: nvmedia_dla.h:74
NvMediaDlaGetInputTensorDescriptor
NvMediaStatus NvMediaDlaGetInputTensorDescriptor(const NvMediaDla *dla, const uint32_t idx, NvMediaDlaTensorDescriptor *descriptor)
Gets the input tensor descriptor for the current loadable in the NvMediaDla context.
NvMediaDlaSubmitBypass
NvMediaStatus NvMediaDlaSubmitBypass(NvMediaDla *dla, const NvMediaDlaArgs *inputArgs, const NvMediaDlaArgs *scratchpadArgs, const NvMediaDlaArgs *outputArgs)
Submits a job to the DLA but its execution is skipped.
NvMediaDlaData::type
NvMediaDlaDataType type
An NvMediaDlaDataType type.
Definition: nvmedia_dla.h:109
NVMEDIA_DLA_DATA_TYPE_TENSOR
@ NVMEDIA_DLA_DATA_TYPE_TENSOR
NvMediaTensor data type.
Definition: nvmedia_dla.h:93
NvMediaDlaDestroy
NvMediaStatus NvMediaDlaDestroy(NvMediaDla *dla)
Destroys a DLA engine instance created by NvMediaDlaCreate().
NvMediaTensorAttr
Holds tensor creation attributes.
Definition: nvmedia_tensor.h:150
NvMediaDlaSetCurrentLoadable
NvMediaStatus NvMediaDlaSetCurrentLoadable(NvMediaDla *dla, const NvMediaDlaLoadable *loadable)
Sets the current loadable for the NvMediaDla.
NvMediaDlaCreate
NvMediaDla * NvMediaDlaCreate(void)
Creates a default context for NvMediaDla.
NvMediaDlaData::pointer
NvMediaDlaDataPointer pointer
A pointer to NvMediaDlaDataPointer.
Definition: nvmedia_dla.h:111
NvMediaDlaDataType
NvMediaDlaDataType
Defines the data types that DLA can operate on.
Definition: nvmedia_dla.h:91
NvMediaDlaGetNumTasks
NvMediaStatus NvMediaDlaGetNumTasks(const NvMediaDla *dla, uint32_t *numTasks)
Returns the number of outstanding tasks of NvMediaDla.
NvMediaDlaUMDVersion::subMinor
uint8_t subMinor
Sub-minor version.
Definition: nvmedia_dla.h:85
NvMediaDlaArgs::dlaData
NvMediaDlaData * dlaData
Pointer to array of NvMediaDlaData.
Definition: nvmedia_dla.h:137
NvMediaDlaData
Specifies the data type and data pointer.
Definition: nvmedia_dla.h:107