]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
metal : try cwd for ggml-metal.metal if bundle lookup fails (#3793)
authorAarni Koskela <redacted>
Sat, 28 Oct 2023 12:43:01 +0000 (15:43 +0300)
committerGitHub <redacted>
Sat, 28 Oct 2023 12:43:01 +0000 (15:43 +0300)
* Try cwd for ggml-metal if bundle lookup fails

When building with `-DBUILD_SHARED_LIBS=ON -DLLAMA_METAL=ON -DLLAMA_BUILD_SERVER=ON`,
`server` would fail to load `ggml-metal.metal` because `[bundle pathForResource:...]`
returns `nil`.  In that case, fall back to `ggml-metal.metal` in the cwd instead of
passing `null` as a path.

Follows up on #1782

* Update ggml-metal.m

---------

Co-authored-by: Georgi Gerganov <redacted>
ggml-metal.m

index c1901dca75269dbc86971b5dccccaaae8e2c871c..2380c4310014082c3bfb877a3b5f5678c35a0b50 100644 (file)
@@ -210,6 +210,10 @@ struct ggml_metal_context * ggml_metal_init(int n_cb) {
             GGML_METAL_LOG_INFO("%s: default.metallib not found, loading from source\n", __func__);
 
             NSString * sourcePath = [bundle pathForResource:@"ggml-metal" ofType:@"metal"];
+            if (sourcePath == nil) {
+                GGML_METAL_LOG_WARN("%s: error: could not use bundle path to find ggml-metal.metal, falling back to trying cwd\n", __func__);
+                sourcePath = @"ggml-metal.metal";
+            }
             GGML_METAL_LOG_INFO("%s: loading '%s'\n", __func__, [sourcePath UTF8String]);
             NSString * src = [NSString stringWithContentsOfFile:sourcePath encoding:NSUTF8StringEncoding error:&error];
             if (error) {