|
3 | 3 |
|
4 | 4 | #include "ggml-backend.h" |
5 | 5 | #include "ggml-impl.h" |
| 6 | +#include "ggml-backend-impl.h" |
6 | 7 | #include "ggml-cpu-impl.h" |
7 | 8 | #include "ggml-quants.h" |
8 | 9 | #include "ggml.h" |
9 | 10 | #include "ggml-aarch64.h" |
10 | 11 |
|
11 | | -#if defined(_MSC_VER) || defined(__MINGW32__) |
12 | | -#include <malloc.h> // using malloc.h with MSC/MINGW |
13 | | -#elif !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) |
14 | | -#include <alloca.h> |
15 | | -#endif |
16 | | - |
17 | 12 | #include <assert.h> |
18 | 13 | #include <errno.h> |
19 | 14 | #include <time.h> |
|
35 | 30 | #include <omp.h> |
36 | 31 | #endif |
37 | 32 |
|
38 | | -#ifdef GGML_USE_METAL |
39 | | -#include <unistd.h> |
40 | | -#endif |
41 | | - |
42 | 33 | #if defined(__ARM_FEATURE_SVE) || defined(__ARM_FEATURE_MATMUL_INT8) |
43 | 34 | #undef GGML_USE_LLAMAFILE |
44 | 35 | #endif |
@@ -184,10 +175,6 @@ typedef void * thread_ret_t; |
184 | 175 |
|
185 | 176 | typedef pthread_t ggml_thread_t; |
186 | 177 |
|
187 | | -#ifdef GGML_USE_CPU_HBM |
188 | | -#include <hbwmalloc.h> |
189 | | -#endif |
190 | | - |
191 | 178 | #if defined(__APPLE__) |
192 | 179 | #include <TargetConditionals.h> |
193 | 180 | #endif |
@@ -386,47 +373,6 @@ void ggml_log_callback_default(enum ggml_log_level level, const char * text, voi |
386 | 373 | //#define GGML_SOFT_MAX_ACCELERATE |
387 | 374 | #endif |
388 | 375 |
|
389 | | -#if defined(_MSC_VER) || defined(__MINGW32__) |
390 | | -#define GGML_ALIGNED_MALLOC(size) _aligned_malloc(size, GGML_MEM_ALIGN) |
391 | | -#define GGML_ALIGNED_FREE(ptr) _aligned_free(ptr) |
392 | | -#else |
393 | | -inline static void * ggml_aligned_malloc(size_t size) { |
394 | | - if (size == 0) { |
395 | | - GGML_LOG_WARN("Behavior may be unexpected when allocating 0 bytes for ggml_aligned_malloc!\n"); |
396 | | - return NULL; |
397 | | - } |
398 | | - void * aligned_memory = NULL; |
399 | | -#ifdef GGML_USE_CPU_HBM |
400 | | - int result = hbw_posix_memalign(&aligned_memory, 16, size); |
401 | | -#elif GGML_USE_METAL |
402 | | - int result = posix_memalign(&aligned_memory, sysconf(_SC_PAGESIZE), size); |
403 | | -#else |
404 | | - int result = posix_memalign(&aligned_memory, GGML_MEM_ALIGN, size); |
405 | | -#endif |
406 | | - if (result != 0) { |
407 | | - // Handle allocation failure |
408 | | - const char *error_desc = "unknown allocation error"; |
409 | | - switch (result) { |
410 | | - case EINVAL: |
411 | | - error_desc = "invalid alignment value"; |
412 | | - break; |
413 | | - case ENOMEM: |
414 | | - error_desc = "insufficient memory"; |
415 | | - break; |
416 | | - } |
417 | | - GGML_LOG_ERROR("%s: %s (attempted to allocate %6.2f MB)\n", __func__, error_desc, size/(1024.0*1024.0)); |
418 | | - GGML_ABORT("fatal error"); |
419 | | - return NULL; |
420 | | - } |
421 | | - return aligned_memory; |
422 | | -} |
423 | | -#define GGML_ALIGNED_MALLOC(size) ggml_aligned_malloc(size) |
424 | | -#ifdef GGML_USE_CPU_HBM |
425 | | -#define GGML_ALIGNED_FREE(ptr) if(NULL != ptr) hbw_free(ptr) |
426 | | -#else |
427 | | -#define GGML_ALIGNED_FREE(ptr) free(ptr) |
428 | | -#endif |
429 | | -#endif |
430 | 376 |
|
431 | 377 | inline static void * ggml_malloc(size_t size) { |
432 | 378 | if (size == 0) { |
@@ -3909,7 +3855,7 @@ void ggml_free(struct ggml_context * ctx) { |
3909 | 3855 | __func__, i, ggml_used_mem(ctx)); |
3910 | 3856 |
|
3911 | 3857 | if (ctx->mem_buffer_owned) { |
3912 | | - GGML_ALIGNED_FREE(ctx->mem_buffer); |
| 3858 | + GGML_ALIGNED_FREE(ctx->mem_buffer, ctx->mem_size); |
3913 | 3859 | } |
3914 | 3860 |
|
3915 | 3861 | found = true; |
@@ -19630,8 +19576,9 @@ void ggml_threadpool_free(struct ggml_threadpool* threadpool) { |
19630 | 19576 | ggml_cond_destroy(&threadpool->cond); |
19631 | 19577 | #endif // GGML_USE_OPENMP |
19632 | 19578 |
|
19633 | | - GGML_ALIGNED_FREE(threadpool->workers); |
19634 | | - GGML_ALIGNED_FREE(threadpool); |
| 19579 | + const size_t workers_size = sizeof(struct ggml_compute_state) * n_threads; |
| 19580 | + GGML_ALIGNED_FREE(threadpool->workers, workers_size); |
| 19581 | + GGML_ALIGNED_FREE(threadpool, sizeof(struct ggml_threadpool)); |
19635 | 19582 | } |
19636 | 19583 |
|
19637 | 19584 | #ifndef GGML_USE_OPENMP |
|
0 commit comments