Skip to content

Commit 243f460

Browse files
committed
rename ggml_backend_load_cpu_variants to ggml_backend_load_all_variants [no ci]
This commit renames and modifies the function ggml_backend_load_cpu_variants to ggml_backend_load_all_variants. This function now returns void and accepts a backend name as an argument, and the function tries to load all the variants for the specified backend.
1 parent caa91b5 commit 243f460

File tree

3 files changed

+16
-35
lines changed

3 files changed

+16
-35
lines changed

ggml/include/ggml-backend.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,8 @@ extern "C" {
243243
// Load all known backends from dynamic libraries
244244
GGML_API void ggml_backend_load_all(void);
245245
GGML_API void ggml_backend_load_all_from_path(const char * dir_path);
246-
// Load all CPU dynamic libraries and register them
247-
GGML_API ggml_backend_reg_t * ggml_backend_load_cpu_variants(void);
246+
// Load all variants for a backend and register them
247+
GGML_API void ggml_backend_load_all_variants(const char * name);
248248

249249
//
250250
// Backend scheduler

ggml/src/ggml-backend-reg.cpp

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -601,9 +601,9 @@ void ggml_backend_load_all_from_path(const char * dir_path) {
601601
#endif
602602
}
603603

604-
ggml_backend_reg_t * ggml_backend_load_cpu_variants(void) {
604+
void ggml_backend_load_all_variants(const char * name) {
605605
// enumerate all the files that match [lib]ggml-name-*.[so|dll] in the search paths
606-
const fs::path name_path = fs::u8path("cpu");
606+
const fs::path name_path = fs::u8path(name);
607607
const fs::path file_prefix = backend_filename_prefix().native() + name_path.native() + fs::u8path("-").native();
608608
const fs::path file_extension = backend_filename_extension();
609609

@@ -615,9 +615,6 @@ ggml_backend_reg_t * ggml_backend_load_cpu_variants(void) {
615615
search_paths.push_back(get_executable_path());
616616
search_paths.push_back(fs::current_path());
617617

618-
ggml_backend_reg_t * backends = nullptr;
619-
size_t count = 0;
620-
size_t capacity = 0;
621618
for (const auto & search_path : search_paths) {
622619
if (!fs::exists(search_path)) {
623620
GGML_LOG_DEBUG("%s: search path %s does not exist\n", __func__, path_str(search_path).c_str());
@@ -631,25 +628,12 @@ ggml_backend_reg_t * ggml_backend_load_cpu_variants(void) {
631628
if (filename.native().find(file_prefix.native()) == 0 && ext == file_extension) {
632629
fs::path path = search_path / filename;
633630
ggml_backend_reg_t backend = get_reg().load_backend(path, false);
634-
if (backend) {
635-
if (count >= capacity) {
636-
capacity = capacity == 0 ? 4 : capacity * 2;
637-
ggml_backend_reg_t * new_backends = (ggml_backend_reg_t *)realloc(backends, (capacity + 1) * sizeof(ggml_backend_reg_t));
638-
639-
if (!new_backends) {
640-
free(backends);
641-
return nullptr;
642-
}
643-
backends = new_backends;
644-
}
645-
backends[count++] = backend;
631+
if (backend == nullptr) {
632+
GGML_LOG_ERROR("%s: failed to load backend variant %s\n", __func__, path_str(entry.path()).c_str());
646633
}
634+
647635
}
648636
}
649637
}
650638
}
651-
if (backends) {
652-
backends[count] = nullptr;
653-
}
654-
return backends;
655639
}

tests/test-backend-ops.cpp

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6923,8 +6923,7 @@ static void print_backend_features(ggml_backend_t backend) {
69236923
static bool test_cpu_variant(const char * variant_name, const char * op_names_filter,
69246924
const char * params_filter, printer * output_printer) {
69256925
std::string backend_ref_name = "CPU-ref";
6926-
ggml_backend_reg_t * backend_regs = ggml_backend_load_cpu_variants();
6927-
free(backend_regs);
6926+
ggml_backend_load_all_variants("cpu");
69286927

69296928
ggml_backend_t backend_ref = ggml_backend_init_by_name(backend_ref_name.c_str(), nullptr);
69306929
if (backend_ref == nullptr) {
@@ -6978,18 +6977,16 @@ static bool test_cpu_variant(const char * variant_name, const char * op_names_fi
69786977

69796978
static void list_cpu_variants() {
69806979
std::unordered_map<std::string, std::string> variant_names;
6981-
ggml_backend_reg_t * backend_regs = ggml_backend_load_cpu_variants();
6982-
if (backend_regs) {
6983-
for (ggml_backend_reg_t * reg = backend_regs; *reg != nullptr; ++reg) {
6984-
for (size_t j = 0; j < ggml_backend_reg_dev_count(*reg); j++) {
6985-
ggml_backend_dev_t dev = ggml_backend_reg_dev_get(*reg, j);
6986-
const char * name = ggml_backend_dev_name(dev);
6987-
if (strcmp(name, "CPU-ref") != 0) {
6988-
variant_names.emplace(name, ggml_backend_dev_description(dev));
6989-
}
6980+
ggml_backend_load_all_variants("cpu");
6981+
6982+
for (size_t i = 0; i < ggml_backend_dev_count(); ++i) {
6983+
ggml_backend_dev_t dev = ggml_backend_dev_get(i);
6984+
if (ggml_backend_dev_type(dev) == GGML_BACKEND_DEVICE_TYPE_CPU) {
6985+
const char * name = ggml_backend_dev_name(dev);
6986+
if (strcmp(name, "CPU-ref") != 0) {
6987+
variant_names.emplace(name, ggml_backend_dev_description(dev));
69906988
}
69916989
}
6992-
free(backend_regs);
69936990
}
69946991

69956992
if (variant_names.size() == 0) {

0 commit comments

Comments
 (0)