Program Listing for File QnnDspGraph.h¶
↰ Return to documentation for file (include/QNN/DSP/QnnDspGraph.h)
//=============================================================================
//
// Copyright (c) 2022-2023 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
//
//=============================================================================
/**
* @file
* @brief QNN DSP component Graph API.
*
* The interfaces in this file work with the top level QNN
* API and supplements QnnGraph.h for DSP backend
*/
#ifndef QNN_DSP_GRAPH_H
#define QNN_DSP_GRAPH_H
#include "QnnGraph.h"
#ifdef __cplusplus
extern "C" {
#endif
//=============================================================================
// Macros
//=============================================================================
//=============================================================================
// Data Types
//=============================================================================
/**
* @brief This enum provides different DSP graph optimization
* options that can be used to finalize the graph
* for optimum performance.
*/
typedef enum {
QNN_DSP_GRAPH_OPTIMIZATION_TYPE_SCHEDULE_THRESHOLD = 1,
QNN_DSP_GRAPH_OPTIMIZATION_TYPE_FINALIZE_RETRIES = 2,
QNN_DSP_GRAPH_OPTIMIZATION_TYPE_FINALIZE_OPTIMIZATION_FLAG = 3,
QNN_DSP_GRAPH_OPTIMIZATION_TYPE_ENABLE_DLBC = 4,
QNN_DSP_GRAPH_OPTIMIZATION_TYPE_UNKNOWN = 0x7fffffff
} QnnDspGraph_OptimizationType_t;
// clang-format off
/**
* @brief Struct describing the set of optimization types
* and the values associated with each optimization type.
*
* Below is the Map between QnnDspGraph_OptimizationType_t and allowable values:
*
* \verbatim embed:rst:leading-asterisk
* +----+------------------------------------------------------------+-----------------------------------------------------------+
* | # | OptimizationType option | Allowable values |
* +====+============================================================+===========================================================+
* | 1 | QNN_DSP_GRAPH_OPTIMIZATION_TYPE_SCHEDULE_THRESHOLD | Reserved |
* +----+------------------------------------------------------------+-----------------------------------------------------------+
* | 2 | QNN_DSP_GRAPH_OPTIMIZATION_TYPE_FINALIZE_RETRIES | Reserved |
* +----+------------------------------------------------------------+-----------------------------------------------------------+
* | 3 | QNN_DSP_GRAPH_OPTIMIZATION_TYPE_FINALIZE_OPTIMIZATION_FLAG | Defines the optimization strategy used by the HTP backend |
* | | | |
* | | | 1 = Faster preparation time, less optimal graph |
* | | | |
* | | | 2 = More optimal graph but may take longer to prepare |
* +----+------------------------------------------------------------+-----------------------------------------------------------+
* | 4 | QNN_DSP_GRAPH_OPTIMIZATION_TYPE_ENABLE_DLBC | Reserved |
* +----+------------------------------------------------------------+-----------------------------------------------------------+
* \endverbatim
*/
typedef struct {
QnnDspGraph_OptimizationType_t type;
float floatValue;
} QnnDspGraph_OptimizationOption_t;
/// QnnDspGraph_OptimizationOption_t initializer macro
#define QNN_DSP_GRAPH_OPTIMIZATION_OPTION_INIT \
{ \
QNN_DSP_GRAPH_OPTIMIZATION_TYPE_UNKNOWN, /*type*/ \
0.0f /*floatValue*/ \
}
// clang-format on
/**
* @brief This enum provides different DSP graph configuration
* options associated with QnnGraph
*/
typedef enum {
QNN_DSP_GRAPH_CONFIG_OPTION_OPTIMIZATION = 1,
QNN_DSP_GRAPH_CONFIG_OPTION_ENCODING = 2,
QNN_DSP_GRAPH_CONFIG_OPTION_PRIORITY = 3,
QNN_DSP_GRAPH_CONFIG_OPTION_PRECISION = 4,
QNN_DSP_GRAPH_CONFIG_OPTION_UNKNOWN = 0x7fffffff
} QnnDspGraph_ConfigOption_t;
typedef enum {
QNN_DSP_GRAPH_ENCODING_DYNAMIC = 1,
/** @deprecated
*/
QNN_DSP_GRAPH_ENCOING_DYNAMIC = QNN_DSP_GRAPH_ENCODING_DYNAMIC,
QNN_DSP_GRAPH_ENCODING_STATIC = 2,
/** @deprecated
*/
QNN_DSP_GRAPH_ENCOING_STATIC = QNN_DSP_GRAPH_ENCODING_STATIC,
QNN_DSP_GRAPH_ENCODING_UNKNOWN = 0x7fffffff,
/** @deprecated
*/
QNN_DSP_GRAPH_ENCOING_UNKNOW = QNN_DSP_GRAPH_ENCODING_UNKNOWN
} QnnDspGraph_Encoding_t;
//=============================================================================
// Public Functions
//=============================================================================
//------------------------------------------------------------------------------
// Implementation Definition
//------------------------------------------------------------------------------
// clang-format off
/**
* @brief Structure describing the set of configurations supported by graph.
* Objects of this type are to be referenced through QnnGraph_CustomConfig_t.
*
* The struct has two fields - option and a union of corresponding config values
* Based on the option corresponding item in the union can be used to specify
* config.
*
* Below is the Map between QnnDspGraph_ConfigOption_t and config value
*
* \verbatim embed:rst:leading-asterisk
* +----+------------------------------------------+------------------------------------+
* | # | Config Option | Configuration Struct/value |
* +====+==========================================+====================================+
* | 1 | QNN_DSP_GRAPH_CONFIG_OPTION_OPTIMIZATION | QnnDspGraph_OptimizationOption_t |
* +----+------------------------------------------+------------------------------------+
* | 2 | QNN_DSP_GRAPH_CONFIG_OPTION_ENCODING | QnnDspGraph_Encoding_t |
* +----+------------------------------------------+------------------------------------+
* | 3 | QNN_DSP_GRAPH_CONFIG_OPTION_PRECISION | Qnn_Precision_t |
* +----+------------------------------------------+------------------------------------+
* | 4 | QNN_DSP_GRAPH_CONFIG_OPTION_PRIORITY | Qnn_Priority_t |
* +----+------------------------------------------+------------------------------------+
* \endverbatim
*/
typedef struct {
QnnDspGraph_ConfigOption_t option;
union {
QnnDspGraph_OptimizationOption_t optimizationOption;
QnnDspGraph_Encoding_t encoding;
Qnn_Priority_t priority;
Qnn_Precision_t precision;
};
} QnnDspGraph_CustomConfig_t;
// clang-format on
/// QnnDspGraph_CustomConfig_t initializer macro
#define QNN_DSP_GRAPH_CUSTOM_CONFIG_INIT \
{ \
QNN_DSP_GRAPH_CONFIG_OPTION_UNKNOWN, /*option*/ \
{ \
QNN_DSP_GRAPH_OPTIMIZATION_OPTION_INIT /*optimizationOption*/ \
} \
}
#ifdef __cplusplus
} // extern "C"
#endif
#endif