cmake: Added more x86_64 CPU backends when building with `GGML_CPU_ALL_VARIANTS=On` (#18186)
* minor: Consolidated `#include <immintrin.h>` under `ggml-cpu-impl.h` * cmake: Added more x86-64 CPU backends when building with `GGML_CPU_ALL_VARIANTS=On` - `ivybridge` - `piledriver` - `cannonlake` - `cascadelake` - `cooperlake` - `zen4` Resolves: #17966
This commit is contained in:
parent
4fd59e8427
commit
94de74e7b1
|
|
@ -430,10 +430,22 @@ if (MSVC)
|
||||||
configure_msvc_target(ggml-cpu-x64)
|
configure_msvc_target(ggml-cpu-x64)
|
||||||
configure_msvc_target(ggml-cpu-sse42)
|
configure_msvc_target(ggml-cpu-sse42)
|
||||||
configure_msvc_target(ggml-cpu-sandybridge)
|
configure_msvc_target(ggml-cpu-sandybridge)
|
||||||
|
# __FMA__ and __F16C__ are not defined in MSVC, however they are implied with AVX2/AVX512
|
||||||
|
# skipping ggml-cpu-ivybridge
|
||||||
|
# skipping ggml-cpu-piledriver
|
||||||
configure_msvc_target(ggml-cpu-haswell)
|
configure_msvc_target(ggml-cpu-haswell)
|
||||||
configure_msvc_target(ggml-cpu-skylakex)
|
configure_msvc_target(ggml-cpu-skylakex)
|
||||||
|
configure_msvc_target(ggml-cpu-cannonlake)
|
||||||
|
configure_msvc_target(ggml-cpu-cascadelake)
|
||||||
configure_msvc_target(ggml-cpu-icelake)
|
configure_msvc_target(ggml-cpu-icelake)
|
||||||
|
# MSVC 2022 doesn't support BF16 intrinsics without `/arch:AVX10.1` ?!
|
||||||
|
# https://learn.microsoft.com/en-us/cpp/intrinsics/x64-amd64-intrinsics-list?view=msvc-170
|
||||||
|
# https://learn.microsoft.com/en-us/cpp/build/reference/arch-x64?view=msvc-170
|
||||||
|
# skipping ggml-cpu-cooperlake
|
||||||
|
# skipping ggml-cpu-zen4
|
||||||
configure_msvc_target(ggml-cpu-alderlake)
|
configure_msvc_target(ggml-cpu-alderlake)
|
||||||
|
# MSVC doesn't support AMX
|
||||||
|
# skipping ggml-cpu-sapphirerapids
|
||||||
|
|
||||||
if (GGML_BUILD_EXAMPLES)
|
if (GGML_BUILD_EXAMPLES)
|
||||||
configure_msvc_target(common-ggml)
|
configure_msvc_target(common-ggml)
|
||||||
|
|
|
||||||
|
|
@ -357,15 +357,29 @@ if (GGML_CPU_ALL_VARIANTS)
|
||||||
endif()
|
endif()
|
||||||
if (GGML_SYSTEM_ARCH STREQUAL "x86")
|
if (GGML_SYSTEM_ARCH STREQUAL "x86")
|
||||||
ggml_add_cpu_backend_variant(x64)
|
ggml_add_cpu_backend_variant(x64)
|
||||||
ggml_add_cpu_backend_variant(sse42 SSE42)
|
ggml_add_cpu_backend_variant(sse42 SSE42)
|
||||||
ggml_add_cpu_backend_variant(sandybridge SSE42 AVX)
|
ggml_add_cpu_backend_variant(sandybridge SSE42 AVX)
|
||||||
ggml_add_cpu_backend_variant(haswell SSE42 AVX F16C AVX2 BMI2 FMA)
|
if (NOT MSVC)
|
||||||
ggml_add_cpu_backend_variant(skylakex SSE42 AVX F16C AVX2 BMI2 FMA AVX512)
|
# __FMA__ and __F16C__ are not defined in MSVC, however they are implied with AVX2/AVX512
|
||||||
ggml_add_cpu_backend_variant(icelake SSE42 AVX F16C AVX2 BMI2 FMA AVX512 AVX512_VBMI AVX512_VNNI)
|
ggml_add_cpu_backend_variant(ivybridge SSE42 AVX F16C)
|
||||||
ggml_add_cpu_backend_variant(alderlake SSE42 AVX F16C AVX2 BMI2 FMA AVX_VNNI)
|
ggml_add_cpu_backend_variant(piledriver SSE42 AVX F16C FMA)
|
||||||
|
endif()
|
||||||
|
ggml_add_cpu_backend_variant(haswell SSE42 AVX F16C FMA AVX2 BMI2)
|
||||||
|
ggml_add_cpu_backend_variant(skylakex SSE42 AVX F16C FMA AVX2 BMI2 AVX512)
|
||||||
|
ggml_add_cpu_backend_variant(cannonlake SSE42 AVX F16C FMA AVX2 BMI2 AVX512 AVX512_VBMI)
|
||||||
|
ggml_add_cpu_backend_variant(cascadelake SSE42 AVX F16C FMA AVX2 BMI2 AVX512 AVX512_VNNI)
|
||||||
|
ggml_add_cpu_backend_variant(icelake SSE42 AVX F16C FMA AVX2 BMI2 AVX512 AVX512_VBMI AVX512_VNNI)
|
||||||
|
if (NOT MSVC)
|
||||||
|
# MSVC 2022 doesn't support BF16 intrinsics without `/arch:AVX10.1` ?!
|
||||||
|
# https://learn.microsoft.com/en-us/cpp/intrinsics/x64-amd64-intrinsics-list?view=msvc-170
|
||||||
|
# https://learn.microsoft.com/en-us/cpp/build/reference/arch-x64?view=msvc-170
|
||||||
|
ggml_add_cpu_backend_variant(cooperlake SSE42 AVX F16C FMA AVX2 BMI2 AVX512 AVX512_VNNI AVX512_BF16)
|
||||||
|
ggml_add_cpu_backend_variant(zen4 SSE42 AVX F16C FMA AVX2 BMI2 AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16)
|
||||||
|
endif()
|
||||||
|
ggml_add_cpu_backend_variant(alderlake SSE42 AVX F16C FMA AVX2 BMI2 AVX_VNNI)
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
# 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 FMA AVX2 BMI2 AVX512 AVX512_VBMI AVX512_VNNI AVX512_BF16 AMX_TILE AMX_INT8)
|
||||||
endif()
|
endif()
|
||||||
elseif(GGML_SYSTEM_ARCH STREQUAL "ARM")
|
elseif(GGML_SYSTEM_ARCH STREQUAL "ARM")
|
||||||
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
if (CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||||
|
|
|
||||||
|
|
@ -328,7 +328,7 @@ inline static int32x4_t ggml_vdotq_s32(int32x4_t acc, int8x16_t a, int8x16_t b)
|
||||||
|
|
||||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||||
#include <intrin.h>
|
#include <intrin.h>
|
||||||
#elif defined(__AVX__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__SSSE3__) || defined(__SSE3__) || defined(__SSE__)
|
#elif defined(__SSE__) || defined(__SSE3__) || defined(__SSSE3__) || defined(__AVX__) || defined(__F16C__) || defined(__AVX2__) || defined(__AVX512F__) || defined(__AVX512BF16__)
|
||||||
#include <immintrin.h>
|
#include <immintrin.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,10 +14,6 @@
|
||||||
#include <arm_neon.h>
|
#include <arm_neon.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__F16C__)
|
|
||||||
#include <immintrin.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__riscv_v_intrinsic)
|
#if defined(__riscv_v_intrinsic)
|
||||||
#include <riscv_vector.h>
|
#include <riscv_vector.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -24,10 +24,6 @@
|
||||||
#include <arm_neon.h>
|
#include <arm_neon.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__F16C__)
|
|
||||||
#include <immintrin.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue