From: Paul Tsochantaris Date: Thu, 18 Jan 2024 08:47:24 +0000 (+0000) Subject: metal : fix memory leak, dangling pointer and unused autorel (llama/5007) X-Git-Tag: upstream/0.0.1642~1057 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=1c49b67f243d3cbcd470cc3f3f6a6f27e086f620;p=pkg%2Fggml%2Fsources%2Fggml metal : fix memory leak, dangling pointer and unused autorel (llama/5007) * Metal memory: Small memory leak on init, dangling pointer, and unused autorelease pool in graph compute * SPM header potential fix * Reverting symlinks --- diff --git a/src/ggml-metal.m b/src/ggml-metal.m index 66d4d675..912ddc83 100644 --- a/src/ggml-metal.m +++ b/src/ggml-metal.m @@ -238,21 +238,19 @@ static void * ggml_metal_host_malloc(size_t n) { static struct ggml_metal_context * ggml_metal_init(int n_cb) { GGML_METAL_LOG_INFO("%s: allocating\n", __func__); - id device; - NSString * s; - -#if TARGET_OS_OSX +#if TARGET_OS_OSX && !GGML_METAL_NDEBUG // Show all the Metal device instances in the system NSArray * devices = MTLCopyAllDevices(); - for (device in devices) { - s = [device name]; + for (id device in devices) { + NSString * s = [device name]; GGML_METAL_LOG_INFO("%s: found device: %s\n", __func__, [s UTF8String]); } + [devices release]; // since it was created by a *Copy* C method #endif // Pick and show default Metal device - device = MTLCreateSystemDefaultDevice(); - s = [device name]; + id device = MTLCreateSystemDefaultDevice(); + NSString * s = [device name]; GGML_METAL_LOG_INFO("%s: picking default device: %s\n", __func__, [s UTF8String]); // Configure context @@ -712,7 +710,6 @@ static bool ggml_metal_supports_op(const struct ggml_metal_context * ctx, const static bool ggml_metal_graph_compute( struct ggml_metal_context * ctx, struct ggml_cgraph * gf) { - @autoreleasepool { MTLComputePassDescriptor * edesc = MTLComputePassDescriptor.computePassDescriptor; edesc.dispatchType = MTLDispatchTypeSerial; @@ -2255,7 +2252,6 @@ static bool ggml_metal_graph_compute( } return true; - } } ////////////////////////////////////////////////////////////////////////////////