Add mmap support for model files
This commit is contained in:
parent
3bcc129ba8
commit
c03ae8dca1
3 changed files with 74 additions and 22 deletions
9
ggml.c
9
ggml.c
|
@ -2529,8 +2529,9 @@ struct ggml_context {
|
|||
void * mem_buffer;
|
||||
bool mem_buffer_owned;
|
||||
bool mem_buffer_mlocked;
|
||||
bool no_alloc;
|
||||
|
||||
int n_objects;
|
||||
int n_objects;
|
||||
|
||||
struct ggml_object * objects_begin;
|
||||
struct ggml_object * objects_end;
|
||||
|
@ -2815,6 +2816,7 @@ struct ggml_context * ggml_init(struct ggml_init_params params) {
|
|||
/*.mem_buffer =*/ params.mem_buffer ? params.mem_buffer : malloc(params.mem_size),
|
||||
/*.mem_buffer_owned =*/ params.mem_buffer ? false : true,
|
||||
/*.mem_buffer_mlocked =*/ false,
|
||||
/*.no_alloc =*/ params.no_alloc,
|
||||
/*.n_objects =*/ 0,
|
||||
/*.objects_begin =*/ NULL,
|
||||
/*.objects_end =*/ NULL,
|
||||
|
@ -2930,7 +2932,7 @@ struct ggml_tensor * ggml_new_tensor_impl(
|
|||
|
||||
size_t size_needed = 0;
|
||||
|
||||
if (data == NULL) {
|
||||
if (data == NULL && !ctx->no_alloc) {
|
||||
size_needed += GGML_TYPE_SIZE[type]*(ne[0]/GGML_BLCK_SIZE[type]);
|
||||
for (int i = 1; i < n_dims; i++) {
|
||||
size_needed *= ne[i];
|
||||
|
@ -3014,7 +3016,7 @@ struct ggml_tensor * ggml_new_tensor_impl(
|
|||
/*.perf_runs =*/ 0,
|
||||
/*.perf_cycles =*/ 0,
|
||||
/*.perf_time_us =*/ 0,
|
||||
/*.data =*/ data == NULL ? (void *)(result + 1) : data,
|
||||
/*.data =*/ (data == NULL && !ctx->no_alloc) ? (void *)(result + 1) : data,
|
||||
/*.pad =*/ { 0 },
|
||||
};
|
||||
|
||||
|
@ -10277,6 +10279,7 @@ enum ggml_opt_result ggml_opt(
|
|||
struct ggml_init_params params_ctx = {
|
||||
.mem_size = 16*1024*1024,
|
||||
.mem_buffer = NULL,
|
||||
.no_alloc = false,
|
||||
};
|
||||
|
||||
ctx = ggml_init(params_ctx);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue