From 9d0693bce38013364b1042568d9083353bfff48f Mon Sep 17 00:00:00 2001 From: kiltyj Date: Mon, 5 Jun 2023 13:24:04 -0700 Subject: metal : use shared buffers between CPU and GPU (#1696) * Use MTLDevice.newBufferWithBytesNoCopy to share buffers between CPU and GPU * Page-align buffers used by Metal * Remove trailing whitespace * Only import unistd.h for Metal builds * metal : remove unnecessary copies --------- Co-authored-by: Georgi Gerganov --- ggml.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ggml.c') diff --git a/ggml.c b/ggml.c index 24f0d2fa..4e3e7edb 100644 --- a/ggml.c +++ b/ggml.c @@ -22,6 +22,10 @@ #include #include +#ifdef GGML_USE_METAL +#include +#endif + // if C99 - static_assert is noop // ref: https://stackoverflow.com/a/53923785/4039976 #ifndef static_assert @@ -122,7 +126,11 @@ typedef void* thread_ret_t; #else inline static void* ggml_aligned_malloc(size_t size) { void* aligned_memory = NULL; +#ifdef GGML_USE_METAL + int result = posix_memalign(&aligned_memory, getpagesize(), size); +#else int result = posix_memalign(&aligned_memory, GGML_MEM_ALIGN, size); +#endif if (result != 0) { // Handle allocation failure return NULL; -- cgit v1.2.3