]> git.djapps.eu Git - pkg/ggml/sources/llama.cpp/commitdiff
ggml : always allocate buffers with size multiple of GGML_MEM_ALIGN
authorGeorgi Gerganov <redacted>
Fri, 14 Apr 2023 10:31:15 +0000 (13:31 +0300)
committerGeorgi Gerganov <redacted>
Fri, 14 Apr 2023 10:31:15 +0000 (13:31 +0300)
ggml.c

diff --git a/ggml.c b/ggml.c
index d620cd11f956516d661b74f29153634daf8c758a..76694a61729525b70c4bc8abede08822a58be437 100644 (file)
--- a/ggml.c
+++ b/ggml.c
@@ -3054,9 +3054,11 @@ struct ggml_context * ggml_init(struct ggml_init_params params) {
         return NULL;
     }
 
+    const size_t mem_size = (params.mem_size + GGML_MEM_ALIGN - 1) & ~(GGML_MEM_ALIGN - 1);
+
     *ctx = (struct ggml_context) {
-        /*.mem_size           =*/ params.mem_size,
-        /*.mem_buffer         =*/ params.mem_buffer ? params.mem_buffer : GGML_ALIGNED_MALLOC(params.mem_size),
+        /*.mem_size           =*/ mem_size,
+        /*.mem_buffer         =*/ params.mem_buffer ? params.mem_buffer : GGML_ALIGNED_MALLOC(mem_size),
         /*.mem_buffer_owned   =*/ params.mem_buffer ? false : true,
         /*.no_alloc           =*/ params.no_alloc,
         /*.n_objects          =*/ 0,
@@ -3066,7 +3068,7 @@ struct ggml_context * ggml_init(struct ggml_init_params params) {
         /*.scratch_save       =*/ { 0, 0, NULL, },
     };
 
-    GGML_ASSERT(ctx->mem_buffer != NULL); // check for allocation failure
+    GGML_ASSERT(ctx->mem_buffer != NULL);
 
     ggml_assert_aligned(ctx->mem_buffer);