Skip to content

Commit 9861b36

Browse files
dzarukinluweizhou2016
authored andcommitted
build: gemm: add a build option to discard autogen kernels by isa
1 parent e634182 commit 9861b36

13 files changed

+460
-335
lines changed

cmake/configuring_primitive_list.cmake

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#===============================================================================
2-
# Copyright 2021 Intel Corporation
2+
# Copyright 2021-2023 Intel Corporation
33
#
44
# Licensed under the Apache License, Version 2.0 (the "License");
55
# you may not use this file except in compliance with the License.
@@ -66,6 +66,21 @@ else()
6666
endif()
6767
message(STATUS "Enabled primitive GPU ISA: ${DNNL_ENABLE_PRIMITIVE_GPU_ISA}")
6868

69+
if (ONEDNN_ENABLE_GEMM_KERNELS_ISA STREQUAL "ALL")
70+
set(BUILD_GEMM_KERNELS_ALL TRUE)
71+
elseif (ONEDNN_ENABLE_GEMM_KERNELS_ISA STREQUAL "NONE")
72+
set(BUILD_GEMM_KERNELS_NONE TRUE)
73+
else()
74+
foreach(isa ${ONEDNN_ENABLE_GEMM_KERNELS_ISA})
75+
string(TOUPPER ${isa} uisa)
76+
if(NOT "${uisa}" MATCHES "^(SSE41|AVX2|AVX512)$")
77+
message(FATAL_ERROR "Unsupported primitive CPU ISA: ${uisa}")
78+
endif()
79+
set(BUILD_GEMM_${uisa} TRUE)
80+
endforeach()
81+
endif()
82+
message(STATUS "Enabled GeMM kernels ISA: ${ONEDNN_ENABLE_GEMM_KERNELS_ISA}")
83+
6984
# When certain primitives or primitive ISA are switched off, some functions may
7085
# become unused which is expected. Switch off warning for unused functions in
7186
# such cases.

cmake/dnnl_compat.cmake

