NVIDIA DRIVE OS Linux SDK API Reference

5.2.6 Release
For Test and Development only
nvmedia_dla.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017-2021, NVIDIA CORPORATION. All rights reserved. All
3  * 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 3
48 
49 #define NVMEDIA_DLA_VERSION_MINOR 10
50 
61 #define NVMEDIA_DLA_TENSOR_DESC_NAME_MAX_LEN (80U)
62 
64 #define NVMEDIA_DLA_DEFAULT_TASKTIMEOUT (100000U)
65 
72 typedef struct NvMediaDla NvMediaDla;
73 
77 typedef struct {
79  uint8_t major;
81  uint8_t minor;
83  uint8_t subMinor;
85 
89 typedef enum {
93 
97 typedef struct {
101 
105 typedef struct {
111 
119 
123 typedef struct {
125  uint8_t *loadable;
127  uint64_t loadableSize;
129 
133 typedef struct {
137  uint32_t numArgs;
139 
143 typedef struct {
149  uint32_t numAttrs;
151 
171  NvMediaVersion *version
172 );
173 
191  const uint32_t dlaId
192 );
193 
204 NvMediaDla *
205 NvMediaDlaCreate(void);
206 
221  NvMediaDla *dla
222 );
223 
243  const NvMediaDla *dla,
244  NvMediaDlaUMDVersion *version
245 );
246 
264  const NvMediaDla *dla,
265  uint16_t *numEngines
266 );
267 
287  const NvMediaDla *dla,
288  uint32_t *maxOutstandingTasks
289 );
290 
315  NvMediaDla *dla,
316  uint32_t dlaId,
317  uint32_t numTasks
318 );
319 
340  const NvMediaDla *dla,
341  uint32_t *dlaId
342 );
343 
364  const NvMediaDla *dla,
365  uint32_t *numTasks
366 );
367 
386  NvMediaDla *dla,
387  NvMediaDlaLoadable **loadable
388 );
389 
407  const NvMediaDla *dla,
408  NvMediaDlaLoadable *loadable
409 );
410 
437  const NvMediaDla *dla,
438  const NvMediaDlaBinaryLoadable binaryLoadable,
439  NvMediaDlaLoadable *loadable
440 );
441 
459  NvMediaDla *dla,
460  const NvMediaDlaLoadable *loadable
461 );
462 
482  const NvMediaDla *dla,
483  int32_t *numOfInputTensors
484 );
485 
508  const NvMediaDla *dla,
509  const uint32_t idx,
510  NvMediaDlaTensorDescriptor *descriptor
511 );
512 
532  const NvMediaDla *dla,
533  int32_t *numOfOutputTensors
534 );
535 
559  const NvMediaDla *dla,
560  const uint32_t idx,
561  NvMediaDlaTensorDescriptor *descriptor
562 );
563 
581  const NvMediaDla *dla,
582  const NvMediaDlaData *dlaData,
583  uint32_t flags
584 );
585 
603  const NvMediaDla *dla,
604  const NvMediaDlaData *dlaData
605 );
606 
623  NvMediaDla *dla
624 );
625 
644  NvMediaDla *dla
645 );
646 
695  NvMediaDla *dla,
696  const NvMediaDlaArgs *inputArgs,
697  const NvMediaDlaArgs *scratchpadArgs,
698  const NvMediaDlaArgs *outputArgs,
699  uint32_t taskTimeout
700 );
701 
702 /*
703  * \defgroup history_nvmedia_dla History
704  * Provides change history for the NvMedia DLA API.
705  *
706  * \section history_nvmedia_dla Version History
707  *
708  * <b> Version 1.0 </b> Oct 31, 2017
709  * - Initial Release.
710  *
711  * <b> Version 1.1 </b> Feb 12, 2018
712  * - Add separate functionality to load from memory.
713  *
714  * <b> Version 1.2 </b> Mar 12, 2018
715  * - Add query API's for version, num engines, maxOutstandingRequests.
716  *
717  * <c> Version 1.3 </b> Mar 26, 2018
718  * - Add helper to query tensor descriptor.
719  *
720  * <c> Version 1.4 </b> May 3, 2018
721  * - Add dynamic task timeout support.
722  *
723  * <c> Version 2.0 </b> June 26, 2018
724  * - Remove load using filename functionality.
725  *
726  * <c> Version 2.1 </b> August 13, 2018
727  * - Add NvMediaDlaPingById. NvMediaDlaPing will be deprecated in the future.
728  *
729  * <c> Version 2.2 </b> Oct 1, 2018
730  * - Add new API NvMediaDlaGetUMDVersion and data structure NvMediaDlaUMDVersion.
731  *
732  * <c> Version 2.3 </b> Dec 14, 2018
733  * - Add new API NvMediaLoadableIdCreate, NvMediaLoadableIdDestroy,
734  * NvMediaDlaAppendLoadable, NvMediaDlaLoadLoadable, NvMediaDlaSetCurrentLoadable,
735  * NvMediaDlaInit, NvMediaDlaGetScratchpadDescriptor and NvMediaDlaBindScratchpad.
736  * - Add new structure NvMediaDlaLoadableId, NvMediaDlaLoadable and NvMediaDlaScratchpadDescriptor.
737  *
738  * <c> Version 2.4 </b> Jan 9, 2019
739  * - Remove NvMediaImage as Dla data.
740  *
741  * <c> Version 2.5 </b> Mar 7, 2019
742  * - Rename NvMediaLoadableIdCreate to NvMediaDlaLoadableIdCreate.
743  * - Rename NvMediaLoadableIdDestroy to NvMediaDlaLoadableIdDestroy.
744  *
745  * <c> Version 2.6 </b> Mar 11, 2019
746  * - Add new API NvMediaDlaDataRegister and NvMediaDlaDataUnRegister.
747  *
748  * <c> Version 2.7 </b> Mar 13, 2019
749  * - Deprecate NvMediaDlaPing API.
750  *
751  * <c> Version 2.8 </b> Mar 14, 2019
752  * - Deprecate NvMediaDlaSubmit API.
753  *
754  * <c> Version 3.0 </b> April 19, 2019
755  * - Add NvMediaDlaSubmit as new API for task submission.
756  * - Move to new APIs for NvMediaDla programming.
757  * - Mark NvMediaDlaLoadFromMemory, NvMediaDlaSubmitTimeout
758  * and NvMediaDlaGetMaxOutstandingRequests as deprecated APIs.
759  *
760  * <c> Version 3.1 </b> July 08, 2019
761  * - Remove the restriction of calling sequence for data registration.
762  *
763  * <c> Version 3.2 </b> July 30, 2019
764  * - Deleting NvMediaDlaGetScratchpadDescriptor and NvMediaDlaBindScratchpad.
765  * - added const for parameters in APIs that do not modify the parameter
766  *
767  * <c> Version 3.3 </b> Sep 9th, 2019
768  * - Deprecate following APIs: NvMediaDlaLoadFromMemory, NvMediaDlaSubmitTimeout
769  * and NvMediaDlaGetMaxOutstandingRequests
770  *
771  * <c> Version 3.4 </b> Jan 22, 2020
772  * - Add const to NvMediaDlaSubmit to comply with MISRA rule 8.13
773  *
774  * <c> Version 3.5 </b> Mar 28, 2020
775  * - Update possible return status of NvMediaDlaGetNumEngines, NvMediaDlaGetInstanceId,
776  * NvMediaDlaGetNumTasks, NvMediaDlaSubmit.
777  *
778  * <c> Version 3.6 </b> Apr 24, 2020
779  * - Removed const from NvMediaDlaSetCurrentLoadable and
780  * NvMediaDlaRemoveLoadable to support new functionality
781  *
782  * <c> Version 3.7 </b> Nov 30, 2020
783  * - Updated doxygen comments for NvMediaDlaSubmit.
784  *
785  * <c> Version 3.8 </b> Jan 5, 2021
786  * - Updated last sentence of NvMediaDlaSubmit restrictions.
787  *
788  * <c> Version 3.9 </b> Mar 1, 2021
789  * - Updated doxy comments for NvMediaDlaSubmit,NvMediaDlaGetInput/OutputTensorDescriptor.
790  *
791  * <c> Version 3.10 </b> Mar 22, 2021
792  * - Updated doxy comments for NvMediaDlaAppendLoadable.
793  */
798 #ifdef __cplusplus
799 }
800 #endif
801 
802 #endif // NVMEDIA_DLA_H
NvMediaDlaDataPointer::tensor
NvMediaTensor * tensor
A pointer to NvMediaTensor.
Definition: nvmedia_dla.h:99
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:81
NvMediaDlaArgs
Holds input and output DLA data.
Definition: nvmedia_dla.h:133
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:97
NvMediaDlaDataUnregister
NvMediaStatus NvMediaDlaDataUnregister(const NvMediaDla *dla, const NvMediaDlaData *dlaData)
Unregisters an NvMediaDlaData after use.
NvMediaDlaLoadable
struct NvMediaDlaLoadable NvMediaDlaLoadable
Holds a handle to NvMediaDlaLoadable.
Definition: nvmedia_dla.h:118
NvMediaDlaInit
NvMediaStatus NvMediaDlaInit(NvMediaDla *dla, uint32_t dlaId, uint32_t numTasks)
Configures the context for a particular DLA engine.
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:237
NvMediaDlaUMDVersion
Holds the DLA UMD version.
Definition: nvmedia_dla.h:77
NvMediaDlaArgs::numArgs
uint32_t numArgs
Number of NvMediaDlaData.
Definition: nvmedia_dla.h:137
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:79
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:81
NVM_TENSOR_ATTR_MAX
@ NVM_TENSOR_ATTR_MAX
Defines the maximum number of tensor creation attributes.
Definition: nvmedia_tensor.h:111
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.
NvMediaStatus
NvMediaStatus
Defines all possible error codes.
Definition: nvmedia_core.h:180
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:61
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:149
NvMediaDlaBinaryLoadable::loadable
uint8_t * loadable
Pointer to in-memory loadable.
Definition: nvmedia_dla.h:125
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:143
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:127
NvMediaDlaBinaryLoadable
Holds attributes for populating binary loadables for NvMediaDla.
Definition: nvmedia_dla.h:123
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:72
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.
NvMediaDlaData::type
NvMediaDlaDataType type
An NvMediaDlaDataType type.
Definition: nvmedia_dla.h:107
NVMEDIA_DLA_DATA_TYPE_TENSOR
@ NVMEDIA_DLA_DATA_TYPE_TENSOR
NvMediaTensor data type.
Definition: nvmedia_dla.h:91
NvMediaDlaDestroy
NvMediaStatus NvMediaDlaDestroy(NvMediaDla *dla)
Destroys a DLA engine instance created by NvMediaDlaCreate().
NvMediaTensorAttr
Holds tensor creation attributes.
Definition: nvmedia_tensor.h:145
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:109
NvMediaDlaDataType
NvMediaDlaDataType
Defines the data types that DLA can operate on.
Definition: nvmedia_dla.h:89
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:83
NvMediaDlaArgs::dlaData
NvMediaDlaData * dlaData
Pointer to array of NvMediaDlaData.
Definition: nvmedia_dla.h:135
NvMediaDlaData
Specifies the data type and data pointer.
Definition: nvmedia_dla.h:105