]> git.djapps.eu Git - pkg/ggml/sources/whisper.cpp/commitdiff
metal : use autoreleasepool to avoid memory leaks (llama/5437)
authorIan Bull <redacted>
Sat, 10 Feb 2024 10:53:28 +0000 (02:53 -0800)
committerGeorgi Gerganov <redacted>
Mon, 12 Feb 2024 07:31:11 +0000 (09:31 +0200)
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

ggml-metal.m

index 6027ca64734f431cfc40dc7e3a71bb5576a87c80..f82f72ca41d1322a4b44b1ef241f63896589d3be 100644 (file)
@@ -696,6 +696,7 @@ static bool ggml_metal_graph_compute(
         struct ggml_metal_context * ctx,
                struct ggml_cgraph * gf) {
 
+    @autoreleasepool {
     MTLComputePassDescriptor * edesc = MTLComputePassDescriptor.computePassDescriptor;
     edesc.dispatchType = MTLDispatchTypeSerial;
 
@@ -2281,6 +2282,7 @@ static bool ggml_metal_graph_compute(
         [[MTLCaptureManager sharedCaptureManager] stopCapture];
     }
 
+    }
     return true;
 }