+2
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ set(COMPAT_CACHE_STRING_VARS
6161
"LIBRARY_NAME"
6262
"ENABLE_WORKLOAD"
6363
"ENABLE_PRIMITIVE"
64+
"ENABLE_PRIMITIVE_CPU_ISA"
65+
"ENABLE_PRIMITIVE_GPU_ISA"
6466
"ARCH_OPT_FLAGS"
6567
"CPU_RUNTIME"
6668
"GPU_RUNTIME"

cmake/options.cmake

+10
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,16 @@ set(DNNL_ENABLE_PRIMITIVE_GPU_ISA "ALL" CACHE STRING
149149
- <ISA_NAME>;<ISA_NAME>;... Includes only selected ISA to be enabled.
150150
Possible values are: GEN9, GEN11, XELP, XEHP, XEHPG, XEHPC.")
151151

152+
set(ONEDNN_ENABLE_GEMM_KERNELS_ISA "ALL" CACHE STRING
153+
"Specifies an ISA set of GeMM kernels residing in x64/gemm folder to be
154+
available at build time. Valid values:
155+
- ALL (the default). Includes all ISA kernels to be enabled.
156+
- NONE. Removes all kernels and interfaces.
157+
- <ISA_NAME>. Enables all ISA up to ISA_NAME included.
158+
Possible value are: SSE41, AVX2, AVX512. The linear order is
159+
SSE41 < AVX2 < AVX512 < AMX (or ALL). It means that if user selects, e.g.
160+
AVX2 ISA, SSE41 kernels will also present at build time.")
161+
152162
# =============
153163
# Optimizations
154164
# =============

doc/build/build_options.md

+12
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ oneDNN supports the following build-time options.
2424
| ONEDNN_ENABLE_PRIMITIVE | **ALL**, PRIMITIVE_NAME | Specifies a set of functionality to be available based on primitives |
2525
| ONEDNN_ENABLE_PRIMITIVE_CPU_ISA | **ALL**, CPU_ISA_NAME | Specifies a set of functionality to be available for CPU backend based on CPU ISA |
2626
| ONEDNN_ENABLE_PRIMITIVE_GPU_ISA | **ALL**, GPU_ISA_NAME | Specifies a set of functionality to be available for GPU backend based on GPU ISA |
27+
| ONEDNN_ENABLE_GEMM_KERNELS_ISA | **ALL**, NONE, ISA_NAME | Specifies a set of functionality to be available for GeMM kernels for CPU backend based on ISA |
2728
| ONEDNN_EXPERIMENTAL | ON, **OFF** | Enables [experimental features](@ref dev_guide_experimental) |
2829
| ONEDNN_VERBOSE | **ON**, OFF | Enables [verbose mode](@ref dev_guide_verbose) |
2930
| ONEDNN_AARCH64_USE_ACL | ON, **OFF** | Enables integration with Arm Compute Library for AArch64 builds |
@@ -109,6 +110,17 @@ always be available. Example that enables XeLP and XeHP set:
109110
-DONEDNN_ENABLE_PRIMITIVE_GPU_ISA=XELP;XEHP
110111
```
111112

113+
#### ONEDNN_ENABLE_GEMM_KERNELS_ISA
114+
This option supports several values: `ALL` (the default) which enables all
115+
ISA kernels from x64/gemm folder, `NONE` which disables all kernels and removes
116+
correspondent interfaces, or one of `SSE41`, `AVX2`, and `AVX512`. Values are
117+
linearly ordered as `SSE41` < `AVX2` < `AVX512`. When specified, selected ISA
118+
and all ISA that are "smaller" will be available. Example that leaves SSE41 and
119+
AVX2 sets, but removes AVX512 and AMX kernels:
120+
```
121+
-DONEDNN_ENABLE_GEMM_KERNELS_ISA=AVX2
122+
```
123+
112124
## CPU Options
113125
Intel Architecture Processors and compatible devices are supported by
114126
oneDNN CPU engine. The CPU engine is built by default but can be disabled

include/oneapi/dnnl/dnnl_config.h.in

+6
Original file line numberDiff line numberDiff line change
@@ -193,4 +193,10 @@
193193
#cmakedefine01 BUILD_XEHP
194194
#cmakedefine01 BUILD_XEHPG
195195
#cmakedefine01 BUILD_XEHPC
196+
// GeMM kernels ISA controls
197+
#cmakedefine01 BUILD_GEMM_KERNELS_ALL
198+
#cmakedefine01 BUILD_GEMM_KERNELS_NONE
199+
#cmakedefine01 BUILD_GEMM_SSE41
200+
#cmakedefine01 BUILD_GEMM_AVX2
201+
#cmakedefine01 BUILD_GEMM_AVX512
196202
#endif

src/cpu/gemm/gemm.cpp

+28-18
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright 2018-2022 Intel Corporation
2+
* Copyright 2018-2023 Intel Corporation
33
* Copyright 2022 IBM Corporation
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -134,13 +134,14 @@ dnnl_status_t extended_sgemm(const char *transa, const char *transb,
134134
}
135135
#endif
136136

137-
#if DNNL_X64
137+
#if DNNL_X64 && !__BUILD_GEMM_NONE
138138
if (mayiuse(sse41)) {
139139
float *dummy_ao = nullptr;
140140
float *dummy_bo = nullptr;
141-
return gemm_driver(transa, transb, bias ? "C" : nullptr, M, N, K, alpha,
142-
A, lda, dummy_ao, B, ldb, dummy_bo, beta, C, ldc, bias,
141+
auto status = gemm_driver(transa, transb, bias ? "C" : nullptr, M, N, K,
142+
alpha, A, lda, dummy_ao, B, ldb, dummy_bo, beta, C, ldc, bias,
143143
force_jit_nocopy_gemm);
144+
if (status == status::success) return status;
144145
}
145146
#endif
146147

@@ -201,10 +202,12 @@ dnnl_status_t gemm_s8x8s32(const char *transa, const char *transb,
201202
LDA, ao, B, LDB, bo, beta, C, LDC, co);
202203
if (status == dnnl_success) return status;
203204

204-
#if DNNL_X64
205-
if (mayiuse(sse41))
206-
return gemm_driver(transa, transb, offsetc, M, N, K, alpha, A, LDA, ao,
207-
B, LDB, bo, beta, C, LDC, co, false);
205+
#if DNNL_X64 && !__BUILD_GEMM_NONE
206+
if (mayiuse(sse41)) {
207+
auto status = gemm_driver(transa, transb, offsetc, M, N, K, alpha, A,
208+
LDA, ao, B, LDB, bo, beta, C, LDC, co, false);
209+
if (status == status::success) return status;
210+
}
208211
#elif DNNL_PPC64
209212
#ifdef __MMA__
210213
int ATflag = (*transa == 'T') || (*transa == 't');
@@ -237,18 +240,23 @@ dnnl_status_t gemm_s8x8s32(const char *transa, const char *transb,
237240

238241
if (*M == 0 || *N == 0 || *K == 0) return dnnl_success;
239242

240-
#if DNNL_X64
243+
#if DNNL_X64 && !__BUILD_GEMM_NONE
241244
bool use_jit = mayiuse(avx512_core);
242245
bool use_s8u8 = true
243246
&& utils::everyone_is(0, *ao, *bo) // so far a requirement
244247
&& IMPLICATION(USE_MKL_IGEMM == 0, mayiuse(sse41));
245248

246-
if (use_jit)
247-
return gemm_driver(transa, transb, offsetc, M, N, K, alpha, A, LDA, ao,
248-
B, LDB, bo, beta, C, LDC, co, false);
249-
else if (use_s8u8)
250-
return simple_gemm_s8s8s32(transa, transb, offsetc, M, N, K, alpha, A,
251-
LDA, ao, B, LDB, bo, beta, C, LDC, co);
249+
if (use_jit) {
250+
auto status = gemm_driver(transa, transb, offsetc, M, N, K, alpha, A,
251+
LDA, ao, B, LDB, bo, beta, C, LDC, co, false);
252+
if (status == status::success) return status;
253+
}
254+
255+
if (use_s8u8) {
256+
auto status = simple_gemm_s8s8s32(transa, transb, offsetc, M, N, K,
257+
alpha, A, LDA, ao, B, LDB, bo, beta, C, LDC, co);
258+
if (status == status::success) return status;
259+
}
252260
#endif
253261

254262
#if DNNL_PPC64
@@ -285,16 +293,18 @@ dnnl_status_t gemm_bf16bf16f32(const char *transa, const char *transb,
285293
ldb, C, ldc, alpha, beta, false);
286294
if (status != dnnl_success) return status;
287295

288-
#if DNNL_X64
296+
#if DNNL_X64 && !__BUILD_GEMM_NONE
289297
char *dummyOffsetC = nullptr;
290298
bfloat16_t *dummy_ao = nullptr;
291299
bfloat16_t *dummy_bo = nullptr;
292300
float *dummy_co = nullptr;
293301

294-
if (mayiuse(avx512_core))
295-
return gemm_driver(transa, transb, dummyOffsetC, M, N, K, alpha,
302+
if (mayiuse(avx512_core)) {
303+
auto status = gemm_driver(transa, transb, dummyOffsetC, M, N, K, alpha,
296304
(const bfloat16_t *)A, lda, dummy_ao, (const bfloat16_t *)B,
297305
ldb, dummy_bo, beta, (float *)C, ldc, dummy_co, false);
306+
if (status == status::success) return status;
307+
}
298308
#elif DNNL_PPC64
299309
#if defined(USE_CBLAS) && defined(BLAS_HAS_SBGEMM) && defined(__MMA__)
300310
bool trA = *transa == 't' || *transa == 'T';

src/cpu/gemm/gemm.hpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright 2018-2022 Intel Corporation
2+
* Copyright 2018-2023 Intel Corporation
33
* Copyright 2022 Arm Ltd. and affiliates
44
*
55
* Licensed under the Apache License, Version 2.0 (the "License");
@@ -28,6 +28,19 @@
2828

2929
#if DNNL_X64
3030
#include "cpu/x64/cpu_isa_traits.hpp"
31+
32+
// Kernels ISA section for configuring knobs.
33+
#define __BUILD_GEMM_AMX BUILD_GEMM_KERNELS_ALL
34+
#define __BUILD_GEMM_AVX512 __BUILD_GEMM_AMX || BUILD_GEMM_AVX512
35+
#define __BUILD_GEMM_AVX2 __BUILD_GEMM_AVX512 || BUILD_GEMM_AVX2
36+
#define __BUILD_GEMM_SSE41 __BUILD_GEMM_AVX2 || BUILD_GEMM_SSE41
37+
#define __BUILD_GEMM_NONE BUILD_GEMM_KERNELS_NONE
38+
#else
39+
#define __BUILD_GEMM_AMX 0
40+
#define __BUILD_GEMM_AVX512 0
41+
#define __BUILD_GEMM_AVX2 0
42+
#define __BUILD_GEMM_SSE41 0
43+
#define __BUILD_GEMM_NONE 0
3144
#endif
3245

3346
#if DNNL_AARCH64

src/cpu/gemm/gemm_pack.cpp

+16-15
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*******************************************************************************
2-
* Copyright 2020 Intel Corporation
2+
* Copyright 2020-2023 Intel Corporation
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,6 +16,7 @@
1616

1717
#include "cpu/platform.hpp"
1818

19+
#include "cpu/gemm/gemm.hpp"
1920
#include "cpu/gemm/gemm_pack.hpp"
2021

2122
#if DNNL_X64
@@ -27,13 +28,13 @@ namespace impl {
2728
namespace cpu {
2829

2930
bool pack_sgemm_supported() {
30-
#if DNNL_X64
31+
#if DNNL_X64 && !__BUILD_GEMM_NONE
3132
return x64::pack_sgemm_supported();
3233
#endif
3334
return false;
3435
}
3536
bool pack_gemm_bf16bf16f32_supported() {
36-
#if DNNL_X64
37+
#if DNNL_X64 && !__BUILD_GEMM_NONE
3738
return x64::pack_gemm_bf16bf16f32_supported();
3839
#endif
3940
return false;
@@ -42,7 +43,7 @@ bool pack_gemm_bf16bf16f32_supported() {
4243
dnnl_status_t sgemm_pack_get_size(const char *identifier, const char *transa,
4344
const char *transb, const dim_t *M, const dim_t *N, const dim_t *K,
4445
const dim_t *lda, const dim_t *ldb, size_t *size, bool *pack) {
45-
#if DNNL_X64
46+
#if DNNL_X64 && !__BUILD_GEMM_NONE
4647
return x64::sgemm_pack_get_size(
4748
identifier, transa, transb, M, N, K, lda, ldb, size, pack);
4849
#endif
@@ -53,7 +54,7 @@ dnnl_status_t gemm_bf16bf16f32_pack_get_size(const char *identifier,
5354
const char *transa, const char *transb, const dim_t *M, const dim_t *N,
5455
const dim_t *K, const dim_t *lda, const dim_t *ldb, size_t *size,
5556
bool *pack) {
56-
#if DNNL_X64
57+
#if DNNL_X64 && !__BUILD_GEMM_NONE
5758
return x64::gemm_bf16bf16f32_pack_get_size(
5859
identifier, transa, transb, M, N, K, lda, ldb, size, pack);
5960
#endif
@@ -64,7 +65,7 @@ dnnl_status_t gemm_s8u8s32_pack_get_size(const char *identifier,
6465
const char *transa, const char *transb, const dim_t *M, const dim_t *N,
6566
const dim_t *K, const dim_t *lda, const dim_t *ldb, size_t *size,
6667
bool *pack) {
67-
#if DNNL_X64
68+
#if DNNL_X64 && !__BUILD_GEMM_NONE
6869
return x64::gemm_s8u8s32_pack_get_size(
6970
identifier, transa, transb, M, N, K, lda, ldb, size, pack);
7071
#endif
@@ -75,7 +76,7 @@ dnnl_status_t gemm_s8s8s32_pack_get_size(const char *identifier,
7576
const char *transa, const char *transb, const dim_t *M, const dim_t *N,
7677
const dim_t *K, const dim_t *lda, const dim_t *ldb, size_t *size,
7778
bool *pack) {
78-
#if DNNL_X64
79+
#if DNNL_X64 && !__BUILD_GEMM_NONE
7980
return x64::gemm_s8s8s32_pack_get_size(
8081
identifier, transa, transb, M, N, K, lda, ldb, size, pack);
8182
#endif
@@ -85,7 +86,7 @@ dnnl_status_t gemm_s8s8s32_pack_get_size(const char *identifier,
8586
dnnl_status_t sgemm_pack(const char *identifier, const char *transa,
8687
const char *transb, const dim_t *M, const dim_t *N, const dim_t *K,
8788
const dim_t *lda, const dim_t *ldb, const float *src, float *dst) {
88-
#if DNNL_X64
89+
#if DNNL_X64 && !__BUILD_GEMM_NONE
8990
return x64::sgemm_pack(
9091
identifier, transa, transb, M, N, K, lda, ldb, src, dst);
9192
#endif
@@ -96,7 +97,7 @@ dnnl_status_t gemm_bf16bf16f32_pack(const char *identifier, const char *transa,
9697
const char *transb, const dim_t *M, const dim_t *N, const dim_t *K,
9798
const dim_t *lda, const dim_t *ldb, const bfloat16_t *src,
9899
bfloat16_t *dst) {
99-
#if DNNL_X64
100+
#if DNNL_X64 && !__BUILD_GEMM_NONE
100101
return x64::gemm_bf16bf16f32_pack(
101102
identifier, transa, transb, M, N, K, lda, ldb, src, dst);
102103
#endif
@@ -106,7 +107,7 @@ dnnl_status_t gemm_bf16bf16f32_pack(const char *identifier, const char *transa,
106107
dnnl_status_t gemm_s8u8s32_pack(const char *identifier, const char *transa,
107108
const char *transb, const dim_t *M, const dim_t *N, const dim_t *K,
108109
const dim_t *lda, const dim_t *ldb, const void *src, void *dst) {
109-
#if DNNL_X64
110+
#if DNNL_X64 && !__BUILD_GEMM_NONE
110111
return x64::gemm_s8u8s32_pack(
111112
identifier, transa, transb, M, N, K, lda, ldb, src, dst);
112113
#endif
@@ -116,7 +117,7 @@ dnnl_status_t gemm_s8u8s32_pack(const char *identifier, const char *transa,
116117
dnnl_status_t gemm_s8s8s32_pack(const char *identifier, const char *transa,
117118
const char *transb, const dim_t *M, const dim_t *N, const dim_t *K,
118119
const dim_t *lda, const dim_t *ldb, const void *src, void *dst) {
119-
#if DNNL_X64
120+
#if DNNL_X64 && !__BUILD_GEMM_NONE
120121
return x64::gemm_s8s8s32_pack(
121122
identifier, transa, transb, M, N, K, lda, ldb, src, dst);
122123
#endif
@@ -127,7 +128,7 @@ dnnl_status_t sgemm_compute(const char *transa, const char *transb,
127128
const dim_t *M, const dim_t *N, const dim_t *K, const float *A,
128129
const dim_t *lda, const float *B, const dim_t *ldb, const float *beta,
129130
float *C, const dim_t *ldc) {
130-
#if DNNL_X64
131+
#if DNNL_X64 && !__BUILD_GEMM_NONE
131132
return x64::sgemm_compute(
132133
transa, transb, M, N, K, A, lda, B, ldb, beta, C, ldc);
133134
#endif
@@ -138,7 +139,7 @@ dnnl_status_t gemm_bf16bf16f32_compute(const char *transa, const char *transb,
138139
const dim_t *M, const dim_t *N, const dim_t *K, const bfloat16_t *A,
139140
const dim_t *lda, const bfloat16_t *B, const dim_t *ldb,
140141
const float *beta, float *C, const dim_t *ldc) {
141-
#if DNNL_X64
142+
#if DNNL_X64 && !__BUILD_GEMM_NONE
142143
return x64::gemm_bf16bf16f32_compute(
143144
transa, transb, M, N, K, A, lda, B, ldb, beta, C, ldc);
144145
#endif
@@ -149,7 +150,7 @@ dnnl_status_t gemm_s8u8s32_compute(const char *transa, const char *transb,
149150
const char *offsetc, const dim_t *M, const dim_t *N, const dim_t *K,
150151
const int8_t *A, const dim_t *lda, const uint8_t *B, const dim_t *ldb,
151152
const float *beta, int32_t *C, const dim_t *ldc, const int32_t *co) {
152-
#if DNNL_X64
153+
#if DNNL_X64 && !__BUILD_GEMM_NONE
153154
return x64::gemm_s8u8s32_compute(
154155
transa, transb, offsetc, M, N, K, A, lda, B, ldb, beta, C, ldc, co);
155156
#endif
@@ -160,7 +161,7 @@ dnnl_status_t gemm_s8s8s32_compute(const char *transa, const char *transb,
160161
const char *offsetc, const dim_t *M, const dim_t *N, const dim_t *K,
161162
const int8_t *A, const dim_t *lda, const int8_t *B, const dim_t *ldb,
162163
const float *beta, int32_t *C, const dim_t *ldc, const int32_t *co) {
163-
#if DNNL_X64
164+
#if DNNL_X64 && !__BUILD_GEMM_NONE
164165
return x64::gemm_s8s8s32_compute(
165166
transa, transb, offsetc, M, N, K, A, lda, B, ldb, beta, C, ldc, co);
166167
#endif

src/cpu/rnn/rnn_utils.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -873,7 +873,7 @@ bool init_conf(rnn_conf_t &rnn, const rnn_desc_t &rd,
873873

874874
rnn.diff_weights_overwrite = rd.flags & rnn_flags::diff_weights_overwrite;
875875

876-
#if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL
876+
#if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL || BUILD_GEMM_KERNELS_NONE
877877
// XXX: Threadpool runtime may use different number of threads at execute
878878
// and create stages. GEMM packed API is not aware of number of threads as
879879
// of now. In order to synchronize all layers, GEMM pack API should be

src/cpu/x64/CMakeLists.txt

+29
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,35 @@ else()
5656
PROPERTIES COMPILE_FLAGS "${OPT_LEVEL}")
5757
endif()
5858

59+
# Discard GeMM kernel files when requested
60+
if(ONEDNN_ENABLE_GEMM_KERNELS_ISA MATCHES "^(AVX512|AVX2|SSE41|NONE)$")
61+
file(GLOB_RECURSE SOURCES_AMX ${CMAKE_CURRENT_SOURCE_DIR}/gemm/jit*amx*)
62+
foreach(amx_file ${SOURCES_AMX})
63+
list(REMOVE_ITEM SOURCES "${amx_file}")
64+
endforeach()
65+
endif()
66+
67+
if(ONEDNN_ENABLE_GEMM_KERNELS_ISA MATCHES "^(AVX2|SSE41|NONE)$")
68+
file(GLOB_RECURSE SOURCES_AVX512 ${CMAKE_CURRENT_SOURCE_DIR}/gemm/jit*avx512*)
69+
foreach(avx512_file ${SOURCES_AVX512})
70+
list(REMOVE_ITEM SOURCES "${avx512_file}")
71+
endforeach()
72+
endif()
73+
74+
if(ONEDNN_ENABLE_GEMM_KERNELS_ISA MATCHES "^(SSE41|NONE)$")
75+
file(GLOB_RECURSE SOURCES_AVX ${CMAKE_CURRENT_SOURCE_DIR}/gemm/jit*avx*)
76+
foreach(avx_file ${SOURCES_AVX})
77+
list(REMOVE_ITEM SOURCES "${avx_file}")
78+
endforeach()
79+
endif()
80+
81+
if(ONEDNN_ENABLE_GEMM_KERNELS_ISA MATCHES "^(NONE)$")
82+
file(GLOB_RECURSE SOURCES_SSE41 ${CMAKE_CURRENT_SOURCE_DIR}/gemm/*)
83+
foreach(sse41_file ${SOURCES_SSE41})
84+
list(REMOVE_ITEM SOURCES "${sse41_file}")
85+
endforeach()
86+
endif()
87+
5988
set(OBJ_LIB ${LIB_PACKAGE_NAME}_cpu_x64)
6089
add_library(${OBJ_LIB} OBJECT ${SOURCES})
6190
set_property(GLOBAL APPEND PROPERTY DNNL_LIB_DEPS

0 commit comments

Comments
 (0)