From ac33379a35588ad7efd77c81b154380969588434 Mon Sep 17 00:00:00 2001 From: Diego Devesa Date: Mon, 25 Nov 2024 19:30:06 +0100 Subject: [PATCH] llama : accept a list of devices to use to offload a model (llama/10497) * llama : accept a list of devices to use to offload a model * accept `--dev none` to completely disable offloading * fix dev list with dl backends * rename env parameter to LLAMA_ARG_DEVICE for consistency --- ggml/src/ggml-backend-reg.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/ggml/src/ggml-backend-reg.cpp b/ggml/src/ggml-backend-reg.cpp index 43d03d7f..a0e0e2c5 100644 --- a/ggml/src/ggml-backend-reg.cpp +++ b/ggml/src/ggml-backend-reg.cpp @@ -253,6 +253,15 @@ void ggml_backend_device_register(ggml_backend_dev_t device) { } // Backend (reg) enumeration +static bool striequals(const char * a, const char * b) { + for (; *a && *b; a++, b++) { + if (std::tolower(*a) != std::tolower(*b)) { + return false; + } + } + return *a == *b; +} + size_t ggml_backend_reg_count() { return get_reg().backends.size(); } @@ -265,7 +274,7 @@ ggml_backend_reg_t ggml_backend_reg_get(size_t index) { ggml_backend_reg_t ggml_backend_reg_by_name(const char * name) { for (size_t i = 0; i < ggml_backend_reg_count(); i++) { ggml_backend_reg_t reg = ggml_backend_reg_get(i); - if (std::strcmp(ggml_backend_reg_name(reg), name) == 0) { + if (striequals(ggml_backend_reg_name(reg), name)) { return reg; } } @@ -285,7 +294,7 @@ ggml_backend_dev_t ggml_backend_dev_get(size_t index) { ggml_backend_dev_t ggml_backend_dev_by_name(const char * name) { for (size_t i = 0; i < ggml_backend_dev_count(); i++) { ggml_backend_dev_t dev = ggml_backend_dev_get(i); - if (strcmp(ggml_backend_dev_name(dev), name) == 0) { + if (striequals(ggml_backend_dev_name(dev), name)) { return dev; } }