Skip to content

Commit 604cd9e

Browse files
author
zhouwg
committed
ggml-qnn: rebase upstream
1 parent c1d283e commit 604cd9e

File tree

1 file changed

+11
-3
lines changed

1 file changed

+11
-3
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3299,6 +3299,12 @@ static uint8_t * ggmlqnn_create_rpc_buffer(qnn_instance * instance, const ggml_t
32993299
}
33003300

33013301
static void ggmlqnn_load_cfg() {
3302+
//this function can be called in various scenarios
3303+
static bool initialized = false;
3304+
if (initialized) {
3305+
GGMLQNN_LOG_DEBUG("qnn cfg file already loadded\n");
3306+
return;
3307+
}
33023308
char time_string[GGML_QNN_TMPBUF_LEN];
33033309
memset(time_string, 0, GGML_QNN_TMPBUF_LEN);
33043310
ggmlqnn_get_timestring(time_string);
@@ -3333,6 +3339,7 @@ static void ggmlqnn_load_cfg() {
33333339
} else {
33343340
g_qnn_params.precision_mode = 0;
33353341
}
3342+
initialized = true;
33363343
}
33373344

33383345
static Qnn_Tensor_t * ggmlqnn_create_general_tensor(qnn_instance * instance, Qnn_GraphHandle_t graph_handle,
@@ -4008,8 +4015,7 @@ static ggml_backend_t ggml_backend_qnn_device_init_backend(ggml_backend_dev_t de
40084015
GGMLQNN_LOG_INFO("enter %s\n", __func__);
40094016
size_t dev_index = 0;
40104017

4011-
//case-1: special scenario, such as test-backend-ops or other similar scenairo: calling ggml_backend_qnn_device_init_backend directly in user's applicaton
4012-
//call ggmlqnn_load_cfg accordingly in this place
4018+
//case-1: test-backend-ops or other similar scenairo: calling ggml_backend_dev_init(dev, reinterpret_cast<const char *>(i)) directly in user's code
40134019
ggmlqnn_load_cfg();
40144020
GGMLQNN_LOG_INFO("user's specified qnn_backend in cfgfile = %d", g_qnn_params.qnn_backend);
40154021
GGMLQNN_LOG_INFO("user's sepcified qnn runtime lib path in cfgfile = %s", g_qnn_params.qnn_runtimelib_path);
@@ -4188,8 +4194,8 @@ ggml_backend_reg_t ggml_backend_qnn_reg() {
41884194
static ggml_backend_reg reg;
41894195
static bool initialized = false;
41904196
GGMLQNN_LOG_DEBUG("enter ggml_backend_qnn_reg");
4197+
41914198
//case-2: normal scenario, such as llama-cli or UI applicaton
4192-
//call ggmlqnn_load_cfg accordingly in this place
41934199
ggmlqnn_load_cfg();
41944200
GGMLQNN_LOG_INFO("user's specified qnn_backend=%d", g_qnn_params.qnn_backend);
41954201
GGMLQNN_LOG_INFO("user's sepcified qnn runtime lib path=%s", g_qnn_params.qnn_runtimelib_path);
@@ -4238,6 +4244,8 @@ ggml_backend_t ggml_backend_qnn_init(size_t device, const char * qnn_lib_path) {
42384244
int result = 0;
42394245

42404246
GGMLQNN_LOG_INFO("enter %s\n", __func__);
4247+
//case-3: calling ggml_backend_qnn_init() directly in user's code
4248+
ggmlqnn_load_cfg();
42414249

42424250
if (nullptr == qnn_lib_path)
42434251
return nullptr;

0 commit comments

Comments
 (0)