metal : fix "supports family" call

This commit is contained in:
Georgi Gerganov 2023-12-07 20:29:28 +02:00
parent 58265e5b09
commit 670fb48b80
No known key found for this signature in database
GPG key ID: 449E073F9DC10735
2 changed files with 13 additions and 1 deletions

View file

@ -98,9 +98,13 @@ GGML_API ggml_backend_t ggml_backend_metal_init(void);
GGML_API bool ggml_backend_is_metal(ggml_backend_t backend); GGML_API bool ggml_backend_is_metal(ggml_backend_t backend);
GGML_API void ggml_backend_metal_set_n_cb(ggml_backend_t backend, int n_cb);
GGML_API ggml_backend_buffer_type_t ggml_backend_metal_buffer_type(void); GGML_API ggml_backend_buffer_type_t ggml_backend_metal_buffer_type(void);
GGML_API void ggml_backend_metal_set_n_cb(ggml_backend_t backend, int n_cb); // helper to check if the device supports a specific family
// ideally, the user code should be doing these checks
// ref: https://developer.apple.com/metal/Metal-Feature-Set-Tables.pdf
GGML_API bool ggml_backend_metal_supports_family(ggml_backend_t backend, int family);
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -2092,6 +2092,14 @@ void ggml_backend_metal_set_n_cb(ggml_backend_t backend, int n_cb) {
ggml_metal_set_n_cb(ctx, n_cb); ggml_metal_set_n_cb(ctx, n_cb);
} }
bool ggml_backend_metal_supports_family(ggml_backend_t backend, int family) {
GGML_UNUSED(ggml_backend_is_metal(backend));
struct ggml_metal_context * ctx = (struct ggml_metal_context *)backend->context;
return [ctx->device supportsFamily:(MTLGPUFamilyApple1 + family - 1)];
}
ggml_backend_t ggml_backend_reg_metal_init(const char * params, void * user_data); // silence warning ggml_backend_t ggml_backend_reg_metal_init(const char * params, void * user_data); // silence warning
ggml_backend_t ggml_backend_reg_metal_init(const char * params, void * user_data) { ggml_backend_t ggml_backend_reg_metal_init(const char * params, void * user_data) {