mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	Windows fixes (#890)
Mostly for msys2 and mingw64 builds, which are different from each other and different from standard Visual Studio builds. Isn't Windows fun? - Define _GNU_SOURCE in more files (it's already used in ggml.c for Linux's sake). - Don't use PrefetchVirtualMemory if not building for Windows 8 or later (mingw64 doesn't by default). But warn the user about this situation since it's probably not intended. - Check for NOMINMAX already being defined, which it is on mingw64. - Actually use the `increment` variable (bug in my `pizza` PR). - Suppress unused variable warnings in the fake pthread_create and pthread_join implementations for Windows. - (not Windows-related) Remove mention of `asprintf` from comment; `asprintf` is no longer used. Fixes #871.
This commit is contained in:
		
							
								
								
									
										12
									
								
								llama_util.h
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								llama_util.h
									
									
									
									
									
								
							| @@ -26,7 +26,9 @@ | ||||
|  | ||||
| #if defined(_WIN32) | ||||
|     #define WIN32_LEAN_AND_MEAN | ||||
|     #define NOMINMAX | ||||
|     #ifndef NOMINMAX | ||||
|         #define NOMINMAX | ||||
|     #endif | ||||
|     #include <windows.h> | ||||
|     #include <io.h> | ||||
|     #include <stdio.h> // for _fseeki64 | ||||
| @@ -209,6 +211,7 @@ struct llama_mmap { | ||||
|             throw format("MapViewOfFile failed: %s", llama_format_win_err(error).c_str()); | ||||
|         } | ||||
|  | ||||
|         #if _WIN32_WINNT >= _WIN32_WINNT_WIN8 | ||||
|         // Advise the kernel to preload the mapped memory | ||||
|         WIN32_MEMORY_RANGE_ENTRY range; | ||||
|         range.VirtualAddress = addr; | ||||
| @@ -217,6 +220,9 @@ struct llama_mmap { | ||||
|             fprintf(stderr, "warning: PrefetchVirtualMemory failed: %s\n", | ||||
|                     llama_format_win_err(GetLastError()).c_str()); | ||||
|         } | ||||
|         #else | ||||
|         #pragma message("warning: You are building for pre-Windows 8; prefetch not supported") | ||||
|         #endif // _WIN32_WINNT >= _WIN32_WINNT_WIN8 | ||||
|     } | ||||
|  | ||||
|     ~llama_mmap() { | ||||
| @@ -338,8 +344,8 @@ struct llama_mlock { | ||||
|             // Hopefully a megabyte is enough overhead: | ||||
|             size_t increment = size + 1048576; | ||||
|             // The minimum must be <= the maximum, so we need to increase both: | ||||
|             min_ws_size += size; | ||||
|             max_ws_size += size; | ||||
|             min_ws_size += increment; | ||||
|             max_ws_size += increment; | ||||
|             if (!SetProcessWorkingSetSize(GetCurrentProcess(), min_ws_size, max_ws_size)) { | ||||
|                 fprintf(stderr, "warning: SetProcessWorkingSetSize failed: %s\n", | ||||
|                         llama_format_win_err(GetLastError()).c_str()); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 comex
					comex