aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgi Gerganov <ggerganov@gmail.com>2023-04-14 13:31:15 +0300
committerGeorgi Gerganov <ggerganov@gmail.com>2023-04-14 13:31:15 +0300
commitc14e0d2f23e6d1e785255f4da8c253c1b4723659 (patch)
tree9ad22d8cf30a92a6fde78989f37a47b02c63d0a8
parent723dac55fa2ba7adc6e3fc8609781d1ad0378906 (diff)
ggml : always allocate buffers with size multiple of GGML_MEM_ALIGN
-rw-r--r--ggml.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/ggml.c b/ggml.c
index d620cd1..76694a6 100644
--- 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);