1# Copyright (c) Qualcomm Innovation Center, Inc. 2# All rights reserved 3# 4# This source code is licensed under the BSD-style license found in the 5# LICENSE file in the root directory of this source tree. 6 7""" 8Please refer to executorch/backends/qualcomm/serialization/schema.fbs for the schema definitions 9""" 10 11from dataclasses import dataclass 12from enum import IntEnum, unique 13 14 15@dataclass 16class BinaryInfo: 17 signature: str = "" 18 data: bytes = None 19 20 21@unique 22class HtpArch(IntEnum): 23 NONE = 0 24 V68 = 68 25 V69 = 69 26 V73 = 73 27 V75 = 75 28 29 30@dataclass 31class HtpInfo: 32 htp_arch: HtpArch = HtpArch.NONE 33 vtcm_size_in_mb: int = 0 34 35 36@unique 37class QcomChipset(IntEnum): 38 UNKNOWN_SM = 0 39 SM8450 = 36 # v69 40 SM8475 = 42 # v69 41 SM8550 = 43 # v73 42 SSG2115P = 46 # v73 43 SM8650 = 57 # v75 44 SA8295 = 39 # v68 45 46 47@dataclass 48class SocInfo: 49 soc_model: QcomChipset = QcomChipset.UNKNOWN_SM 50 htp_info: HtpInfo = HtpInfo() 51 52 53_soc_info_table = { 54 QcomChipset.SM8450: SocInfo(QcomChipset.SM8450, HtpInfo(HtpArch.V69, 8)), 55 QcomChipset.SM8475: SocInfo(QcomChipset.SM8475, HtpInfo(HtpArch.V69, 8)), 56 QcomChipset.SM8550: SocInfo(QcomChipset.SM8550, HtpInfo(HtpArch.V73, 8)), 57 QcomChipset.SM8650: SocInfo(QcomChipset.SM8650, HtpInfo(HtpArch.V75, 8)), 58 QcomChipset.SSG2115P: SocInfo(QcomChipset.SSG2115P, HtpInfo(HtpArch.V73, 2)), 59 QcomChipset.SA8295: SocInfo(QcomChipset.SA8295, HtpInfo(HtpArch.V68, 8)), 60} 61 62 63@unique 64class QnnExecuTorchHtpPerformanceMode(IntEnum): 65 kHtpDefault = 0 66 kHtpSustainedHighPerformance = 1 67 kHtpBurst = 2 68 kHtpHighPerformance = 3 69 kHtpPowerSaver = 4 70 kHtpLowPowerSaver = 5 71 kHtpHighPowerSaver = 6 72 kHtpLowBalanced = 7 73 kHtpBalanced = 8 74 75 76@unique 77class QnnExecuTorchHtpPrecision(IntEnum): 78 kHtpQuantized = 0 79 kHtpFp16 = 1 80 81 82@unique 83class QnnExecuTorchHtpPdSession(IntEnum): 84 kHtpUnsignedPd = 0 85 kHtpSignedPd = 1 86 87 88@unique 89class QnnExecuTorchBackendType(IntEnum): 90 kUndefinedBackend = 0 91 kGpuBackend = 1 92 kHtpBackend = 2 93 kDspBackend = 3 94 95 96@dataclass 97class QnnExecuTorchHtpBackendOptions: 98 max_sf_buf_size: int = 0 99 performance_mode: QnnExecuTorchHtpPerformanceMode = ( 100 QnnExecuTorchHtpPerformanceMode.kHtpDefault 101 ) 102 precision: QnnExecuTorchHtpPrecision = QnnExecuTorchHtpPrecision.kHtpQuantized 103 pd_session: QnnExecuTorchHtpPdSession = QnnExecuTorchHtpPdSession.kHtpUnsignedPd 104 skel_library_dir: str = "" 105 use_conv_hmx: bool = True 106 use_dlbc: bool = False 107 use_fold_relu: bool = True 108 use_multi_contexts: bool = False 109 use_weight_sharing: bool = False 110 111 112@unique 113class QnnExecuTorchLogLevel(IntEnum): 114 kLogOff = 0 115 kLogLevelError = 1 116 kLogLevelWarn = 2 117 kLogLevelInfo = 3 118 kLogLevelVerbose = 4 119 kLogLevelDebug = 5 120 121 122@unique 123class QnnExecuTorchProfileLevel(IntEnum): 124 kProfileOff = 0 125 kProfileBasic = 1 126 kProfileDetailed = 2 127 kProfileOptrace = 3 128 129 130@dataclass 131class QnnExecuTorchBackendOptions: 132 backend_type: QnnExecuTorchBackendType 133 htp_options: QnnExecuTorchHtpBackendOptions 134 135 136@dataclass 137class QnnExecuTorchOptions: 138 soc_info: SocInfo 139 backend_options: QnnExecuTorchBackendOptions 140 graph_name: str = "" 141 library_path: str = "" 142 log_level: QnnExecuTorchLogLevel = QnnExecuTorchLogLevel.kLogOff 143 online_prepare: bool = False 144 dump_intermediate_outputs: bool = False 145 profile_level: QnnExecuTorchProfileLevel = QnnExecuTorchProfileLevel.kProfileOff 146 shared_buffer: bool = False 147 is_from_context_binary: bool = False 148 multiple_graphs: bool = False 149