Diego Devesa commited on
Commit
6d7599e
·
1 Parent(s): b73266f

llama : accept a list of devices to use to offload a model (llama/10497)

Browse files

* 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

Files changed (1) hide show
  1. ggml/src/ggml-backend-reg.cpp +11 -2
ggml/src/ggml-backend-reg.cpp CHANGED
@@ -253,6 +253,15 @@ void ggml_backend_device_register(ggml_backend_dev_t device) {
253
  }
254
 
255
  // Backend (reg) enumeration
 
 
 
 
 
 
 
 
 
256
  size_t ggml_backend_reg_count() {
257
  return get_reg().backends.size();
258
  }
@@ -265,7 +274,7 @@ ggml_backend_reg_t ggml_backend_reg_get(size_t index) {
265
  ggml_backend_reg_t ggml_backend_reg_by_name(const char * name) {
266
  for (size_t i = 0; i < ggml_backend_reg_count(); i++) {
267
  ggml_backend_reg_t reg = ggml_backend_reg_get(i);
268
- if (std::strcmp(ggml_backend_reg_name(reg), name) == 0) {
269
  return reg;
270
  }
271
  }
@@ -285,7 +294,7 @@ ggml_backend_dev_t ggml_backend_dev_get(size_t index) {
285
  ggml_backend_dev_t ggml_backend_dev_by_name(const char * name) {
286
  for (size_t i = 0; i < ggml_backend_dev_count(); i++) {
287
  ggml_backend_dev_t dev = ggml_backend_dev_get(i);
288
- if (strcmp(ggml_backend_dev_name(dev), name) == 0) {
289
  return dev;
290
  }
291
  }
 
253
  }
254
 
255
  // Backend (reg) enumeration
256
+ static bool striequals(const char * a, const char * b) {
257
+ for (; *a && *b; a++, b++) {
258
+ if (std::tolower(*a) != std::tolower(*b)) {
259
+ return false;
260
+ }
261
+ }
262
+ return *a == *b;
263
+ }
264
+
265
  size_t ggml_backend_reg_count() {
266
  return get_reg().backends.size();
267
  }
 
274
  ggml_backend_reg_t ggml_backend_reg_by_name(const char * name) {
275
  for (size_t i = 0; i < ggml_backend_reg_count(); i++) {
276
  ggml_backend_reg_t reg = ggml_backend_reg_get(i);
277
+ if (striequals(ggml_backend_reg_name(reg), name)) {
278
  return reg;
279
  }
280
  }
 
294
  ggml_backend_dev_t ggml_backend_dev_by_name(const char * name) {
295
  for (size_t i = 0; i < ggml_backend_dev_count(); i++) {
296
  ggml_backend_dev_t dev = ggml_backend_dev_get(i);
297
+ if (striequals(ggml_backend_dev_name(dev), name)) {
298
  return dev;
299
  }
300
  }