mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-31 08:51:55 +00:00 
			
		
		
		
	Fix MacOS Sonoma model quantization (#4052)
Co-authored-by: Jared Van Bortel <jared@nomic.ai> Co-authored-by: Georgi Gerganov <ggerganov@gmail.com>
This commit is contained in:
		| @@ -458,6 +458,15 @@ if (LLAMA_LTO) | ||||
|     endif() | ||||
| endif() | ||||
|  | ||||
| # this version of Apple ld64 is buggy | ||||
| execute_process( | ||||
|     COMMAND ${CMAKE_C_COMPILER} ${CMAKE_EXE_LINKER_FLAGS} -Wl,-v | ||||
|     ERROR_VARIABLE output | ||||
| ) | ||||
| if (output MATCHES "dyld-1015\.7") | ||||
|     add_compile_definitions(HAVE_BUGGY_APPLE_LINKER) | ||||
| endif() | ||||
|  | ||||
| # Architecture specific | ||||
| # TODO: probably these flags need to be tweaked on some architectures | ||||
| #       feel free to update the Makefile for your architecture and send a pull request or issue | ||||
|   | ||||
							
								
								
									
										5
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								Makefile
									
									
									
									
									
								
							| @@ -239,6 +239,11 @@ else | ||||
| 	endif | ||||
| endif | ||||
|  | ||||
| # this version of Apple ld64 is buggy | ||||
| ifneq '' '$(findstring dyld-1015.7,$(shell $(CC) $(LDFLAGS) -Wl,-v 2>&1))' | ||||
| 	MK_CPPFLAGS += -DHAVE_BUGGY_APPLE_LINKER | ||||
| endif | ||||
|  | ||||
| # OS specific | ||||
| # TODO: support Windows | ||||
| ifneq '' '$(filter $(UNAME_S),Linux Darwin FreeBSD NetBSD OpenBSD Haiku)' | ||||
|   | ||||
| @@ -1368,7 +1368,12 @@ static float make_qkx2_quants(int n, int nmax, const float * restrict x, const f | ||||
|     float max = x[0]; | ||||
|     float sum_w = weights[0]; | ||||
|     float sum_x = sum_w * x[0]; | ||||
| #ifdef HAVE_BUGGY_APPLE_LINKER | ||||
|     // use 'volatile' to prevent unroll and work around a bug in Apple ld64 1015.7 | ||||
|     for (volatile int i = 1; i < n; ++i) { | ||||
| #else | ||||
|     for (int i = 1; i < n; ++i) { | ||||
| #endif | ||||
|         if (x[i] < min) min = x[i]; | ||||
|         if (x[i] > max) max = x[i]; | ||||
|         float w = weights[i]; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Michael Potter
					Michael Potter