Skip to content

Commit 206dec8

Browse files
committed
verify op config before add to node
1 parent 1e66c16 commit 206dec8

File tree

2 files changed

+27
-21
lines changed

2 files changed

+27
-21
lines changed

ggml/src/ggml-qnn/op-config-impl.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,15 @@ bool ggml_qnn_op_config_base::add_op_to_graph(Qnn_GraphHandle_t graph_handle) {
128128
_qnn_tensor_outputs[i] = tensor->get_qnn_tensor();
129129
}
130130

131+
auto op_config = get_op_config();
131132
auto qnn_interface = _qnn_instance->get_qnn_interface();
132-
auto error = qnn_interface->qnn_graph_add_node(graph_handle, get_op_config());
133+
auto error = qnn_interface->qnn_backend_validate_op_config(_qnn_instance->get_qnn_backend_handle(), op_config);
134+
if (error != QNN_SUCCESS) {
135+
QNN_LOG_ERROR("[%s]qnn_backend_validate_op_config.error: %s\n", _name.c_str(), get_qnn_error_string(error));
136+
return false;
137+
}
138+
139+
error = qnn_interface->qnn_graph_add_node(graph_handle, op_config);
133140
if (error != QNN_SUCCESS) {
134141
QNN_LOG_ERROR("[%s]qnn_graph_add_node.error: %s\n", _name.c_str(), get_qnn_error_string(error));
135142
return false;

ggml/src/ggml-qnn/qnn-lib.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -303,25 +303,6 @@ bool qnn_instance::qnn_init(const QnnSaver_Config_t ** saver_config) {
303303
#endif
304304
}
305305
}
306-
307-
{
308-
auto & op_package_info = get_op_package_lib_info(_soc_info.soc_model, _soc_info.htp_arch);
309-
if (op_package_info.extra_lib_name) {
310-
_custom_op_extra_lib_handle =
311-
load_lib_with_fallback(op_package_info.extra_lib_name, _additional_lib_load_path);
312-
}
313-
314-
qnn_status = _qnn_interface->qnn_backend_register_op_package(_qnn_backend_handle, op_package_info.lib_name,
315-
op_package_info.interface, op_package_info.type);
316-
if (qnn_status != QNN_SUCCESS) {
317-
QNN_LOG_WARN("failed to register op package %s, interface: %s, error: %s\n", op_package_info.lib_name,
318-
op_package_info.interface, qnn::get_qnn_error_string(qnn_status));
319-
} else {
320-
QNN_LOG_DEBUG("register op package %s successfully\n", op_package_info.lib_name);
321-
_has_custom_op_package = true;
322-
}
323-
}
324-
325306
{
326307
if (_backend_lib_name.find("Htp") != _backend_lib_name.npos) {
327308
QnnHtpDevice_CustomConfig_t soc_customconfig;
@@ -381,7 +362,7 @@ bool qnn_instance::qnn_init(const QnnSaver_Config_t ** saver_config) {
381362
const QnnContext_Config_t * context_configs[] = {&qnn_context_config, nullptr};
382363
*/
383364
_qnn_interface->qnn_context_create(_qnn_backend_handle, _qnn_device_handle, nullptr, &_qnn_context_handle);
384-
if (nullptr == _qnn_context_handle) {
365+
if (!_qnn_context_handle) {
385366
QNN_LOG_WARN("failed to initialize qnn context\n");
386367
return false;
387368
} else {
@@ -421,6 +402,24 @@ bool qnn_instance::qnn_init(const QnnSaver_Config_t ** saver_config) {
421402
}
422403
}
423404

405+
{
406+
auto & op_package_info = get_op_package_lib_info(_soc_info.soc_model, _soc_info.htp_arch);
407+
if (op_package_info.extra_lib_name) {
408+
_custom_op_extra_lib_handle =
409+
load_lib_with_fallback(op_package_info.extra_lib_name, _additional_lib_load_path);
410+
}
411+
412+
qnn_status = _qnn_interface->qnn_backend_register_op_package(_qnn_backend_handle, op_package_info.lib_name,
413+
op_package_info.interface, op_package_info.type);
414+
if (qnn_status != QNN_SUCCESS) {
415+
QNN_LOG_WARN("failed to register op package %s, interface: %s, error: %s\n", op_package_info.lib_name,
416+
op_package_info.interface, qnn::get_qnn_error_string(qnn_status));
417+
} else {
418+
QNN_LOG_DEBUG("register op package %s successfully\n", op_package_info.lib_name);
419+
_has_custom_op_package = true;
420+
}
421+
}
422+
424423
QNN_LOG_DEBUG("leave qnn_init\n");
425424
return true;
426425
}

0 commit comments

Comments
 (0)