From bfa4daea4eed154407350251ff6f34fdf8c44981 Mon Sep 17 00:00:00 2001 From: Gilad S Date: Sun, 5 May 2024 01:50:02 +0300 Subject: [PATCH] fix: use `vm_allocate` instead of `posix_memalign` --- ggml-metal.m | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ggml-metal.m b/ggml-metal.m index f5a3f704c..7d9d4cf5b 100644 --- a/ggml-metal.m +++ b/ggml-metal.m @@ -264,9 +264,10 @@ static void ggml_metal_log(enum ggml_log_level level, const char * format, ...){ } static void * ggml_metal_host_malloc(size_t n) { - void * data = malloc(n); - if (data == NULL) { - GGML_METAL_LOG_ERROR("%s: error: malloc failed\n", __func__); + void * data = NULL; + kern_return_t err = vm_allocate((vm_map_t) mach_task_self(), (void *) &data, n, VM_FLAGS_ANYWHERE); + if (err != KERN_SUCCESS) { + GGML_METAL_LOG_ERROR("%s: error: vm_allocate failed\n", __func__); return NULL; } @@ -2839,7 +2840,7 @@ GGML_CALL static void ggml_backend_metal_buffer_free_buffer(ggml_backend_buffer_ ggml_backend_metal_free_device(); if (ctx->owned) { - free(ctx->all_data); + vm_deallocate((vm_map_t)mach_task_self(), (vm_address_t)ctx->all_data, ctx->all_size); } free(ctx);