Skip to content

Commit a62ea59

Browse files
committed
ggml : add metal backend registry / device
ggml-ci
1 parent f3fdcfa commit a62ea59

File tree

3 files changed

+309
-170
lines changed

3 files changed

+309
-170
lines changed

ggml/include/ggml-metal.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ GGML_API bool ggml_backend_metal_supports_family(ggml_backend_t backend, int fam
5757
// capture all command buffers committed the next time `ggml_backend_graph_compute` is called
5858
GGML_API void ggml_backend_metal_capture_next_compute(ggml_backend_t backend);
5959

60+
GGML_API ggml_backend_reg_t ggml_backend_metal_reg(void);
61+
6062
#ifdef __cplusplus
6163
}
6264
#endif

ggml/src/ggml-backend.cpp

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -525,6 +525,10 @@ void * ggml_backend_reg_get_proc_address(ggml_backend_reg_t reg, const char * na
525525
#include "ggml-cuda.h"
526526
#endif
527527

528+
#ifdef GGML_USE_METAL
529+
#include "ggml-metal.h"
530+
#endif
531+
528532
struct ggml_backend_registry {
529533
std::vector<ggml_backend_reg_t> backends;
530534
std::vector<ggml_backend_dev_t> devices;
@@ -533,10 +537,13 @@ struct ggml_backend_registry {
533537
#ifdef GGML_USE_CUDA
534538
register_backend(ggml_backend_cuda_reg());
535539
#endif
540+
#ifdef GGML_USE_METAL
541+
register_backend(ggml_backend_metal_reg());
542+
#endif
536543

537544
register_backend(ggml_backend_cpu_reg());
538545

539-
// TODO: sycl, metal, vulkan, kompute, cann
546+
// TODO: sycl, vulkan, kompute, cann
540547
}
541548

542549
void register_backend(ggml_backend_reg_t reg) {
@@ -1193,19 +1200,19 @@ static const struct ggml_backend_device_i ggml_backend_cpu_device_i = {
11931200

11941201
////////////////////////
11951202

1196-
static const char * ggml_backend_cpu_reg_get_name(ggml_backend_reg_t reg) {
1203+
static const char * ggml_backend_cpu_reg_name(ggml_backend_reg_t reg) {
11971204
return "CPU";
11981205

11991206
GGML_UNUSED(reg);
12001207
}
12011208

1202-
static size_t ggml_backend_cpu_reg_get_device_count(ggml_backend_reg_t reg) {
1209+
static size_t ggml_backend_cpu_reg_device_count(ggml_backend_reg_t reg) {
12031210
return 1;
12041211

12051212
GGML_UNUSED(reg);
12061213
}
12071214

1208-
static ggml_backend_dev_t ggml_backend_cpu_reg_get_device(ggml_backend_reg_t reg, size_t index) {
1215+
static ggml_backend_dev_t ggml_backend_cpu_reg_device_get(ggml_backend_reg_t reg, size_t index) {
12091216
GGML_ASSERT(index == 0);
12101217

12111218
static ggml_backend_cpu_device_context ctx;
@@ -1222,9 +1229,9 @@ static ggml_backend_dev_t ggml_backend_cpu_reg_get_device(ggml_backend_reg_t reg
12221229
}
12231230

12241231
static const struct ggml_backend_reg_i ggml_backend_cpu_reg_i = {
1225-
/* .get_name = */ ggml_backend_cpu_reg_get_name,
1226-
/* .get_device_count = */ ggml_backend_cpu_reg_get_device_count,
1227-
/* .get_device = */ ggml_backend_cpu_reg_get_device,
1232+
/* .get_name = */ ggml_backend_cpu_reg_name,
1233+
/* .device_count = */ ggml_backend_cpu_reg_device_count,
1234+
/* .device_get = */ ggml_backend_cpu_reg_device_get,
12281235
/* .get_proc_address = */ NULL,
12291236
};
12301237

0 commit comments

Comments
 (0)