From 6b48a4a0218cef748d27a9023bc5f34a902a978b Mon Sep 17 00:00:00 2001 From: Honza Horak Date: Fri, 26 Aug 2022 07:28:33 +0200 Subject: [PATCH] Update to 0.3.21 to bring primarily the latest power10 optimizations Resolves: #2112099 Also fix SBGEMM test to work with INTERFACE64 to make the new version build-able (rhbz#2120974) --- .gitignore | 1 + openblas-0.2.5-libname.patch | 9 ++-- openblas-0.3.11-tests.patch | 36 ++++------------ openblas-0.3.15-out-of-bounds-read.patch | 27 ------------ openblas-0.3.21-sbgemm-test.patch | 55 ++++++++++++++++++++++++ openblas.spec | 15 ++++--- sources | 2 +- 7 files changed, 80 insertions(+), 65 deletions(-) delete mode 100644 openblas-0.3.15-out-of-bounds-read.patch create mode 100644 openblas-0.3.21-sbgemm-test.patch diff --git a/.gitignore b/.gitignore index 70a6db3..bd1fa5f 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,4 @@ /openblas-0.3.12.tar.gz /openblas-0.3.13.tar.gz /openblas-0.3.15.tar.gz +/openblas-0.3.21.tar.gz diff --git a/openblas-0.2.5-libname.patch b/openblas-0.2.5-libname.patch index f59d61e..e30ab8b 100644 --- a/openblas-0.2.5-libname.patch +++ b/openblas-0.2.5-libname.patch @@ -1,8 +1,7 @@ -diff --git a/Makefile.system b/Makefile.system -index ae703e4d..80739dc4 100644 ---- a/Makefile.system -+++ b/Makefile.system -@@ -1515,16 +1515,16 @@ ifndef SMP +diff -up OpenBLAS-0.2.5/Makefile.system.orig OpenBLAS-0.2.5/Makefile.system +--- OpenBLAS-0.2.5/Makefile.system.orig 2012-11-27 01:24:53.000000000 +0200 ++++ OpenBLAS-0.2.5/Makefile.system 2012-12-24 16:13:57.316689688 +0200 +@@ -758,16 +758,16 @@ ifndef SMP LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX) LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX) else diff --git a/openblas-0.3.11-tests.patch b/openblas-0.3.11-tests.patch index 2c49d09..abbdf45 100644 --- a/openblas-0.3.11-tests.patch +++ b/openblas-0.3.11-tests.patch @@ -1,44 +1,26 @@ -diff --git a/Makefile b/Makefile -index 555d1c46..7dc74273 100644 ---- a/Makefile -+++ b/Makefile -@@ -144,13 +144,13 @@ tests : +diff -up OpenBLAS-0.3.21/Makefile.fixtests OpenBLAS-0.3.21/Makefile +--- OpenBLAS-0.3.21/Makefile.fixtests 2022-08-26 07:37:06.257272957 +0200 ++++ OpenBLAS-0.3.21/Makefile 2022-08-26 07:37:53.168414307 +0200 +@@ -147,18 +147,18 @@ tests : ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN))) touch $(LIBNAME) ifndef NO_FBLAS - $(MAKE) -C test all + $(MAKE) -C test FC="$(FC)" CC="$(CC)" COMMON_OPT="$(COMMON_OPT)" FCOMMON_OPT="$(FCOMMON_OPT)" all endif + endif + ifneq ($(ONLY_CBLAS), 1) - $(MAKE) -C utest all + $(MAKE) -C utest FC="$(FC)" CC="$(CC)" COMMON_OPT="$(COMMON_OPT)" FCOMMON_OPT="$(FCOMMON_OPT)" all + endif ifneq ($(NO_CBLAS), 1) + ifneq ($(ONLY_CBLAS), 1) - $(MAKE) -C ctest all + $(MAKE) -C ctest FC="$(FC)" CC="$(CC)" COMMON_OPT="$(COMMON_OPT)" FCOMMON_OPT="$(FCOMMON_OPT)" all + endif ifeq ($(CPP_THREAD_SAFETY_TEST), 1) - $(MAKE) -C cpp_thread_test all + $(MAKE) -C cpp_thread_test FC="$(FC)" CC="$(CC)" COMMON_OPT="$(COMMON_OPT)" FCOMMON_OPT="$(FCOMMON_OPT)" all endif endif - endif -diff --git a/cpp_thread_test/Makefile b/cpp_thread_test/Makefile -index 81e3470e..d541b70d 100644 ---- a/cpp_thread_test/Makefile -+++ b/cpp_thread_test/Makefile -@@ -1,13 +1,14 @@ --include ../Makefile.rule -+TOPDIR = .. -+include $(TOPDIR)/Makefile.system - all :: dgemv_tester dgemm_tester - - dgemv_tester : -- $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 dgemv_thread_safety.cpp ../libopenblas.a -lpthread -o dgemv_tester -+ $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 dgemv_thread_safety.cpp ../$(LIBNAME) -lpthread -o dgemv_tester - ./dgemv_tester - - dgemm_tester : dgemv_tester -- $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 dgemm_thread_safety.cpp ../libopenblas.a -lpthread -o dgemm_tester -+ $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 dgemm_thread_safety.cpp ../$(LIBNAME) -lpthread -o dgemm_tester - ./dgemm_tester - - clean :: diff --git a/openblas-0.3.15-out-of-bounds-read.patch b/openblas-0.3.15-out-of-bounds-read.patch deleted file mode 100644 index 3e7fc7a..0000000 --- a/openblas-0.3.15-out-of-bounds-read.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 337b65133df174796794871b3988cd03426e6d41 Mon Sep 17 00:00:00 2001 -From: Martin Kroeker -Date: Fri, 1 Oct 2021 11:19:53 +0200 -Subject: [PATCH] Fix out of bounds read in ?llarv (Reference-LAPACK PR 625) - -Resolves: CVE-2021-4048 - ---- - lapack-netlib/SRC/zlarrv.f | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/lapack-netlib/SRC/zlarrv.f b/lapack-netlib/SRC/zlarrv.f -index 23976dbe..8d10e3c2 100644 ---- a/lapack-netlib/SRC/zlarrv.f -+++ b/lapack-netlib/SRC/zlarrv.f -@@ -351,7 +351,7 @@ - * - * Quick return if possible - * -- IF( N.LE.0 ) THEN -+ IF( (N.LE.0).OR.(M.LE.0) ) THEN - RETURN - END IF - * --- -2.33.1 - diff --git a/openblas-0.3.21-sbgemm-test.patch b/openblas-0.3.21-sbgemm-test.patch new file mode 100644 index 0000000..3a21470 --- /dev/null +++ b/openblas-0.3.21-sbgemm-test.patch @@ -0,0 +1,55 @@ +Fixing FTBFS on power: +https://bugzilla.redhat.com/show_bug.cgi?id=2120974 + +Upstream issue: https://github.com/xianyi/OpenBLAS/issues/3738 +Upstream fix: https://github.com/xianyi/OpenBLAS/pull/3718 + +commit d9dc015cfc78fc32f555995a89d6957ef0184ea2 +Author: Martin Kroeker +Date: Mon Aug 8 14:52:10 2022 +0200 + + Use blasint for INTERFACE64 compatibility + +diff --git a/test/compare_sgemm_sbgemm.c b/test/compare_sgemm_sbgemm.c +index a2c358cf..d4b59145 100644 +--- a/test/compare_sgemm_sbgemm.c ++++ b/test/compare_sgemm_sbgemm.c +@@ -76,9 +76,9 @@ float16to32 (bfloat16_bits f16) + int + main (int argc, char *argv[]) + { +- int m, n, k; ++ blasint m, n, k; + int i, j, l; +- int x; ++ blasint x; + int ret = 0; + int loop = 100; + char transA = 'N', transB = 'N'; + +commit 3d338b57de1837f1e2264a1262a9ee9203f31c6c +Author: Martin Kroeker +Date: Mon Aug 8 17:09:45 2022 +0200 + + remove spurious loops + +diff --git a/test/compare_sgemm_sbgemm.c b/test/compare_sgemm_sbgemm.c +index d4b59145..276fecae 100644 +--- a/test/compare_sgemm_sbgemm.c ++++ b/test/compare_sgemm_sbgemm.c +@@ -112,7 +112,6 @@ main (int argc, char *argv[]) + &m, BB, &k, &beta, CC, &m); + for (i = 0; i < n; i++) + for (j = 0; j < m; j++) +- for (l = 0; l < k; l++) + if (fabs (CC[i * m + j] - C[i * m + j]) > 1.0) + ret++; + if (transA == 'N' && transB == 'N') +@@ -126,7 +125,6 @@ main (int argc, char *argv[]) + } + for (i = 0; i < n; i++) + for (j = 0; j < m; j++) +- for (l = 0; l < k; l++) + if (CC[i * m + j] != DD[i * m + j]) + ret++; + } diff --git a/openblas.spec b/openblas.spec index 200fb84..6701c90 100644 --- a/openblas.spec +++ b/openblas.spec @@ -14,8 +14,8 @@ # "obsoleted" features are still kept in the spec. Name: openblas -Version: 0.3.15 -Release: 3%{?dist} +Version: 0.3.21 +Release: 1%{?dist} Summary: An optimized BLAS library based on GotoBLAS2 License: BSD URL: https://github.com/xianyi/OpenBLAS/ @@ -28,8 +28,8 @@ Patch1: openblas-0.2.5-libname.patch Patch2: openblas-0.2.15-constructor.patch # Supply the proper flags to the test makefile Patch3: openblas-0.3.11-tests.patch -# Fix out of bounds read in ?llarv (Reference-LAPACK PR 625) -Patch4: openblas-0.3.15-out-of-bounds-read.patch +# Fix SBGEMM test to work with INTERFACE64 +Patch4: openblas-0.3.21-sbgemm-test.patch BuildRequires: make BuildRequires: gcc @@ -243,7 +243,7 @@ cd OpenBLAS-%{version} %patch2 -p1 -b .constructor %endif %patch3 -p1 -b .tests -%patch4 -p1 -b .out-of-bound-read +%patch4 -p1 -b .sbgemm # Fix source permissions find -name \*.f -exec chmod 644 {} \; @@ -649,6 +649,11 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig %endif %changelog +* Wed Aug 24 2022 Honza Horak - 0.3.21-1 +- Update to 0.3.21 + Resolves: #2112099 +- Fix SBGEMM test to work with INTERFACE64 (rhbz#2120974) + * Tue Jan 11 2022 Honza Horak - 0.3.15-3 - Fix out of bounds read in ?llarv (Reference-LAPACK PR 625) (CVE-2021-4048) diff --git a/sources b/sources index 8b8bf9b..ec116ac 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (openblas-0.3.15.tar.gz) = c07964ead5ffe9cf088364697bfe5cb409170663e420bdcd08a6366a028625d2a3c23ee4ddbaf0e625860a9fd08cbbb39f97eb985c366c052696d6f8598a844f +SHA512 (openblas-0.3.21.tar.gz) = 4625c8e6ccfa9120281fd714d3f6b7c3ba2265470c1be76121d6b25dc3dacb899d26e5d9a417ddc616d23909f1411495aa995ef8d8d6df8511cd5cefbabcb1c5