From: Didzis Gosko Date: Sun, 11 Feb 2024 14:41:41 +0000 (+0200) Subject: metal : option to embed MSL source into compiled binary (whisper/1842) X-Git-Tag: upstream/0.0.1642~964 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=a05a28fa2bd9aab98810657a9d2ed0379979c7f7;p=pkg%2Fggml%2Fsources%2Fggml metal : option to embed MSL source into compiled binary (whisper/1842) * ggml : embed Metal library source (ggml-metal.metal) into binary enable by setting WHISPER_EMBED_METAL_LIBRARY * rename the build option * rename the preprocessor directive * generate Metal library embedding assembly on-fly during build process --- diff --git a/src/ggml-metal.m b/src/ggml-metal.m index c1d8e2de..f82f72ca 100644 --- a/src/ggml-metal.m +++ b/src/ggml-metal.m @@ -272,6 +272,14 @@ static struct ggml_metal_context * ggml_metal_init(int n_cb) { return NULL; } } else { +#if GGML_METAL_EMBED_LIBRARY + GGML_METAL_LOG_INFO("%s: using embedded metal library\n", __func__); + + extern const char ggml_metallib_start[]; + extern const char ggml_metallib_end[]; + + NSString * src = [[NSString alloc] initWithBytes:ggml_metallib_start length:(ggml_metallib_end-ggml_metallib_start) encoding:NSUTF8StringEncoding]; +#else GGML_METAL_LOG_INFO("%s: default.metallib not found, loading from source\n", __func__); NSString * sourcePath; @@ -294,6 +302,7 @@ static struct ggml_metal_context * ggml_metal_init(int n_cb) { GGML_METAL_LOG_ERROR("%s: error: %s\n", __func__, [[error description] UTF8String]); return NULL; } +#endif @autoreleasepool { // dictionary of preprocessor macros