mirror of
https://github.com/ggml-org/llama.cpp.git
synced 2025-06-27 12:05:03 +00:00
ggml: Add Android support for GGML_CPU_ALL_VARIANTS (#14206)
This commit is contained in:
@ -311,18 +311,28 @@ if (GGML_CPU_ALL_VARIANTS)
|
|||||||
# MSVC doesn't support AMX
|
# MSVC doesn't support AMX
|
||||||
ggml_add_cpu_backend_variant(sapphirerapids SSE42 AVX F16C AVX2 BMI2 FMA AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16 AMX_TILE AMX_INT8)
|
ggml_add_cpu_backend_variant(sapphirerapids SSE42 AVX F16C AVX2 BMI2 FMA AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16 AMX_TILE AMX_INT8)
|
||||||
endif()
|
endif()
|
||||||
elseif(GGML_SYSTEM_ARCH STREQUAL "ARM" AND CMAKE_SYSTEM_NAME MATCHES "Linux")
|
elseif(GGML_SYSTEM_ARCH STREQUAL "ARM")
|
||||||
# Many of these features are optional so we build versions with popular
|
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||||
# combinations and name the backends based on the version they were
|
# Many of these features are optional so we build versions with popular
|
||||||
# first released with
|
# combinations and name the backends based on the version they were
|
||||||
ggml_add_cpu_backend_variant(armv8.0_1)
|
# first released with
|
||||||
ggml_add_cpu_backend_variant(armv8.2_1 DOTPROD)
|
ggml_add_cpu_backend_variant(armv8.0_1)
|
||||||
ggml_add_cpu_backend_variant(armv8.2_2 DOTPROD FP16_VECTOR_ARITHMETIC)
|
ggml_add_cpu_backend_variant(armv8.2_1 DOTPROD)
|
||||||
ggml_add_cpu_backend_variant(armv8.2_3 DOTPROD FP16_VECTOR_ARITHMETIC SVE)
|
ggml_add_cpu_backend_variant(armv8.2_2 DOTPROD FP16_VECTOR_ARITHMETIC)
|
||||||
ggml_add_cpu_backend_variant(armv8.6_1 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8)
|
ggml_add_cpu_backend_variant(armv8.2_3 DOTPROD FP16_VECTOR_ARITHMETIC SVE)
|
||||||
ggml_add_cpu_backend_variant(armv8.6_2 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SVE2)
|
ggml_add_cpu_backend_variant(armv8.6_1 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8)
|
||||||
ggml_add_cpu_backend_variant(armv9.2_1 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SME)
|
ggml_add_cpu_backend_variant(armv8.6_2 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SVE2)
|
||||||
ggml_add_cpu_backend_variant(armv9.2_2 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SVE2 SME)
|
ggml_add_cpu_backend_variant(armv9.2_1 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SME)
|
||||||
|
ggml_add_cpu_backend_variant(armv9.2_2 DOTPROD FP16_VECTOR_ARITHMETIC SVE MATMUL_INT8 SVE2 SME)
|
||||||
|
elseif (CMAKE_SYSTEM_NAME MATCHES "Android")
|
||||||
|
# Android-specific backends with SoC-compatible feature sets
|
||||||
|
ggml_add_cpu_backend_variant(android_armv8.0_1)
|
||||||
|
ggml_add_cpu_backend_variant(android_armv8.2_1 DOTPROD)
|
||||||
|
ggml_add_cpu_backend_variant(android_armv8.2_2 DOTPROD FP16_VECTOR_ARITHMETIC)
|
||||||
|
ggml_add_cpu_backend_variant(android_armv8.6_1 DOTPROD FP16_VECTOR_ARITHMETIC MATMUL_INT8)
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unsupported ARM target OS: ${CMAKE_SYSTEM_NAME}")
|
||||||
|
endif()
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "GGML_CPU_ALL_VARIANTS not yet supported with ${GGML_SYSTEM_ARCH} on ${CMAKE_SYSTEM_NAME}")
|
message(FATAL_ERROR "GGML_CPU_ALL_VARIANTS not yet supported with ${GGML_SYSTEM_ARCH} on ${CMAKE_SYSTEM_NAME}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -158,48 +158,45 @@ function(ggml_add_cpu_backend_variant_impl tag_name)
|
|||||||
if (GGML_CPU_ARM_ARCH)
|
if (GGML_CPU_ARM_ARCH)
|
||||||
list(APPEND ARCH_FLAGS -march=${GGML_CPU_ARM_ARCH})
|
list(APPEND ARCH_FLAGS -march=${GGML_CPU_ARM_ARCH})
|
||||||
elseif(GGML_CPU_ALL_VARIANTS)
|
elseif(GGML_CPU_ALL_VARIANTS)
|
||||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
# Begin with the lowest baseline
|
||||||
# Begin with the lowest baseline
|
set(ARM_MCPU "armv8-a")
|
||||||
set(ARM_MCPU "armv8-a")
|
set(ARCH_TAGS "")
|
||||||
set(ARCH_TAGS "")
|
set(ARCH_DEFINITIONS "")
|
||||||
set(ARCH_DEFINITIONS "")
|
|
||||||
|
|
||||||
# When a feature is selected, bump the MCPU to the first
|
# When a feature is selected, bump the MCPU to the first
|
||||||
# version that supported it
|
# version that supported it
|
||||||
if (GGML_INTERNAL_DOTPROD)
|
if (GGML_INTERNAL_DOTPROD)
|
||||||
set(ARM_MCPU "armv8.2-a")
|
set(ARM_MCPU "armv8.2-a")
|
||||||
set(ARCH_TAGS "${ARCH_TAGS}+dotprod")
|
set(ARCH_TAGS "${ARCH_TAGS}+dotprod")
|
||||||
list(APPEND ARCH_DEFINITIONS GGML_USE_DOTPROD)
|
list(APPEND ARCH_DEFINITIONS GGML_USE_DOTPROD)
|
||||||
endif()
|
|
||||||
if (GGML_INTERNAL_FP16_VECTOR_ARITHMETIC)
|
|
||||||
set(ARM_MCPU "armv8.2-a")
|
|
||||||
set(ARCH_TAGS "${ARCH_TAGS}+fp16")
|
|
||||||
list(APPEND ARCH_DEFINITIONS GGML_USE_FP16_VECTOR_ARITHMETIC)
|
|
||||||
endif()
|
|
||||||
if (GGML_INTERNAL_SVE)
|
|
||||||
set(ARM_MCPU "armv8.2-a")
|
|
||||||
set(ARCH_TAGS "${ARCH_TAGS}+sve")
|
|
||||||
list(APPEND ARCH_DEFINITIONS GGML_USE_SVE)
|
|
||||||
endif()
|
|
||||||
if (GGML_INTERNAL_MATMUL_INT8)
|
|
||||||
set(ARM_MCPU "armv8.6-a")
|
|
||||||
set(ARCH_TAGS "${ARCH_TAGS}+i8mm")
|
|
||||||
list(APPEND ARCH_DEFINITIONS GGML_USE_MATMUL_INT8)
|
|
||||||
endif()
|
|
||||||
if (GGML_INTERNAL_SVE2)
|
|
||||||
set(ARM_MCPU "armv8.6-a")
|
|
||||||
set(ARCH_TAGS "${ARCH_TAGS}+sve2")
|
|
||||||
list(APPEND ARCH_DEFINITIONS GGML_USE_SVE2)
|
|
||||||
endif()
|
|
||||||
if (GGML_INTERNAL_SME)
|
|
||||||
set(ARM_MCPU "armv9.2-a")
|
|
||||||
set(ARCH_TAGS "${ARCH_TAGS}+sme")
|
|
||||||
list(APPEND ARCH_DEFINITIONS GGML_USE_SME)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND ARCH_FLAGS "-march=${ARM_MCPU}${ARCH_TAGS}")
|
|
||||||
ggml_add_cpu_backend_features(${GGML_CPU_NAME} arm ${ARCH_DEFINITIONS})
|
|
||||||
endif()
|
endif()
|
||||||
|
if (GGML_INTERNAL_FP16_VECTOR_ARITHMETIC)
|
||||||
|
set(ARM_MCPU "armv8.2-a")
|
||||||
|
set(ARCH_TAGS "${ARCH_TAGS}+fp16")
|
||||||
|
list(APPEND ARCH_DEFINITIONS GGML_USE_FP16_VECTOR_ARITHMETIC)
|
||||||
|
endif()
|
||||||
|
if (GGML_INTERNAL_SVE)
|
||||||
|
set(ARM_MCPU "armv8.2-a")
|
||||||
|
set(ARCH_TAGS "${ARCH_TAGS}+sve")
|
||||||
|
list(APPEND ARCH_DEFINITIONS GGML_USE_SVE)
|
||||||
|
endif()
|
||||||
|
if (GGML_INTERNAL_MATMUL_INT8)
|
||||||
|
set(ARM_MCPU "armv8.6-a")
|
||||||
|
set(ARCH_TAGS "${ARCH_TAGS}+i8mm")
|
||||||
|
list(APPEND ARCH_DEFINITIONS GGML_USE_MATMUL_INT8)
|
||||||
|
endif()
|
||||||
|
if (GGML_INTERNAL_SVE2)
|
||||||
|
set(ARM_MCPU "armv8.6-a")
|
||||||
|
set(ARCH_TAGS "${ARCH_TAGS}+sve2")
|
||||||
|
list(APPEND ARCH_DEFINITIONS GGML_USE_SVE2)
|
||||||
|
endif()
|
||||||
|
if (GGML_INTERNAL_SME)
|
||||||
|
set(ARM_MCPU "armv9.2-a")
|
||||||
|
set(ARCH_TAGS "${ARCH_TAGS}+sme")
|
||||||
|
list(APPEND ARCH_DEFINITIONS GGML_USE_SME)
|
||||||
|
endif()
|
||||||
|
list(APPEND ARCH_FLAGS "-march=${ARM_MCPU}${ARCH_TAGS}")
|
||||||
|
ggml_add_cpu_backend_features(${GGML_CPU_NAME} arm ${ARCH_DEFINITIONS})
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user