From 9cba545fbf01aa5a43fe8e2bb12a06afd164bcbf Mon Sep 17 00:00:00 2001 From: "zhou.weiguo" Date: Mon, 22 Apr 2024 07:14:19 +0800 Subject: [PATCH] ggml: add new member in GGML's internal data structure --- ggml.c | 6 ++++++ ggml.h | 5 ++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/ggml.c b/ggml.c index a3b312e4a..4600fdf7f 100644 --- a/ggml.c +++ b/ggml.c @@ -2200,6 +2200,7 @@ struct ggml_context { bool mem_buffer_owned; bool no_alloc; bool no_alloc_save; // this is used to save the no_alloc state when using scratch buffers + bool use_hwaccel; int n_objects; @@ -2759,6 +2760,7 @@ struct ggml_context * ggml_init(struct ggml_init_params params) { /*.mem_buffer_owned =*/ params.mem_buffer ? false : true, /*.no_alloc =*/ params.no_alloc, /*.no_alloc_save =*/ params.no_alloc, + /*.use_hwaccel =*/ params.use_hwaccel, /*.n_objects =*/ 0, /*.objects_begin =*/ NULL, /*.objects_end =*/ NULL, @@ -2990,9 +2992,13 @@ static struct ggml_tensor * ggml_new_tensor_impl( /*.data =*/ obj_alloc_size > 0 ? (void *)(result + 1) : data, /*.name =*/ { 0 }, /*.extra =*/ NULL, + /*.rank =*/ n_dims, /*.padding =*/ { 0 }, }; + if (ctx->use_hwaccel) + result->backend = GGML_BACKEND_TYPE_GPU; + // TODO: this should not be needed as long as we don't rely on aligned SIMD loads //ggml_assert_aligned(result->data); diff --git a/ggml.h b/ggml.h index 4d1d77fe9..da8bc7b1a 100644 --- a/ggml.h +++ b/ggml.h @@ -591,7 +591,9 @@ extern "C" { void * extra; // extra things e.g. for ggml-cuda.cu - char padding[8]; + int32_t rank; + + char padding[20]; }; static const size_t GGML_TENSOR_SIZE = sizeof(struct ggml_tensor); @@ -657,6 +659,7 @@ extern "C" { size_t mem_size; // bytes void * mem_buffer; // if NULL, memory will be allocated internally bool no_alloc; // don't allocate memory for the tensor data + bool use_hwaccel; };