Skip to content

Commit

Permalink
Disable AVX256 when /vlen not supported by MSVC
Browse files Browse the repository at this point in the history
  • Loading branch information
dsharlet committed Feb 19, 2025
1 parent 585faa1 commit 92acc17
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 0 deletions.
6 changes: 6 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -277,6 +277,12 @@ ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "Clang")
ENDIF()
ELSEIF(CMAKE_C_COMPILER_ID STREQUAL "MSVC")
SET(XNNPACK_ENABLE_AVX512BF16 OFF)
IF(MSVC_VERSION LESS_EQUAL 1941)
# /vlen option not supported
SET(XNNPACK_ENABLE_AVX256SKX OFF)
SET(XNNPACK_ENABLE_AVX256VNNI OFF)
SET(XNNPACK_ENABLE_AVX256VNNIGFNI OFF)
ENDIF()
ENDIF()
OPTION(XNNPACK_ENABLE_HVX "Build XNNPACK with Hexagon HVX micro-kernels" ON)
OPTION(XNNPACK_ENABLE_KLEIDIAI "Use KleidiAI GEMM microkernels for Arm" ON)
Expand Down
12 changes: 12 additions & 0 deletions src/configs/gemm-config.c
Original file line number Diff line number Diff line change
Expand Up @@ -2799,7 +2799,11 @@ static void init_qd8_f16_qc8w_gemm_config(void) {
qd8_f16_qc8w_gemm_config.pack_weights_and_biases = NULL; // Override the default packing function.
qd8_f16_qc8w_gemm_config.packed_stride_weights_and_biases = NULL; // Override the default packing function.
qd8_f16_qc8w_gemm_config.pack_gemm_gio = (xnn_packw_gemm_gio_ukernel_fn) xnn_pack_qs8_gemm_gio_w;
#if XNN_ENABLE_AVX256VNNI
qd8_f16_qc8w_gemm_config.pack_gemm_goi = (xnn_packw_gemm_goi_ukernel_fn) xnn_qs8_packw_gemm_goi_ukernel_x64c4__avx256vnni_prfm;
#else
qd8_f16_qc8w_gemm_config.pack_gemm_goi = (xnn_packw_gemm_goi_ukernel_fn) xnn_pack_qs8_gemm_goi_w;
#endif
qd8_f16_qc8w_gemm_config.mr = 16;
qd8_f16_qc8w_gemm_config.nr = 64;
qd8_f16_qc8w_gemm_config.log2_kr = 2;
Expand Down Expand Up @@ -3389,7 +3393,11 @@ static void init_qd8_f32_qc8w_gemm_config(void) {
qd8_f32_qc8w_gemm_config.pack_weights_and_biases = NULL; // Override the default packing function.
qd8_f32_qc8w_gemm_config.packed_stride_weights_and_biases = NULL; // Override the default packing function.
qd8_f32_qc8w_gemm_config.pack_gemm_gio = (xnn_packw_gemm_gio_ukernel_fn) xnn_pack_qs8_gemm_gio_w;
#if XNN_ENABLE_AVX256VNNI
qd8_f32_qc8w_gemm_config.pack_gemm_goi = (xnn_packw_gemm_goi_ukernel_fn) xnn_qs8_packw_gemm_goi_ukernel_x64c4__avx256vnni_prfm;
#else
qd8_f32_qc8w_gemm_config.pack_gemm_goi = (xnn_packw_gemm_goi_ukernel_fn) xnn_pack_qs8_gemm_goi_w;
#endif
qd8_f32_qc8w_gemm_config.mr = 16;
qd8_f32_qc8w_gemm_config.nr = 64;
qd8_f32_qc8w_gemm_config.log2_kr = 2;
Expand Down Expand Up @@ -4089,7 +4097,11 @@ static void init_qs8_qc8w_gemm_config(void) {
qs8_qc8w_gemm_config.pack_weights_and_biases = NULL; // Override the default packing function.
qs8_qc8w_gemm_config.packed_stride_weights_and_biases = NULL; // Override the default packing function.
qs8_qc8w_gemm_config.pack_gemm_gio = (xnn_packw_gemm_gio_ukernel_fn) xnn_pack_qs8_gemm_gio_w;
#if XNN_ENABLE_AVX256VNNI
qs8_qc8w_gemm_config.pack_gemm_goi = (xnn_packw_gemm_goi_ukernel_fn) xnn_qs8_packw_gemm_goi_ukernel_x64c4__avx256vnni_prfm;
#else
qs8_qc8w_gemm_config.pack_gemm_goi = (xnn_packw_gemm_goi_ukernel_fn) xnn_pack_qs8_gemm_goi_w;
#endif
qs8_qc8w_gemm_config.pack_igemm_goki = (xnn_pack_conv_goki_w_fn) xnn_pack_qs8_conv_goki_w;
qs8_qc8w_gemm_config.pack_igemm_kgo = (xnn_pack_conv_kgo_w_fn) xnn_pack_qs8_conv_kgo_w;
qs8_qc8w_gemm_config.pack_deconv_goki = (xnn_pack_deconv_goki_w_fn) xnn_pack_qs8_deconv_goki_w;
Expand Down

0 comments on commit 92acc17

Please sign in to comment.