mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	ggml : posixify madvise and pagesize (#3037)
* llama : use posix_madvise() instead of madvise() derived from BSD sed -i 's,\<madvise\>,posix_&,g;s,\<MADV_,POSIX_&,g' llama.cpp * ggml : use sysconf(_SC_PAGESIZE) instead of getpagesize() derived from BSD sed -i 's,getpagesize(),sysconf(_SC_PAGESIZE),g' ggml.c * metal : use sysconf(_SC_PAGESIZE) instead of getpagesize() derived from BSD sed -i 's,getpagesize(),sysconf(_SC_PAGESIZE),g' ggml-metal.m
This commit is contained in:
		 Przemysław Pawełczyk
					Przemysław Pawełczyk
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							178b1850eb
						
					
				
				
					commit
					fec2fb19e4
				
			| @@ -327,7 +327,7 @@ void ggml_metal_free(struct ggml_metal_context * ctx) { | |||||||
|  |  | ||||||
| void * ggml_metal_host_malloc(size_t n) { | void * ggml_metal_host_malloc(size_t n) { | ||||||
|     void * data = NULL; |     void * data = NULL; | ||||||
|     const int result = posix_memalign((void **) &data, getpagesize(), n); |     const int result = posix_memalign((void **) &data, sysconf(_SC_PAGESIZE), n); | ||||||
|     if (result != 0) { |     if (result != 0) { | ||||||
|         metal_printf("%s: error: posix_memalign failed\n", __func__); |         metal_printf("%s: error: posix_memalign failed\n", __func__); | ||||||
|         return NULL; |         return NULL; | ||||||
| @@ -401,7 +401,7 @@ bool ggml_metal_add_buffer( | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         const size_t size_page = getpagesize(); |         const size_t size_page = sysconf(_SC_PAGESIZE); | ||||||
|  |  | ||||||
|         size_t size_aligned = size; |         size_t size_aligned = size; | ||||||
|         if ((size_aligned % size_page) != 0) { |         if ((size_aligned % size_page) != 0) { | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								ggml.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								ggml.c
									
									
									
									
									
								
							| @@ -194,7 +194,7 @@ typedef void * thread_ret_t; | |||||||
| inline static void * ggml_aligned_malloc(size_t size) { | inline static void * ggml_aligned_malloc(size_t size) { | ||||||
|     void * aligned_memory = NULL; |     void * aligned_memory = NULL; | ||||||
| #ifdef GGML_USE_METAL | #ifdef GGML_USE_METAL | ||||||
|     int result = posix_memalign(&aligned_memory, getpagesize(), size); |     int result = posix_memalign(&aligned_memory, sysconf(_SC_PAGESIZE), size); | ||||||
| #else | #else | ||||||
|     int result = posix_memalign(&aligned_memory, GGML_MEM_ALIGN, size); |     int result = posix_memalign(&aligned_memory, GGML_MEM_ALIGN, size); | ||||||
| #endif | #endif | ||||||
|   | |||||||
| @@ -606,16 +606,16 @@ struct llama_mmap { | |||||||
|  |  | ||||||
|         if (prefetch > 0) { |         if (prefetch > 0) { | ||||||
|             // Advise the kernel to preload the mapped memory |             // Advise the kernel to preload the mapped memory | ||||||
|             if (madvise(addr, std::min(file->size, prefetch), MADV_WILLNEED)) { |             if (posix_madvise(addr, std::min(file->size, prefetch), POSIX_MADV_WILLNEED)) { | ||||||
|                 fprintf(stderr, "warning: madvise(.., MADV_WILLNEED) failed: %s\n", |                 fprintf(stderr, "warning: posix_madvise(.., POSIX_MADV_WILLNEED) failed: %s\n", | ||||||
|                         strerror(errno)); |                         strerror(errno)); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         if (numa) { |         if (numa) { | ||||||
|             // advise the kernel not to use readahead |             // advise the kernel not to use readahead | ||||||
|             // (because the next page might not belong on the same node) |             // (because the next page might not belong on the same node) | ||||||
|             if (madvise(addr, file->size, MADV_RANDOM)) { |             if (posix_madvise(addr, file->size, POSIX_MADV_RANDOM)) { | ||||||
|                 fprintf(stderr, "warning: madvise(.., MADV_RANDOM) failed: %s\n", |                 fprintf(stderr, "warning: posix_madvise(.., POSIX_MADV_RANDOM) failed: %s\n", | ||||||
|                         strerror(errno)); |                         strerror(errno)); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user