From e186d7141a51f2d7196c580e24e7b7db8f209db9 Mon Sep 17 00:00:00 2001 From: "Field G. Van Zee" Date: Sat, 21 Mar 2020 18:40:36 -0500 Subject: [PATCH] Disabled optimized amaxv kernels. Details: - Disabled use of optimized amaxv kernels, which use vector intrinsics for both 's' and 'd' datatypes. We disable these kernels because the current implementations fail to observe a semantic property of the BLAS i?amax_() subroutine, which is to return the index of the *first* element containing the maximum absolute value (that is, the first element if there exist two or more elements that contain the same value). With the optimized kernels disabled, the affected subconfigurations (haswell, zen, zen2, knl, and skx) will use the default reference implementations. Thanks to Mat Cross for reporting this issue via #380. - CREDITS file update. --- CREDITS | 1 + config/haswell/bli_cntx_init_haswell.c | 6 +++++- config/knl/bli_cntx_init_knl.c | 6 +++++- config/old/haswellbb/bli_cntx_init_haswell.c | 6 +++++- config/skx/bli_cntx_init_skx.c | 6 +++++- config/zen/bli_cntx_init_zen.c | 6 +++++- config/zen2/bli_cntx_init_zen2.c | 6 +++++- 7 files changed, 31 insertions(+), 6 deletions(-) diff --git a/CREDITS b/CREDITS index 8350e2a89..20b41d1a3 100644 --- a/CREDITS +++ b/CREDITS @@ -18,6 +18,7 @@ but many others have contributed code and feedback, including Matthew Brett @matthew-brett (University of Birmingham) Jed Brown @jedbrown (Argonne National Laboratory) Robin Christ @robinchrist + Mat Cross @matcross (NAG) Kay Dewhurst @jkd2016 (Max Planck Institute, Halle, Germany) Jeff Diamond (Oracle) Johannes Dieterich @iotamudelta diff --git a/config/haswell/bli_cntx_init_haswell.c b/config/haswell/bli_cntx_init_haswell.c index a3f263035..defbfaf1f 100644 --- a/config/haswell/bli_cntx_init_haswell.c +++ b/config/haswell/bli_cntx_init_haswell.c @@ -89,10 +89,14 @@ void bli_cntx_init_haswell( cntx_t* cntx ) // Update the context with optimized level-1v kernels. bli_cntx_set_l1v_kers ( - 10, + 8, +#if 0 + // NOTE: Disabled vectorized amaxv kernels due to incorrect semantics. + // See issue #380 for more details. // amaxv BLIS_AMAXV_KER, BLIS_FLOAT, bli_samaxv_zen_int, BLIS_AMAXV_KER, BLIS_DOUBLE, bli_damaxv_zen_int, +#endif // axpyv #if 0 BLIS_AXPYV_KER, BLIS_FLOAT, bli_saxpyv_zen_int, diff --git a/config/knl/bli_cntx_init_knl.c b/config/knl/bli_cntx_init_knl.c index e00b2a8dc..a5589db4d 100644 --- a/config/knl/bli_cntx_init_knl.c +++ b/config/knl/bli_cntx_init_knl.c @@ -78,10 +78,14 @@ void bli_cntx_init_knl( cntx_t* cntx ) // Update the context with optimized level-1v kernels. bli_cntx_set_l1v_kers ( - 10, + 8, +#if 0 + // NOTE: Disabled vectorized amaxv kernels due to incorrect semantics. + // See issue #380 for more details. // amaxv BLIS_AMAXV_KER, BLIS_FLOAT, bli_samaxv_zen_int, BLIS_AMAXV_KER, BLIS_DOUBLE, bli_damaxv_zen_int, +#endif // axpyv #if 0 BLIS_AXPYV_KER, BLIS_FLOAT, bli_saxpyv_zen_int, diff --git a/config/old/haswellbb/bli_cntx_init_haswell.c b/config/old/haswellbb/bli_cntx_init_haswell.c index c3640b623..77eca4797 100644 --- a/config/old/haswellbb/bli_cntx_init_haswell.c +++ b/config/old/haswellbb/bli_cntx_init_haswell.c @@ -149,10 +149,14 @@ void bli_cntx_init_haswell( cntx_t* cntx ) // Update the context with optimized level-1v kernels. bli_cntx_set_l1v_kers ( - 10, + 8, +#if 0 + // NOTE: Disabled vectorized amaxv kernels due to incorrect semantics. + // See issue #380 for more details. // amaxv BLIS_AMAXV_KER, BLIS_FLOAT, bli_samaxv_zen_int, BLIS_AMAXV_KER, BLIS_DOUBLE, bli_damaxv_zen_int, +#endif // axpyv #if 0 BLIS_AXPYV_KER, BLIS_FLOAT, bli_saxpyv_zen_int, diff --git a/config/skx/bli_cntx_init_skx.c b/config/skx/bli_cntx_init_skx.c index f030ca54b..b9e68cbb4 100644 --- a/config/skx/bli_cntx_init_skx.c +++ b/config/skx/bli_cntx_init_skx.c @@ -70,10 +70,14 @@ void bli_cntx_init_skx( cntx_t* cntx ) // Update the context with optimized level-1v kernels. bli_cntx_set_l1v_kers ( - 10, + 8, +#if 0 + // NOTE: Disabled vectorized amaxv kernels due to incorrect semantics. + // See issue #380 for more details. // amaxv BLIS_AMAXV_KER, BLIS_FLOAT, bli_samaxv_zen_int, BLIS_AMAXV_KER, BLIS_DOUBLE, bli_damaxv_zen_int, +#endif // axpyv #if 0 BLIS_AXPYV_KER, BLIS_FLOAT, bli_saxpyv_zen_int, diff --git a/config/zen/bli_cntx_init_zen.c b/config/zen/bli_cntx_init_zen.c index 1659cd2ea..248416819 100644 --- a/config/zen/bli_cntx_init_zen.c +++ b/config/zen/bli_cntx_init_zen.c @@ -82,10 +82,14 @@ void bli_cntx_init_zen( cntx_t* cntx ) // Update the context with optimized level-1v kernels. bli_cntx_set_l1v_kers ( - 10, + 8, +#if 0 + // NOTE: Disabled vectorized amaxv kernels due to incorrect semantics. + // See issue #380 for more details. // amaxv BLIS_AMAXV_KER, BLIS_FLOAT, bli_samaxv_zen_int, BLIS_AMAXV_KER, BLIS_DOUBLE, bli_damaxv_zen_int, +#endif // axpyv #if 0 BLIS_AXPYV_KER, BLIS_FLOAT, bli_saxpyv_zen_int, diff --git a/config/zen2/bli_cntx_init_zen2.c b/config/zen2/bli_cntx_init_zen2.c index 2a8af0ba0..3538a9f77 100644 --- a/config/zen2/bli_cntx_init_zen2.c +++ b/config/zen2/bli_cntx_init_zen2.c @@ -79,10 +79,14 @@ void bli_cntx_init_zen2( cntx_t* cntx ) // Update the context with optimized level-1v kernels. bli_cntx_set_l1v_kers ( - 10, + 8, +#if 0 + // NOTE: Disabled vectorized amaxv kernels due to incorrect semantics. + // See issue #380 for more details. // amaxv BLIS_AMAXV_KER, BLIS_FLOAT, bli_samaxv_zen_int, BLIS_AMAXV_KER, BLIS_DOUBLE, bli_damaxv_zen_int, +#endif // axpyv BLIS_AXPYV_KER, BLIS_FLOAT, bli_saxpyv_zen_int10,