From: Ian Bull Date: Sat, 10 Feb 2024 10:53:28 +0000 (-0800) Subject: metal : use autoreleasepool to avoid memory leaks (llama/5437) X-Git-Tag: upstream/0.0.1642~972 X-Git-Url: https://git.djapps.eu/?a=commitdiff_plain;h=04b3bf5ddb49a3de311a1066599a3d1f7e9d5085;p=pkg%2Fggml%2Fsources%2Fggml metal : use autoreleasepool to avoid memory leaks (llama/5437) There appears to be a known memory leak when using the `MLTCommandBuffer`. It is suggested to use `@autoreleasepool` in [1,2] [1] https://developer.apple.com/forums/thread/662721 [2] https://forums.developer.apple.com/forums/thread/120931 This change-set wraps the `ggml_metal_graph_compute` in a `@autoreleasepool`. This commit addresses https://github.com/ggerganov/llama.cpp/issues/5436 --- diff --git a/src/ggml-metal.m b/src/ggml-metal.m index 5260ed82..c1d8e2de 100644 --- a/src/ggml-metal.m +++ b/src/ggml-metal.m @@ -687,6 +687,7 @@ static bool ggml_metal_graph_compute( struct ggml_metal_context * ctx, struct ggml_cgraph * gf) { + @autoreleasepool { MTLComputePassDescriptor * edesc = MTLComputePassDescriptor.computePassDescriptor; edesc.dispatchType = MTLDispatchTypeSerial; @@ -2272,6 +2273,7 @@ static bool ggml_metal_graph_compute( [[MTLCaptureManager sharedCaptureManager] stopCapture]; } + } return true; }