mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-31 08:51:55 +00:00 
			
		
		
		
	ggml-cpu: x86 feature detection is specific to x86 (#13811)
This commit is contained in:
		 Christian Kastner
					Christian Kastner
				
			
				
					committed by
					
						 GitHub
						GitHub
					
				
			
			
				
	
			
			
			 GitHub
						GitHub
					
				
			
						parent
						
							952f3953c1
						
					
				
				
					commit
					7fe03e7446
				
			| @@ -299,6 +299,25 @@ function(ggml_add_cpu_backend_variant_impl tag_name) | ||||
|                 endif() | ||||
|             endif() | ||||
|         endif() | ||||
|  | ||||
|         if (GGML_BACKEND_DL) | ||||
|             if (GGML_NATIVE) | ||||
|                 # the feature check relies on ARCH_DEFINITIONS, but it is not set with GGML_NATIVE | ||||
|                 message(FATAL_ERROR "GGML_NATIVE is not compatible with GGML_BACKEND_DL, consider using GGML_CPU_ALL_VARIANTS") | ||||
|             endif() | ||||
|  | ||||
|             # The feature detection code is compiled as a separate target so that | ||||
|             # it can be built without the architecture flags | ||||
|             # Since multiple variants of the CPU backend may be included in the same | ||||
|             # build, using set_source_files_properties() to set the arch flags is not possible | ||||
|             set(GGML_CPU_FEATS_NAME ${GGML_CPU_NAME}-feats) | ||||
|             add_library(${GGML_CPU_FEATS_NAME} OBJECT ggml-cpu/cpu-feats-x86.cpp) | ||||
|             target_include_directories(${GGML_CPU_FEATS_NAME} PRIVATE . .. ../include) | ||||
|             target_compile_definitions(${GGML_CPU_FEATS_NAME} PRIVATE ${ARCH_DEFINITIONS}) | ||||
|             target_compile_definitions(${GGML_CPU_FEATS_NAME} PRIVATE GGML_BACKEND_DL GGML_BACKEND_BUILD GGML_BACKEND_SHARED) | ||||
|             set_target_properties(${GGML_CPU_FEATS_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) | ||||
|             target_link_libraries(${GGML_CPU_NAME} PRIVATE ${GGML_CPU_FEATS_NAME}) | ||||
|         endif() | ||||
|     elseif ("${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "ppc64le " OR "${CMAKE_SYSTEM_PROCESSOR} " STREQUAL "powerpc ") | ||||
|         message(STATUS "PowerPC detected") | ||||
|         if (GGML_NATIVE) | ||||
| @@ -477,25 +496,6 @@ function(ggml_add_cpu_backend_variant_impl tag_name) | ||||
|     target_compile_options(${GGML_CPU_NAME} PRIVATE ${ARCH_FLAGS}) | ||||
|     target_compile_definitions(${GGML_CPU_NAME} PRIVATE ${ARCH_DEFINITIONS}) | ||||
|  | ||||
|     if (GGML_BACKEND_DL) | ||||
|         if (GGML_NATIVE) | ||||
|             # the feature check relies on ARCH_DEFINITIONS, but it is not set with GGML_NATIVE | ||||
|             message(FATAL_ERROR "GGML_NATIVE is not compatible with GGML_BACKEND_DL, consider using GGML_CPU_ALL_VARIANTS") | ||||
|         endif() | ||||
|  | ||||
|         # The feature detection code is compiled as a separate target so that | ||||
|         # it can be built without the architecture flags | ||||
|         # Since multiple variants of the CPU backend may be included in the same | ||||
|         # build, using set_source_files_properties() to set the arch flags is not possible | ||||
|         set(GGML_CPU_FEATS_NAME ${GGML_CPU_NAME}-feats) | ||||
|         add_library(${GGML_CPU_FEATS_NAME} OBJECT ggml-cpu/cpu-feats-x86.cpp) | ||||
|         target_include_directories(${GGML_CPU_FEATS_NAME} PRIVATE . .. ../include) | ||||
|         target_compile_definitions(${GGML_CPU_FEATS_NAME} PRIVATE ${ARCH_DEFINITIONS}) | ||||
|         target_compile_definitions(${GGML_CPU_FEATS_NAME} PRIVATE GGML_BACKEND_DL GGML_BACKEND_BUILD GGML_BACKEND_SHARED) | ||||
|         set_target_properties(${GGML_CPU_FEATS_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON) | ||||
|         target_link_libraries(${GGML_CPU_NAME} PRIVATE ${GGML_CPU_FEATS_NAME}) | ||||
|     endif() | ||||
|  | ||||
|     if (EMSCRIPTEN) | ||||
|         set_target_properties(${GGML_CPU_NAME} PROPERTIES COMPILE_FLAGS "-msimd128") | ||||
|     endif() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user