From d783f7982e0e823a2626a9956359c0d36c1a7e21 Mon Sep 17 00:00:00 2001 From: Jhen-Jie Hong Date: Mon, 14 Aug 2023 21:37:39 +0800 Subject: [PATCH] metal : return null instead of exit(1) (#2573) --- ggml-metal.m | 6 +++--- llama.cpp | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ggml-metal.m b/ggml-metal.m index b47a98e21..fbac21e3a 100644 --- a/ggml-metal.m +++ b/ggml-metal.m @@ -126,7 +126,7 @@ struct ggml_metal_context * ggml_metal_init(int n_cb) { ctx->library = [ctx->device newLibraryWithSource:msl_library_source options:nil error:&error]; if (error) { fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]); - exit(1); + return NULL; } } #else @@ -144,7 +144,7 @@ struct ggml_metal_context * ggml_metal_init(int n_cb) { NSString * src = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error]; if (error) { fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]); - exit(1); + return NULL; } #ifdef GGML_QKK_64 @@ -156,7 +156,7 @@ struct ggml_metal_context * ggml_metal_init(int n_cb) { #endif if (error) { fprintf(stderr, "%s: error: %s\n", __func__, [[error description] UTF8String]); - exit(1); + return NULL; } } #endif diff --git a/llama.cpp b/llama.cpp index 0cf2b3749..c8ab313d9 100644 --- a/llama.cpp +++ b/llama.cpp @@ -3337,6 +3337,12 @@ struct llama_context * llama_new_context_with_model( // this allocates all Metal resources and memory buffers ctx->ctx_metal = ggml_metal_init(1); + if (!ctx->ctx_metal) { + LLAMA_LOG_ERROR("%s: ggml_metal_init() failed\n", __func__); + llama_free(ctx); + return NULL; + } + void * data_ptr = NULL; size_t data_size = 0;