@@ -51,6 +51,9 @@ Error QnnBackendCache::GetQnnGraphInfoFromBinary() {
51
51
} else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_2) {
52
52
num_graphs = binaryinfo->contextBinaryInfoV2 .numGraphs ;
53
53
graph = binaryinfo->contextBinaryInfoV2 .graphs ;
54
+ } else if (binaryinfo->version == QNN_SYSTEM_CONTEXT_BINARY_INFO_VERSION_3) {
55
+ num_graphs = binaryinfo->contextBinaryInfoV3 .numGraphs ;
56
+ graph = binaryinfo->contextBinaryInfoV3 .graphs ;
54
57
} else {
55
58
QNN_EXECUTORCH_LOG_WARN (
56
59
" Unknown QNN BinaryInfo version %d." , binaryinfo->version );
@@ -65,28 +68,45 @@ Error QnnBackendCache::GetQnnGraphInfoFromBinary() {
65
68
return Error::Internal;
66
69
}
67
70
68
- // only have version_1 now
69
- if (graph[0 ].version != QNN_SYSTEM_CONTEXT_GRAPH_INFO_VERSION_1) {
71
+ if (graph[0 ].version == QNN_SYSTEM_CONTEXT_GRAPH_INFO_VERSION_1) {
72
+ // get graph name from metadata
73
+ graph_name_ = graph->graphInfoV1 .graphName ;
74
+
75
+ // get graph inputs from metadata
76
+ uint32_t numGraphInputs = graph->graphInfoV1 .numGraphInputs ;
77
+ input_tensor_structs_.reserve (numGraphInputs);
78
+ for (std::uint32_t i = 0 ; i < numGraphInputs; ++i) {
79
+ input_tensor_structs_.emplace_back (graph->graphInfoV1 .graphInputs [i]);
80
+ }
81
+
82
+ // get graph outputs from metadata
83
+ uint32_t numGraphOutputs = graph->graphInfoV1 .numGraphOutputs ;
84
+ output_tensor_structs_.reserve (numGraphOutputs);
85
+ for (std::uint32_t i = 0 ; i < numGraphOutputs; ++i) {
86
+ output_tensor_structs_.emplace_back (graph->graphInfoV1 .graphOutputs [i]);
87
+ }
88
+ } else if (graph[0 ].version == QNN_SYSTEM_CONTEXT_GRAPH_INFO_VERSION_3) {
89
+ // get graph name from metadata
90
+ graph_name_ = graph->graphInfoV3 .graphName ;
91
+
92
+ // get graph inputs from metadata
93
+ uint32_t numGraphInputs = graph->graphInfoV3 .numGraphInputs ;
94
+ input_tensor_structs_.reserve (numGraphInputs);
95
+ for (std::uint32_t i = 0 ; i < numGraphInputs; ++i) {
96
+ input_tensor_structs_.emplace_back (graph->graphInfoV3 .graphInputs [i]);
97
+ }
98
+
99
+ // get graph outputs from metadata
100
+ uint32_t numGraphOutputs = graph->graphInfoV3 .numGraphOutputs ;
101
+ output_tensor_structs_.reserve (numGraphOutputs);
102
+ for (std::uint32_t i = 0 ; i < numGraphOutputs; ++i) {
103
+ output_tensor_structs_.emplace_back (graph->graphInfoV3 .graphOutputs [i]);
104
+ }
105
+ } else {
70
106
QNN_EXECUTORCH_LOG_WARN (
71
107
" Unknown QNN GraphInfo version %d." , graph[0 ].version );
72
108
return Error::Internal;
73
109
}
74
- // get graph name from metadata
75
- graph_name_ = graph->graphInfoV1 .graphName ;
76
-
77
- // get graph inputs from metadata
78
- uint32_t numGraphInputs = graph->graphInfoV1 .numGraphInputs ;
79
- input_tensor_structs_.reserve (numGraphInputs);
80
- for (std::uint32_t i = 0 ; i < numGraphInputs; ++i) {
81
- input_tensor_structs_.emplace_back (graph->graphInfoV1 .graphInputs [i]);
82
- }
83
-
84
- // get graph outputs from metadata
85
- uint32_t numGraphOutputs = graph->graphInfoV1 .numGraphOutputs ;
86
- output_tensor_structs_.reserve (numGraphOutputs);
87
- for (std::uint32_t i = 0 ; i < numGraphOutputs; ++i) {
88
- output_tensor_structs_.emplace_back (graph->graphInfoV1 .graphOutputs [i]);
89
- }
90
110
91
111
return Error::Ok;
92
112
}
0 commit comments