From 454deef83c14ae33543d289ac40d3a6ad277a3cf Mon Sep 17 00:00:00 2001 From: hongruichen Date: Wed, 17 Jul 2024 20:53:53 +0800 Subject: [PATCH] register qnn backend --- ggml/include/ggml-qnn.h | 2 -- ggml/src/ggml-backend.c | 5 +++++ ggml/src/ggml-qnn.cpp | 4 +--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/ggml/include/ggml-qnn.h b/ggml/include/ggml-qnn.h index 026c6ddf0..2433af166 100644 --- a/ggml/include/ggml-qnn.h +++ b/ggml/include/ggml-qnn.h @@ -18,8 +18,6 @@ enum QNNBackend { // QNN and original GGML }; -GGML_API int ggml_backend_qnn_reg_devices(void); - /** * * @param device 0: QNN_BACKEND_CPU 1: QNN_BACKEND_GPU 2: diff --git a/ggml/src/ggml-backend.c b/ggml/src/ggml-backend.c index dbbaa3941..80272855d 100644 --- a/ggml/src/ggml-backend.c +++ b/ggml/src/ggml-backend.c @@ -445,6 +445,11 @@ GGML_CALL static void ggml_backend_registry_init(void) { extern GGML_CALL void ggml_backend_kompute_reg_devices(void); ggml_backend_kompute_reg_devices(); #endif + +#ifdef GGML_USE_QNN + extern GGML_CALL void ggml_backend_qnn_reg_devices(void); + ggml_backend_qnn_reg_devices(); +#endif } GGML_CALL void ggml_backend_register(const char * name, ggml_backend_init_fn init_fn, ggml_backend_buffer_type_t default_buffer_type, void * user_data) { diff --git a/ggml/src/ggml-qnn.cpp b/ggml/src/ggml-qnn.cpp index 13998a73e..f8031bb0f 100644 --- a/ggml/src/ggml-qnn.cpp +++ b/ggml/src/ggml-qnn.cpp @@ -534,13 +534,11 @@ ggml_backend_t ggml_backend_qnn_init(size_t device, const char *qnn_lib_path) { return qnn_backend; } -int ggml_backend_qnn_reg_devices() { +extern "C" GGML_CALL void ggml_backend_qnn_reg_devices() { for (size_t idx = 0; idx < GGML_QNN_MAX_DEVICES; idx++) { char name[GGML_MAX_NAME]; ggml_backend_qnn_get_device_description(idx, name, GGML_MAX_NAME); ggml_backend_register(name, ggml_backend_qnn_reg_init, ggml_backend_qnn_buffer_type(idx), (void *)(intptr_t)idx); } - - return GGML_QNN_MAX_DEVICES; }