mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	ggml : introduce GGML_ALIGNED_MALLOC/GGML_ALIGNED_FREE macros (#884)
which allows us to use aligned_alloc or _aligned_malloc functions
This commit is contained in:
		
							
								
								
									
										12
									
								
								ggml.c
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								ggml.c
									
									
									
									
									
								
							| @@ -114,6 +114,14 @@ typedef void* thread_ret_t; | |||||||
|     #define GGML_MEM_ALIGN 16 |     #define GGML_MEM_ALIGN 16 | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|  | #if defined(_MSC_VER) || defined(__MINGW32__) | ||||||
|  | #define GGML_ALIGNED_MALLOC(size)  _aligned_malloc(size, GGML_MEM_ALIGN) | ||||||
|  | #define GGML_ALIGNED_FREE(ptr)     _aligned_free(ptr) | ||||||
|  | #else | ||||||
|  | #define GGML_ALIGNED_MALLOC(size)  aligned_alloc(GGML_MEM_ALIGN, size) | ||||||
|  | #define GGML_ALIGNED_FREE(ptr)     free(ptr) | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #define UNUSED(x) (void)(x) | #define UNUSED(x) (void)(x) | ||||||
| #define SWAP(x, y, T) do { T SWAP = x; x = y; y = SWAP; } while (0) | #define SWAP(x, y, T) do { T SWAP = x; x = y; y = SWAP; } while (0) | ||||||
|  |  | ||||||
| @@ -2966,7 +2974,7 @@ struct ggml_context * ggml_init(struct ggml_init_params params) { | |||||||
|  |  | ||||||
|     *ctx = (struct ggml_context) { |     *ctx = (struct ggml_context) { | ||||||
|         /*.mem_size           =*/ params.mem_size, |         /*.mem_size           =*/ params.mem_size, | ||||||
|         /*.mem_buffer         =*/ params.mem_buffer ? params.mem_buffer : malloc(params.mem_size), |         /*.mem_buffer         =*/ params.mem_buffer ? params.mem_buffer : GGML_ALIGNED_MALLOC(params.mem_size), | ||||||
|         /*.mem_buffer_owned   =*/ params.mem_buffer ? false : true, |         /*.mem_buffer_owned   =*/ params.mem_buffer ? false : true, | ||||||
|         /*.no_alloc           =*/ params.no_alloc, |         /*.no_alloc           =*/ params.no_alloc, | ||||||
|         /*.n_objects          =*/ 0, |         /*.n_objects          =*/ 0, | ||||||
| @@ -3001,7 +3009,7 @@ void ggml_free(struct ggml_context * ctx) { | |||||||
|                     __func__, i, ctx->n_objects, ctx->objects_end->offs + ctx->objects_end->size); |                     __func__, i, ctx->n_objects, ctx->objects_end->offs + ctx->objects_end->size); | ||||||
|  |  | ||||||
|             if (ctx->mem_buffer_owned) { |             if (ctx->mem_buffer_owned) { | ||||||
|                 free(ctx->mem_buffer); |                 GGML_ALIGNED_FREE(ctx->mem_buffer); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             found = true; |             found = true; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Pavol Rusnak
					Pavol Rusnak