|
@@ -277,6 +277,14 @@ static struct ggml_metal_context * ggml_metal_init(int n_cb) {
|
|
|
return NULL;
|
|
return NULL;
|
|
|
}
|
|
}
|
|
|
} else {
|
|
} 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__);
|
|
GGML_METAL_LOG_INFO("%s: default.metallib not found, loading from source\n", __func__);
|
|
|
|
|
|
|
|
NSString * sourcePath;
|
|
NSString * sourcePath;
|
|
@@ -299,6 +307,7 @@ static struct ggml_metal_context * ggml_metal_init(int n_cb) {
|
|
|
GGML_METAL_LOG_ERROR("%s: error: %s\n", __func__, [[error description] UTF8String]);
|
|
GGML_METAL_LOG_ERROR("%s: error: %s\n", __func__, [[error description] UTF8String]);
|
|
|
return NULL;
|
|
return NULL;
|
|
|
}
|
|
}
|
|
|
|
|
+#endif
|
|
|
|
|
|
|
|
@autoreleasepool {
|
|
@autoreleasepool {
|
|
|
// dictionary of preprocessor macros
|
|
// dictionary of preprocessor macros
|