Compare commits

...

No commits in common. "c8" and "c9-beta" have entirely different histories.
c8 ... c9-beta

12 changed files with 1031 additions and 7406 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/v0.3.15.tar.gz
SOURCES/OpenBLAS-0.3.26.tar.gz

View File

@ -1 +1 @@
d7d1f67c1ef0c14c93761bdf44f0da8d0dd4bc0f SOURCES/v0.3.15.tar.gz
af6dce0e486e684be842053fcbd98eaf97e39749 SOURCES/OpenBLAS-0.3.26.tar.gz

View File

@ -0,0 +1,19 @@
diff -up OpenBLAS-0.2.15/driver/others/memory.c.priority OpenBLAS-0.2.15/driver/others/memory.c
--- OpenBLAS-0.2.15/driver/others/memory.c.priority 2015-10-27 21:44:50.000000000 +0100
+++ OpenBLAS-0.2.15/driver/others/memory.c 2016-01-13 21:12:01.862225898 +0100
@@ -146,8 +146,15 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF
#define CONSTRUCTOR __attribute__ ((constructor))
#define DESTRUCTOR __attribute__ ((destructor))
#else
+#if __GNUC__ && INIT_PRIORITY && ((GCC_VERSION >= 40300) || (CLANG_VERSION >= 20900))
#define CONSTRUCTOR __attribute__ ((constructor(101)))
#define DESTRUCTOR __attribute__ ((destructor(101)))
+#elif __GNUC__ && INIT_PRIORITY
+#define CONSTRUCTOR __attribute__ ((constructor))
+#define DESTRUCTOR __attribute__ ((destructor))
+#else
+#define CONSTRUCTOR
+#define DESTRUCTOR
#endif
#ifdef DYNAMIC_ARCH

View File

@ -1,27 +1,20 @@
diff --git a/Makefile b/Makefile
index e113026..ae8f7de 100644
--- a/Makefile
+++ b/Makefile
@@ -12,9 +12,6 @@ BLASDIRS += reference
diff -up OpenBLAS-0.2.15/Makefile.system_lapack OpenBLAS-0.2.15/Makefile
--- OpenBLAS-0.2.15/Makefile.system_lapack 2015-10-27 13:44:50.000000000 -0700
+++ OpenBLAS-0.2.15/Makefile 2015-10-28 09:14:56.696685503 -0700
@@ -16,11 +16,7 @@ BLASDIRS += reference
endif
SUBDIRS = $(BLASDIRS)
-ifneq ($(NO_LAPACK), 1)
-SUBDIRS += lapack
-endif
RELA =
ifeq ($(BUILD_RELAPACK), 1)
@@ -32,8 +29,6 @@ export NOFORTRAN
export NO_LAPACK
endif
-LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS))
-
SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench cpp_thread_test
-LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS))
+SUBDIRS += lapack
.PHONY : all libs netlib $(RELA) test ctest shared install
@@ -235,76 +230,8 @@ hpl_p :
SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench
@@ -211,57 +207,8 @@ hpl_p :
fi; \
done
@ -30,7 +23,7 @@ index e113026..ae8f7de 100644
-
-else
-netlib : lapack_prebuild
-ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
-ifndef NOFORTRAN
- @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib
- @$(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib
-endif
@ -39,49 +32,34 @@ index e113026..ae8f7de 100644
-endif
-endif
-
-ifeq ($(NO_LAPACK), 1)
-re_lapack :
-
-else
-re_lapack :
- @$(MAKE) -C relapack
-endif
-
-prof_lapack : lapack_prebuild
- @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapack_prof
-
-lapack_prebuild :
-ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
- -@echo "FC = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "FFLAGS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "FFLAGS_DRV = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
-ifndef NOFORTRAN
- -@echo "FORTRAN = $(FC)" > $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "OPTS = $(LAPACK_FFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "POPTS = $(LAPACK_FPFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "FFLAGS_NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "PNOOPT = $(LAPACK_FPFLAGS) -O0" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LDFLAGS = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LOADOPTS = $(FFLAGS) $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "CC = $(CC)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "override CFLAGS = $(LAPACK_CFLAGS)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "AR = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "ARFLAGS = $(ARFLAGS) -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "ARCH = $(AR)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "ARCHFLAGS = -ru" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "RANLIB = $(RANLIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LAPACKLIB = ../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "TMGLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LAPACKLIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "TMGLIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "BLASLIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LAPACKELIB = ../../../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LAPACKELIB = ../$(LIBNAME)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LAPACKLIB_P = ../$(LIBNAME_P)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "SUFFIX = $(SUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "PSUFFIX = $(PSUFFIX)" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "CEXTRALIB = $(EXTRALIB)" >> $(NETLIB_LAPACK_DIR)/make.inc
-ifeq ($(F_COMPILER), GFORTRAN)
-ifeq ($(FC), gfortran)
- -@echo "TIMER = INT_ETIME" >> $(NETLIB_LAPACK_DIR)/make.inc
-ifdef SMP
-ifeq ($(OSNAME), WINNT)
- -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
-else ifeq ($(OSNAME), Haiku)
- -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
-else
- -@echo "LOADER = $(FC) -pthread" >> $(NETLIB_LAPACK_DIR)/make.inc
-endif
-else
- -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
-endif
@ -89,22 +67,17 @@ index e113026..ae8f7de 100644
- -@echo "TIMER = NONE" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc
-endif
-ifeq ($(BUILD_LAPACK_DEPRECATED), 1)
- -@echo "BUILD_DEPRECATED = 1" >> $(NETLIB_LAPACK_DIR)/make.inc
-endif
- -@echo "LAPACKE_WITH_TMG = 1" >> $(NETLIB_LAPACK_DIR)/make.inc
- -@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc
-endif
+ @$(MAKE) -C $(NETLIB_LAPACK_DIR)
large.tgz :
ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
diff --git a/Makefile.system b/Makefile.system
index 8d78b42..47d8eec 100644
--- a/Makefile.system
+++ b/Makefile.system
@@ -31,7 +31,7 @@ else ifeq ($(ARCH), zarch)
override ARCH=zarch
ifndef NOFORTRAN
diff -up OpenBLAS-0.2.15/Makefile.system.system_lapack OpenBLAS-0.2.15/Makefile.system
--- OpenBLAS-0.2.15/Makefile.system.system_lapack 2015-10-27 13:44:50.000000000 -0700
+++ OpenBLAS-0.2.15/Makefile.system 2015-10-28 09:14:39.994350500 -0700
@@ -9,7 +9,7 @@ ifndef TOPDIR
TOPDIR = .
endif
-NETLIB_LAPACK_DIR = $(TOPDIR)/lapack-netlib

View File

@ -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

View File

@ -1,22 +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

File diff suppressed because it is too large Load Diff

View File

@ -1,47 +0,0 @@
diff --git a/lapack-netlib/INSTALL/Makefile b/lapack-netlib/INSTALL/Makefile
index 1007c1bc..348b8d60 100644
--- a/lapack-netlib/INSTALL/Makefile
+++ b/lapack-netlib/INSTALL/Makefile
@@ -46,5 +46,5 @@ cleanexe:
cleantest:
rm -f core
-slamch.o: slamch.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
-dlamch.o: dlamch.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
+slamch.o: slamch.f ; $(FC) $(FFLAGS) -c -o $@ $<
+dlamch.o: dlamch.f ; $(FC) $(FFLAGS) -c -o $@ $<
diff --git a/lapack-netlib/SRC/Makefile b/lapack-netlib/SRC/Makefile
index 83baac87..bc42e82d 100644
--- a/lapack-netlib/SRC/Makefile
+++ b/lapack-netlib/SRC/Makefile
@@ -643,9 +643,9 @@ cleanobj:
cleanlib:
rm -f $(LAPACKLIB)
-slaruv.o: slaruv.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
-dlaruv.o: dlaruv.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
-sla_wwaddw.o: sla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
-dla_wwaddw.o: dla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
-cla_wwaddw.o: cla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
-zla_wwaddw.o: zla_wwaddw.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
+slaruv.o: slaruv.f ; $(FC) $(FFLAGS) -c -o $@ $<
+dlaruv.o: dlaruv.f ; $(FC) $(FFLAGS) -c -o $@ $<
+sla_wwaddw.o: sla_wwaddw.f ; $(FC) $(FFLAGS) -c -o $@ $<
+dla_wwaddw.o: dla_wwaddw.f ; $(FC) $(FFLAGS) -c -o $@ $<
+cla_wwaddw.o: cla_wwaddw.f ; $(FC) $(FFLAGS) -c -o $@ $<
+zla_wwaddw.o: zla_wwaddw.f ; $(FC) $(FFLAGS) -c -o $@ $<
diff --git a/lapack-netlib/TESTING/MATGEN/Makefile b/lapack-netlib/TESTING/MATGEN/Makefile
index e21ebd6c..8582e944 100644
--- a/lapack-netlib/TESTING/MATGEN/Makefile
+++ b/lapack-netlib/TESTING/MATGEN/Makefile
@@ -110,8 +110,8 @@ cleanlib:
rm -f $(TMGLIB)
ifeq ($(filter $(BUILD_SINGLE) $(BUILD_COMPLEX),1),)
-slaran.o: slaran.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
+slaran.o: slaran.f ; $(FC) $(FFLAGS) -c -o $@ $<
endif
ifeq ($(filter $(BUILD_DOUBLE) $(BUILD_COMPLEX16),1),)
-dlaran.o: dlaran.f ; $(FC) $(FFLAGS_NOOPT) -c -o $@ $<
+dlaran.o: dlaran.f ; $(FC) $(FFLAGS) -c -o $@ $<
endif

View File

@ -1,39 +0,0 @@
diff --git a/kernel/power/drot.c b/kernel/power/drot.c
index 3229878e..a25ccceb 100644
--- a/kernel/power/drot.c
+++ b/kernel/power/drot.c
@@ -37,8 +37,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "common.h"
-#pragma GCC optimize "O1"
-
#if defined(__VEC__) || defined(__ALTIVEC__)
#if defined(POWER8) || defined(POWER9)
#include "drot_microk_power8.c"
diff --git a/kernel/power/srot.c b/kernel/power/srot.c
index 5a0d4b12..d73fafc9 100644
--- a/kernel/power/srot.c
+++ b/kernel/power/srot.c
@@ -37,8 +37,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "common.h"
-#pragma GCC optimize "O1"
-
#if defined(__VEC__) || defined(__ALTIVEC__)
#if defined(POWER8) || defined(POWER9)
#include "srot_microk_power8.c"
diff --git a/kernel/power/zscal.c b/kernel/power/zscal.c
index 59ddc149..a5e35001 100644
--- a/kernel/power/zscal.c
+++ b/kernel/power/zscal.c
@@ -36,8 +36,6 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#include "common.h"
-#pragma GCC optimize "O1"
-
#if defined(__VEC__) || defined(__ALTIVEC__)
#if defined(POWER8) || defined(POWER9)
#if defined(DOUBLE)

View File

@ -0,0 +1,752 @@
This is a compilation of more upstream commits related to:
https://github.com/OpenMathLib/OpenBLAS/issues/4475
From 63004fa5f76ef1058975271314bc4591e7878726 Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak@redhat.com>
Date: Fri, 9 Feb 2024 09:49:41 +0100
Subject: [PATCH 1/6] Fix incompatible pointer type in BFLOAT16 mode
Upstream commit:
commit 68d354814f9f846338e1988c4f609c8add419012
Author: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Sun Feb 4 01:14:22 2024 +0100
Fix incompatible pointer type in BFLOAT16 mode
---
interface/gemmt.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/interface/gemmt.c b/interface/gemmt.c
index 046432670..2fb9954ad 100644
--- a/interface/gemmt.c
+++ b/interface/gemmt.c
@@ -478,7 +478,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
#endif
// for alignment
buffer_size = (buffer_size + 3) & ~3;
- STACK_ALLOC(buffer_size, FLOAT, buffer);
+ STACK_ALLOC(buffer_size, IFLOAT, buffer);
#ifdef SMP
@@ -567,7 +567,7 @@ void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
#endif
// for alignment
buffer_size = (buffer_size + 3) & ~3;
- STACK_ALLOC(buffer_size, FLOAT, buffer);
+ STACK_ALLOC(buffer_size, IFLOAT, buffer);
#ifdef SMP
--
2.41.0
From edfd4f52f3f22344863c233411ae792fb12aa81b Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak@redhat.com>
Date: Fri, 9 Feb 2024 09:53:40 +0100
Subject: [PATCH 2/6] Separate the interface for SBGEMMT from GEMMT due to
differences in GEMV arguments
Upstream commit:
commit d4db6a9f16a5c82bbe1860f591cc731c4d83d7c8
Author: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Tue Feb 6 22:23:47 2024 +0100
Separate the interface for SBGEMMT from GEMMT due to differences in GEMV arguments
---
interface/CMakeLists.txt | 1 +
interface/Makefile | 4 +-
interface/sbgemmt.c | 447 +++++++++++++++++++++++++++++++++++++++
3 files changed, 450 insertions(+), 2 deletions(-)
create mode 100644 interface/sbgemmt.c
diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt
index 4e082928b..3110f2e90 100644
--- a/interface/CMakeLists.txt
+++ b/interface/CMakeLists.txt
@@ -119,6 +119,7 @@ endif ()
if (BUILD_BFLOAT16)
GenerateNamedObjects("bf16dot.c" "" "sbdot" ${CBLAS_FLAG} "" "" true "BFLOAT16")
GenerateNamedObjects("gemm.c" "" "sbgemm" ${CBLAS_FLAG} "" "" true "BFLOAT16")
+ GenerateNamedObjects("gemmt.c" "" "sbgemmt" ${CBLAS_FLAG} "" "" true "BFLOAT16")
GenerateNamedObjects("sbgemv.c" "" "sbgemv" ${CBLAS_FLAG} "" "" true "BFLOAT16")
GenerateNamedObjects("tobf16.c" "SINGLE_PREC" "sbstobf16" ${CBLAS_FLAG} "" "" true "BFLOAT16")
GenerateNamedObjects("tobf16.c" "DOUBLE_PREC" "sbdtobf16" ${CBLAS_FLAG} "" "" true "BFLOAT16")
diff --git a/interface/Makefile b/interface/Makefile
index 78335357b..d106ca568 100644
--- a/interface/Makefile
+++ b/interface/Makefile
@@ -1301,7 +1301,7 @@ xhpr2.$(SUFFIX) xhpr2.$(PSUFFIX) : zhpr2.c
ifeq ($(BUILD_BFLOAT16),1)
sbgemm.$(SUFFIX) sbgemm.$(PSUFFIX) : gemm.c ../param.h
$(CC) -c $(CFLAGS) $< -o $(@F)
-sbgemmt.$(SUFFIX) sbgemmt.$(PSUFFIX) : gemmt.c ../param.h
+sbgemmt.$(SUFFIX) sbgemmt.$(PSUFFIX) : sbgemmt.c ../param.h
$(CC) -c $(CFLAGS) $< -o $(@F)
endif
@@ -1932,7 +1932,7 @@ cblas_sgemmt.$(SUFFIX) cblas_sgemmt.$(PSUFFIX) : gemmt.c ../param.h
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
ifeq ($(BUILD_BFLOAT16),1)
-cblas_sbgemmt.$(SUFFIX) cblas_sbgemmt.$(PSUFFIX) : gemmt.c ../param.h
+cblas_sbgemmt.$(SUFFIX) cblas_sbgemmt.$(PSUFFIX) : sbgemmt.c ../param.h
$(CC) -DCBLAS -c $(CFLAGS) $< -o $(@F)
endif
diff --git a/interface/sbgemmt.c b/interface/sbgemmt.c
new file mode 100644
index 000000000..759af4bfb
--- /dev/null
+++ b/interface/sbgemmt.c
@@ -0,0 +1,447 @@
+/*********************************************************************/
+/* Copyright 2024, The OpenBLAS Project. */
+/* All rights reserved. */
+/* */
+/* Redistribution and use in source and binary forms, with or */
+/* without modification, are permitted provided that the following */
+/* conditions are met: */
+/* */
+/* 1. Redistributions of source code must retain the above */
+/* copyright notice, this list of conditions and the following */
+/* disclaimer. */
+/* */
+/* 2. Redistributions in binary form must reproduce the above */
+/* copyright notice, this list of conditions and the following */
+/* disclaimer in the documentation and/or other materials */
+/* provided with the distribution. */
+/* */
+/* THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY OF TEXAS AT */
+/* AUSTIN ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, */
+/* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
+/* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */
+/* DISCLAIMED. IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT */
+/* AUSTIN OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
+/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES */
+/* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE */
+/* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR */
+/* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
+/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT */
+/* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT */
+/* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
+/* POSSIBILITY OF SUCH DAMAGE. */
+/* */
+/*********************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "common.h"
+
+#define SMP_THRESHOLD_MIN 65536.0
+#define ERROR_NAME "SBGEMMT "
+
+#ifndef GEMM_MULTITHREAD_THRESHOLD
+#define GEMM_MULTITHREAD_THRESHOLD 4
+#endif
+
+#ifndef CBLAS
+
+void NAME(char *UPLO, char *TRANSA, char *TRANSB,
+ blasint * M, blasint * K,
+ FLOAT * Alpha,
+ IFLOAT * a, blasint * ldA,
+ IFLOAT * b, blasint * ldB, FLOAT * Beta, FLOAT * c, blasint * ldC)
+{
+
+ blasint m, k;
+ blasint lda, ldb, ldc;
+ int transa, transb, uplo;
+ blasint info;
+
+ char transA, transB, Uplo;
+ blasint nrowa, nrowb;
+ IFLOAT *buffer;
+ IFLOAT *aa, *bb;
+ FLOAT *cc;
+ FLOAT alpha, beta;
+
+ PRINT_DEBUG_NAME;
+
+ m = *M;
+ k = *K;
+
+ alpha = *Alpha;
+ beta = *Beta;
+
+ lda = *ldA;
+ ldb = *ldB;
+ ldc = *ldC;
+
+ transA = *TRANSA;
+ transB = *TRANSB;
+ Uplo = *UPLO;
+ TOUPPER(transA);
+ TOUPPER(transB);
+ TOUPPER(Uplo);
+
+ transa = -1;
+ transb = -1;
+ uplo = -1;
+
+ if (transA == 'N')
+ transa = 0;
+ if (transA == 'T')
+ transa = 1;
+
+ if (transA == 'R')
+ transa = 0;
+ if (transA == 'C')
+ transa = 1;
+
+ if (transB == 'N')
+ transb = 0;
+ if (transB == 'T')
+ transb = 1;
+
+ if (transB == 'R')
+ transb = 0;
+ if (transB == 'C')
+ transb = 1;
+
+ if (Uplo == 'U')
+ uplo = 0;
+ if (Uplo == 'L')
+ uplo = 1;
+ nrowa = m;
+ if (transa & 1) nrowa = k;
+ nrowb = k;
+ if (transb & 1) nrowb = m;
+
+ info = 0;
+
+ if (ldc < MAX(1, m))
+ info = 13;
+ if (ldb < MAX(1, nrowb))
+ info = 10;
+ if (lda < MAX(1, nrowa))
+ info = 8;
+ if (k < 0)
+ info = 5;
+ if (m < 0)
+ info = 4;
+ if (transb < 0)
+ info = 3;
+ if (transa < 0)
+ info = 2;
+ if (uplo < 0)
+ info = 1;
+
+ if (info != 0) {
+ BLASFUNC(xerbla) (ERROR_NAME, &info, sizeof(ERROR_NAME));
+ return;
+ }
+#else
+
+void CNAME(enum CBLAS_ORDER order, enum CBLAS_UPLO Uplo,
+ enum CBLAS_TRANSPOSE TransA, enum CBLAS_TRANSPOSE TransB, blasint m,
+ blasint k,
+ FLOAT alpha,
+ IFLOAT * A, blasint LDA,
+ IFLOAT * B, blasint LDB, FLOAT beta, FLOAT * c, blasint ldc)
+{
+ IFLOAT *aa, *bb;
+ FLOAT *cc;
+
+ int transa, transb, uplo;
+ blasint info;
+ blasint lda, ldb;
+ IFLOAT *a, *b;
+ XFLOAT *buffer;
+
+ PRINT_DEBUG_CNAME;
+
+ uplo = -1;
+ transa = -1;
+ transb = -1;
+ info = 0;
+
+ if (order == CblasColMajor) {
+ if (Uplo == CblasUpper) uplo = 0;
+ if (Uplo == CblasLower) uplo = 1;
+
+ if (TransA == CblasNoTrans)
+ transa = 0;
+ if (TransA == CblasTrans)
+ transa = 1;
+
+ if (TransA == CblasConjNoTrans)
+ transa = 0;
+ if (TransA == CblasConjTrans)
+ transa = 1;
+
+ if (TransB == CblasNoTrans)
+ transb = 0;
+ if (TransB == CblasTrans)
+ transb = 1;
+
+ if (TransB == CblasConjNoTrans)
+ transb = 0;
+ if (TransB == CblasConjTrans)
+ transb = 1;
+
+ a = (void *)A;
+ b = (void *)B;
+ lda = LDA;
+ ldb = LDB;
+
+ info = -1;
+
+ blasint nrowa;
+ blasint nrowb;
+ nrowa = m;
+ if (transa & 1) nrowa = k;
+ nrowb = k;
+ if (transb & 1) nrowb = m;
+
+ if (ldc < MAX(1, m))
+ info = 13;
+ if (ldb < MAX(1, nrowb))
+ info = 10;
+ if (lda < MAX(1, nrowa))
+ info = 8;
+ if (k < 0)
+ info = 5;
+ if (m < 0)
+ info = 4;
+ if (transb < 0)
+ info = 3;
+ if (transa < 0)
+ info = 2;
+ if (uplo < 0)
+ info = 1;
+ }
+
+ if (order == CblasRowMajor) {
+
+ a = (void *)B;
+ b = (void *)A;
+
+ lda = LDB;
+ ldb = LDA;
+
+ if (Uplo == CblasUpper) uplo = 0;
+ if (Uplo == CblasLower) uplo = 1;
+
+ if (TransB == CblasNoTrans)
+ transa = 0;
+ if (TransB == CblasTrans)
+ transa = 1;
+
+ if (TransB == CblasConjNoTrans)
+ transa = 0;
+ if (TransB == CblasConjTrans)
+ transa = 1;
+
+ if (TransA == CblasNoTrans)
+ transb = 0;
+ if (TransA == CblasTrans)
+ transb = 1;
+
+ if (TransA == CblasConjNoTrans)
+ transb = 0;
+ if (TransA == CblasConjTrans)
+ transb = 1;
+
+ info = -1;
+
+ blasint ncola;
+ blasint ncolb;
+
+ ncola = m;
+ if (transa & 1) ncola = k;
+ ncolb = k;
+
+ if (transb & 1) {
+ ncolb = m;
+ }
+
+ if (ldc < MAX(1,m))
+ info = 13;
+ if (ldb < MAX(1, ncolb))
+ info = 8;
+ if (lda < MAX(1, ncola))
+ info = 10;
+ if (k < 0)
+ info = 5;
+ if (m < 0)
+ info = 4;
+ if (transb < 0)
+ info = 2;
+ if (transa < 0)
+ info = 3;
+ if (uplo < 0)
+ info = 1;
+ }
+
+ if (info >= 0) {
+ BLASFUNC(xerbla) (ERROR_NAME, &info, sizeof(ERROR_NAME));
+ return;
+ }
+
+#endif
+ int buffer_size;
+ blasint i, j;
+
+#ifdef SMP
+ int nthreads;
+#endif
+
+
+#ifdef SMP
+ static int (*gemv_thread[]) (BLASLONG, BLASLONG, FLOAT, IFLOAT *,
+ BLASLONG, IFLOAT *, BLASLONG, FLOAT,
+ FLOAT *, BLASLONG, int) = {
+ sbgemv_thread_n, sbgemv_thread_t,
+ };
+#endif
+ int (*gemv[]) (BLASLONG, BLASLONG, FLOAT, IFLOAT *, BLASLONG,
+ IFLOAT *, BLASLONG, FLOAT, FLOAT *, BLASLONG) = {
+ SBGEMV_N, SBGEMV_T,};
+
+
+ if (m == 0)
+ return;
+
+ IDEBUG_START;
+
+ const blasint incb = ((transb & 1) == 0) ? 1 : ldb;
+
+ if (uplo == 1) {
+ for (i = 0; i < m; i++) {
+ j = m - i;
+
+ aa = a + i;
+ bb = b + i * ldb;
+ if (transa & 1) {
+ aa = a + lda * i;
+ }
+ if (transb & 1)
+ bb = b + i;
+ cc = c + i * ldc + i;
+
+#if 0
+ if (beta != ONE)
+ SCAL_K(l, 0, 0, beta, cc, 1, NULL, 0, NULL, 0);
+
+ if (alpha == ZERO)
+ continue;
+#endif
+
+ IDEBUG_START;
+
+ buffer_size = j + k + 128 / sizeof(FLOAT);
+#ifdef WINDOWS_ABI
+ buffer_size += 160 / sizeof(FLOAT);
+#endif
+ // for alignment
+ buffer_size = (buffer_size + 3) & ~3;
+ STACK_ALLOC(buffer_size, IFLOAT, buffer);
+
+#ifdef SMP
+
+ if (1L * j * k < 2304L * GEMM_MULTITHREAD_THRESHOLD)
+ nthreads = 1;
+ else
+ nthreads = num_cpu_avail(2);
+
+ if (nthreads == 1) {
+#endif
+
+ if (!(transa & 1))
+ (gemv[(int)transa]) (j, k, alpha, aa, lda,
+ bb, incb, beta, cc, 1);
+ else
+ (gemv[(int)transa]) (k, j, alpha, aa, lda,
+ bb, incb, beta, cc, 1);
+
+#ifdef SMP
+ } else {
+ if (!(transa & 1))
+ (gemv_thread[(int)transa]) (j, k, alpha, aa,
+ lda, bb, incb, beta, cc,
+ 1, nthreads);
+ else
+ (gemv_thread[(int)transa]) (k, j, alpha, aa,
+ lda, bb, incb, beta, cc,
+ 1, nthreads);
+
+ }
+#endif
+
+ STACK_FREE(buffer);
+ }
+ } else {
+
+ for (i = 0; i < m; i++) {
+ j = i + 1;
+
+ bb = b + i * ldb;
+ if (transb & 1) {
+ bb = b + i;
+ }
+ cc = c + i * ldc;
+
+#if 0
+ if (beta != ONE)
+ SCAL_K(l, 0, 0, beta, cc, 1, NULL, 0, NULL, 0);
+
+ if (alpha == ZERO)
+ continue;
+#endif
+ IDEBUG_START;
+
+ buffer_size = j + k + 128 / sizeof(FLOAT);
+#ifdef WINDOWS_ABI
+ buffer_size += 160 / sizeof(FLOAT);
+#endif
+ // for alignment
+ buffer_size = (buffer_size + 3) & ~3;
+ STACK_ALLOC(buffer_size, IFLOAT, buffer);
+
+#ifdef SMP
+
+ if (1L * j * k < 2304L * GEMM_MULTITHREAD_THRESHOLD)
+ nthreads = 1;
+ else
+ nthreads = num_cpu_avail(2);
+
+ if (nthreads == 1) {
+#endif
+
+ if (!(transa & 1))
+ (gemv[(int)transa]) (j, k, alpha, a, lda, bb,
+ incb, beta, cc, 1);
+ else
+ (gemv[(int)transa]) (k, j, alpha, a, lda, bb,
+ incb, beta, cc, 1);
+
+#ifdef SMP
+ } else {
+ if (!(transa & 1))
+ (gemv_thread[(int)transa]) (j, k, alpha, a, lda,
+ bb, incb, beta, cc, 1,
+ nthreads);
+ else
+ (gemv_thread[(int)transa]) (k, j, alpha, a, lda,
+ bb, incb, beta, cc, 1,
+ nthreads);
+ }
+#endif
+
+ STACK_FREE(buffer);
+ }
+ }
+
+ IDEBUG_END;
+
+ return;
+}
--
2.41.0
From 9a4c2d61a345866e4540f9d6da87eb881419b411 Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak@redhat.com>
Date: Fri, 9 Feb 2024 09:54:52 +0100
Subject: [PATCH 3/6] fix type conversion warnings
upstream commit:
commit fb99fc2e6e4ec8ecdcfffe1ca1aeb787464d2825
Author: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Wed Feb 7 13:42:08 2024 +0100
fix type conversion warnings
---
test/compare_sgemm_sbgemm.c | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
diff --git a/test/compare_sgemm_sbgemm.c b/test/compare_sgemm_sbgemm.c
index cf808b56d..4afa8bf93 100644
--- a/test/compare_sgemm_sbgemm.c
+++ b/test/compare_sgemm_sbgemm.c
@@ -81,6 +81,16 @@ float16to32 (bfloat16_bits f16)
return f32.v;
}
+float
+float32to16 (float32_bits f32)
+{
+ bfloat16_bits f16;
+ f16.bits.s = f32.bits.s;
+ f16.bits.e = f32.bits.e;
+ f16.bits.m = (uint32_t) f32.bits.m >> 16;
+ return f32.v;
+}
+
int
main (int argc, char *argv[])
{
@@ -108,16 +118,16 @@ main (int argc, char *argv[])
A[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5;
B[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5;
C[j * k + i] = 0;
- AA[j * k + i].v = *(uint32_t *) & A[j * k + i] >> 16;
- BB[j * k + i].v = *(uint32_t *) & B[j * k + i] >> 16;
+ AA[j * k + i].v = float32to16( A[j * k + i] );
+ BB[j * k + i].v = float32to16( B[j * k + i] );
CC[j * k + i] = 0;
DD[j * k + i] = 0;
}
}
SGEMM (&transA, &transB, &m, &n, &k, &alpha, A,
&m, B, &k, &beta, C, &m);
- SBGEMM (&transA, &transB, &m, &n, &k, &alpha, AA,
- &m, BB, &k, &beta, CC, &m);
+ SBGEMM (&transA, &transB, &m, &n, &k, &alpha, (bfloat16*) AA,
+ &m, (bfloat16*)BB, &k, &beta, CC, &m);
for (i = 0; i < n; i++)
for (j = 0; j < m; j++)
if (fabs (CC[i * m + j] - C[i * m + j]) > 1.0)
--
2.41.0
From 5593507ddbd5d35d088cd4db6285de6b9d84a405 Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak@redhat.com>
Date: Fri, 9 Feb 2024 09:56:11 +0100
Subject: [PATCH 4/6] fix prototype for c/zaxpby
Upstream commit:
commit b3fa16345d83b723b8984b78dc6a2bb5d9f3d479
Author: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Thu Feb 8 13:15:34 2024 +0100
fix prototype for c/zaxpby
---
common_interface.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/common_interface.h b/common_interface.h
index 318827920..1f6cb5f6d 100644
--- a/common_interface.h
+++ b/common_interface.h
@@ -764,8 +764,8 @@ xdouble BLASFUNC(qlamc3)(xdouble *, xdouble *);
void BLASFUNC(saxpby) (blasint *, float *, float *, blasint *, float *, float *, blasint *);
void BLASFUNC(daxpby) (blasint *, double *, double *, blasint *, double *, double *, blasint *);
-void BLASFUNC(caxpby) (blasint *, float *, float *, blasint *, float *, float *, blasint *);
-void BLASFUNC(zaxpby) (blasint *, double *, double *, blasint *, double *, double *, blasint *);
+void BLASFUNC(caxpby) (blasint *, void *, float *, blasint *, void *, float *, blasint *);
+void BLASFUNC(zaxpby) (blasint *, void *, double *, blasint *, void *, double *, blasint *);
void BLASFUNC(somatcopy) (char *, char *, blasint *, blasint *, float *, float *, blasint *, float *, blasint *);
void BLASFUNC(domatcopy) (char *, char *, blasint *, blasint *, double *, double *, blasint *, double *, blasint *);
--
2.41.0
From 42b30ed2c54034b2b1dbb15bb9e3e705e704b6a9 Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak@redhat.com>
Date: Fri, 9 Feb 2024 09:56:46 +0100
Subject: [PATCH 5/6] fix incompatible pointer types
Upstream commit:
commit 500ac4de5e20596d5cd797d745db97dd0a62ff86
Author: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Thu Feb 8 13:18:34 2024 +0100
fix incompatible pointer types
---
interface/zaxpby.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/interface/zaxpby.c b/interface/zaxpby.c
index 3a4db7403..e5065270d 100644
--- a/interface/zaxpby.c
+++ b/interface/zaxpby.c
@@ -39,12 +39,14 @@ USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#ifndef CBLAS
-void NAME(blasint *N, FLOAT *ALPHA, FLOAT *x, blasint *INCX, FLOAT *BETA, FLOAT *y, blasint *INCY)
+void NAME(blasint *N, void *VALPHA, FLOAT *x, blasint *INCX, void *VBETA, FLOAT *y, blasint *INCY)
{
blasint n = *N;
blasint incx = *INCX;
blasint incy = *INCY;
+ FLOAT* ALPHA = (FLOAT*) VALPHA;
+ FLOAT* BETA = (FLOAT*) VBETA;
#else
--
2.41.0
From 1c525b6e704523912a04fbd026300a2ff95341f3 Mon Sep 17 00:00:00 2001
From: Honza Horak <hhorak@redhat.com>
Date: Fri, 9 Feb 2024 15:29:17 +0100
Subject: [PATCH 6/6] fix sbgemm bfloat16 conversion errors introduced in PR
4488
Upstream commit:
commit e9f480111e1d5b6f69c8053f79375b0a4242712f
Author: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Wed Feb 7 19:57:18 2024 +0100
fix sbgemm bfloat16 conversion errors introduced in PR 4488
---
test/compare_sgemm_sbgemm.c | 18 ++++++------------
1 file changed, 6 insertions(+), 12 deletions(-)
diff --git a/test/compare_sgemm_sbgemm.c b/test/compare_sgemm_sbgemm.c
index 4afa8bf93..bc74233ab 100644
--- a/test/compare_sgemm_sbgemm.c
+++ b/test/compare_sgemm_sbgemm.c
@@ -81,16 +81,6 @@ float16to32 (bfloat16_bits f16)
return f32.v;
}
-float
-float32to16 (float32_bits f32)
-{
- bfloat16_bits f16;
- f16.bits.s = f32.bits.s;
- f16.bits.e = f32.bits.e;
- f16.bits.m = (uint32_t) f32.bits.m >> 16;
- return f32.v;
-}
-
int
main (int argc, char *argv[])
{
@@ -110,6 +100,8 @@ main (int argc, char *argv[])
float C[m * n];
bfloat16_bits AA[m * k], BB[k * n];
float DD[m * n], CC[m * n];
+ bfloat16 atmp,btmp;
+ blasint one=1;
for (j = 0; j < m; j++)
{
@@ -118,8 +110,10 @@ main (int argc, char *argv[])
A[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5;
B[j * k + i] = ((FLOAT) rand () / (FLOAT) RAND_MAX) + 0.5;
C[j * k + i] = 0;
- AA[j * k + i].v = float32to16( A[j * k + i] );
- BB[j * k + i].v = float32to16( B[j * k + i] );
+ sbstobf16_(&one, &A[j*k+i], &one, &atmp, &one);
+ sbstobf16_(&one, &B[j*k+i], &one, &btmp, &one);
+ AA[j * k + i].v = atmp;
+ BB[j * k + i].v = btmp;
CC[j * k + i] = 0;
DD[j * k + i] = 0;
}
--
2.41.0

View File

@ -1,107 +0,0 @@
From 2be5ee3cca97a597f2ee2118808a2d5eacea050c Mon Sep 17 00:00:00 2001
From: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Fri, 1 Oct 2021 11:17:21 +0200
Subject: [PATCH 1/4] Fix out of bounds read in ?llarv (Reference-LAPACK PR
625)
---
lapack-netlib/SRC/clarrv.f | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lapack-netlib/SRC/clarrv.f b/lapack-netlib/SRC/clarrv.f
index a45f55ac..26a9febc 100644
--- a/lapack-netlib/SRC/clarrv.f
+++ b/lapack-netlib/SRC/clarrv.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.34.1
From fe497efa0510466fd93578aaf9da1ad8ed4edbe7 Mon Sep 17 00:00:00 2001
From: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Fri, 1 Oct 2021 11:18:20 +0200
Subject: [PATCH 2/4] Fix out of bounds read in ?llarv (Reference-LAPACK PR
625)
---
lapack-netlib/SRC/dlarrv.f | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lapack-netlib/SRC/dlarrv.f b/lapack-netlib/SRC/dlarrv.f
index 4a59a2bb..a1c6e9c9 100644
--- a/lapack-netlib/SRC/dlarrv.f
+++ b/lapack-netlib/SRC/dlarrv.f
@@ -353,7 +353,7 @@
*
* Quick return if possible
*
- IF( N.LE.0 ) THEN
+ IF( (N.LE.0).OR.(M.LE.0) ) THEN
RETURN
END IF
*
--
2.34.1
From ddb0ff5353637bb5f5ad060c9620e334c143e3d7 Mon Sep 17 00:00:00 2001
From: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Fri, 1 Oct 2021 11:19:07 +0200
Subject: [PATCH 3/4] Fix out of bounds read in ?llarv (Reference-LAPACK PR
625)
---
lapack-netlib/SRC/slarrv.f | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/lapack-netlib/SRC/slarrv.f b/lapack-netlib/SRC/slarrv.f
index 04519fde..9448b2fd 100644
--- a/lapack-netlib/SRC/slarrv.f
+++ b/lapack-netlib/SRC/slarrv.f
@@ -353,7 +353,7 @@
*
* Quick return if possible
*
- IF( N.LE.0 ) THEN
+ IF( (N.LE.0).OR.(M.LE.0) ) THEN
RETURN
END IF
*
--
2.34.1
From 337b65133df174796794871b3988cd03426e6d41 Mon Sep 17 00:00:00 2001
From: Martin Kroeker <martin@ruby.chemie.uni-freiburg.de>
Date: Fri, 1 Oct 2021 11:19:53 +0200
Subject: [PATCH 4/4] Fix out of bounds read in ?llarv (Reference-LAPACK PR
625)
---
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.34.1

View File

@ -1,9 +1,6 @@
%bcond_with system_lapack
# Version of bundled lapack
%global lapackver 3.9.1
# Use strip from gcc-toolset-12
%global __strip "scl enable gcc-toolset-12 -- strip"
%global lapackver 3.11.0
# DO NOT "CLEAN UP" OR MODIFY THIS SPEC FILE WITHOUT ASKING THE
# MAINTAINER FIRST!
@ -17,35 +14,35 @@
# "obsoleted" features are still kept in the spec.
Name: openblas
Version: 0.3.15
Release: 6%{?dist}
Version: 0.3.26
Release: 2%{?dist}
Summary: An optimized BLAS library based on GotoBLAS2
Group: Development/Libraries
License: BSD
URL: https://github.com/xianyi/OpenBLAS/
Source0: https://github.com/xianyi/OpenBLAS/archive/v%{version}.tar.gz
License: BSD-3-Clause
URL: https://github.com/OpenMathLib/OpenBLAS
Source0: %url/archive/v%{version}/OpenBLAS-%{version}.tar.gz
# Use system lapack
Patch0: openblas-0.3.15-system-lapack.patch
Patch0: openblas-0.2.15-system_lapack.patch
# Drop extra p from threaded library name
Patch1: openblas-0.3.15-libname.patch
Patch1: openblas-0.2.5-libname.patch
# Don't use constructor priorities on too old architectures
Patch2: openblas-0.2.15-constructor.patch
# Supply the proper flags to the test makefile
Patch2: openblas-0.3.15-tests.patch
# Enable optimizations for all LAPACK sources
Patch3: openblas-0.3.15-noopt.patch
# Pass ASMFLAGS to assembler compiler
Patch4: openblas-0.3.15-asmflags.patch
# Remove optimization pragmas on ppc64le
Patch5: openblas-0.3.15-power-optimize.patch
Patch3: openblas-0.3.11-tests.patch
# Fix incompatible pointer types (causes FTBFS on ppc64le)
Patch4: openblas-0.3.26-incompatibletypes.patch
Patch6: openblas-CVE-2021-4048.patch
BuildRequires: scl-utils
BuildRequires: gcc-toolset-12-gcc
BuildRequires: gcc-toolset-12-gcc-gfortran
BuildRequires: gcc-toolset-12-annobin-plugin-gcc
BuildRequires: make
BuildRequires: gcc
BuildRequires: gcc-c++
BuildRequires: gcc-gfortran
BuildRequires: perl-devel
BuildRequires: multilib-rpm-config
# Rblas library is no longer necessary
%if 0%{?fedora} >= 31 || 0%{?rhel} >= 8
Obsoletes: %{name}-Rblas < %{version}-%{release}
%endif
# Do we have execstack?
%if 0%{?rhel} == 7
%ifarch ppc64le aarch64
@ -83,8 +80,10 @@ Provides: bundled(lapack) = %{lapackver}
# Build 64-bit interface binaries?
%if 0%{?__isa_bits} == 64
%global build64 1
%bcond_without cpp_thread_check
%else
%global build64 0
%bcond_with cpp_thread_check
%endif
%if %{with system_lapack}
@ -106,98 +105,103 @@ Computational Science, ISCAS. http://www.rdcps.ac.cn
%description
%{base_description}
%package Rblas
Summary: A version of OpenBLAS for R to use as libRblas
Group: Development/Libraries
%package serial
Summary: An optimized BLAS library based on GotoBLAS2, serial version
Requires: %{name} = %{version}-%{release}
%description Rblas
%description serial
%{base_description}
This package contains the sequential library compiled with a 32-bit
integer interface.
%package openmp
Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description openmp
%{base_description}
This package contains the library compiled with OpenMP support.
This package contains the library compiled with OpenMP support with
32-bit integer interface.
%package threads
Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description threads
%{base_description}
This package contains the library compiled with threading support.
This package contains the library compiled with threading support and
a 32-bit integer interface.
%if %build64
%package serial64
Summary: An optimized BLAS library based on GotoBLAS2, serial version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description serial64
%{base_description}
This package contains the sequential library compiled with a 64-bit
interface.
integer interface.
%package openmp64
Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description openmp64
%{base_description}
This package contains the library compiled with OpenMP support and
64-bit interface.
64-bit integer interface.
%package threads64
Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description threads64
%{base_description}
This package contains the library compiled with threading support and
64-bit interface.
64-bit integer interface.
%package serial64_
Summary: An optimized BLAS library based on GotoBLAS2, serial version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description serial64_
%{base_description}
This package contains the sequential library compiled with a 64-bit
interface and a symbol name suffix.
integer interface and a symbol name suffix.
%package openmp64_
Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description openmp64_
%{base_description}
This package contains the library compiled with OpenMP support and
64-bit interface and a symbol name suffix.
64-bit integer interface and a symbol name suffix.
%package threads64_
Summary: An optimized BLAS library based on GotoBLAS2, pthreads version
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
%description threads64_
%{base_description}
This package contains the library compiled with threading support and
64-bit interface and a symbol name suffix.
64-bit integer interface and a symbol name suffix.
%endif
%package devel
Summary: Development headers and libraries for OpenBLAS
Group: Development/Libraries
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-serial%{?_isa} = %{version}-%{release}
Requires: %{name}-openmp%{?_isa} = %{version}-%{release}
Requires: %{name}-threads%{?_isa} = %{version}-%{release}
%if %build64
@ -217,7 +221,6 @@ This package contains the development headers and libraries.
%package static
Summary: Static version of OpenBLAS
Group: Development/Libraries
Requires: %{name}-devel%{?_isa} = %{version}-%{release}
%description static
@ -233,14 +236,14 @@ This package contains the static libraries.
tar zxf %{SOURCE0}
cd OpenBLAS-%{version}
%if %{with system_lapack}
%patch0 -p1 -b .system-lapack
%patch0 -p1 -b .system_lapack
%endif
%patch1 -p1 -b .libname
%patch2 -p1 -b .tests
%patch3 -p1 -b .noopt
%patch4 -p1 -b .asmflags
%patch5 -p1 -b .power-optimize
%patch6 -p1 -b .cve-2021-4048
%if 0%{?rhel} == 5
%patch2 -p1 -b .constructor
%endif
%patch3 -p1 -b .tests
%patch4 -p1 -b .incompatibletypes
# Fix source permissions
find -name \*.f -exec chmod 644 {} \;
@ -251,7 +254,6 @@ rm -rf lapack-netlib
%endif
# Make serial, threaded and OpenMP versions; as well as 64-bit versions
# Also make an libRblas.so
cd ..
cp -ar OpenBLAS-%{version} openmp
cp -ar OpenBLAS-%{version} threaded
@ -260,14 +262,8 @@ for d in {serial,threaded,openmp}64{,_}; do
cp -ar OpenBLAS-%{version} $d
done
%endif
cp -ar OpenBLAS-%{version} Rblas
mv OpenBLAS-%{version} serial
# Hackup Rblas Makefiles
sed -i 's|.so.$(MAJOR_VERSION)|.so|g' Rblas/Makefile
sed -i 's|.so.$(MAJOR_VERSION)|.so|g' Rblas/exports/Makefile
sed -i 's|@ln -fs $(LIBSONAME) $(LIBPREFIX).so|#@ln -fs $(LIBSONAME) $(LIBPREFIX).so|g' Rblas/Makefile
%if %{with system_lapack}
# Setup 32-bit interface LAPACK
mkdir netliblapack
@ -344,9 +340,9 @@ rm -rf netliblapack64
%endif
%build
# Enable gcc-toolset-12
source scl_source enable gcc-toolset-12
# openblas fails to build with LTO due to undefined symbols. These could
# well be the result of the assembly code used in this package
%define _lto_cflags %{nil}
%if !%{lapacke}
LAPACKE="NO_LAPACKE=1"
%endif
@ -380,7 +376,7 @@ TARGET="TARGET=POWER7 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
TARGET="TARGET=POWER8 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
%endif
%ifarch aarch64
TARGET="TARGET=ARMV8 DYNAMIC_ARCH=0"
TARGET="TARGET=ARMV8 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
%endif
%ifarch s390x
TARGET="TARGET=ZARCH_GENERIC DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
@ -389,54 +385,46 @@ TARGET="TARGET=ZARCH_GENERIC DYNAMIC_ARCH=1 DYNAMIC_OLDER=1"
%if 0%{?rhel} == 5
# Gfortran too old to recognize -frecursive
COMMON="%{optflags} -fPIC"
FCOMMON="%{optflags} -fPIC -cpp"
FCOMMON="%{optflags} -fPIC"
%else
COMMON="%{optflags} -fPIC"
FCOMMON="%{optflags} -fPIC -frecursive -cpp"
FCOMMON="%{optflags} -fPIC -frecursive"
%endif
# Use Fedora linker flags
export LDFLAGS="%{__global_ldflags}"
# ensure object files built from assembler sources are annotated
export ASMFLAGS="-Wa,--generate-missing-build-notes=yes"
make -C Rblas $TARGET USE_THREAD=0 USEOPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libRblas" LIBSONAME="libRblas.so" $AVX $LAPACKE INTERFACE64=0
# Declare some necessary build flags
COMMON="%{optflags} -fPIC"
FCOMMON="$COMMON -frecursive -cpp"
FCOMMON="$COMMON -frecursive"
make -C serial $TARGET USE_THREAD=0 USE_LOCKING=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblas" $AVX $LAPACKE INTERFACE64=0
make -C threaded $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp" $AVX $LAPACKE INTERFACE64=0
# USE_THREAD determines use of SMP, not of pthreads
COMMON="%{optflags} -fPIC -fopenmp -pthread"
FCOMMON="$COMMON -frecursive -cpp"
make -C openmp $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso" $AVX $LAPACKE INTERFACE64=0
FCOMMON="$COMMON -frecursive"
make -C openmp $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso" $AVX $LAPACKE INTERFACE64=0 %{with cpp_thread_check:CPP_THREAD_SAFETY_TEST=1}
%if %build64
COMMON="%{optflags} -fPIC"
FCOMMON="$COMMON -frecursive -fdefault-integer-8 -cpp"
FCOMMON="$COMMON -frecursive -fdefault-integer-8"
make -C serial64 $TARGET USE_THREAD=0 USE_LOCKING=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblas64" $AVX $LAPACKE INTERFACE64=1
make -C threaded64 $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp64" $AVX $LAPACKE INTERFACE64=1
COMMON="%{optflags} -fPIC -fopenmp -pthread"
FCOMMON="$COMMON -frecursive -fdefault-integer-8 -cpp"
make -C openmp64 $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso64" $AVX $LAPACKE INTERFACE64=1
FCOMMON="$COMMON -frecursive -fdefault-integer-8"
make -C openmp64 $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso64" $AVX $LAPACKE INTERFACE64=1 CPP_THREAD_SAFETY_TEST=1
COMMON="%{optflags} -fPIC"
FCOMMON="$COMMON -frecursive -fdefault-integer-8 -cpp"
FCOMMON="$COMMON -frecursive -fdefault-integer-8"
make -C serial64_ $TARGET USE_THREAD=0 USE_LOCKING=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblas64_" $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_
make -C threaded64_ $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp64_" $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_
COMMON="%{optflags} -fPIC -fopenmp -pthread"
FCOMMON="$COMMON -frecursive -fdefault-integer-8 -cpp"
make -C openmp64_ $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso64_" $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_
FCOMMON="$COMMON -frecursive -fdefault-integer-8"
make -C openmp64_ $TARGET USE_THREAD=1 USE_OPENMP=1 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblaso64_" $AVX $LAPACKE INTERFACE64=1 SYMBOLSUFFIX=64_ CPP_THREAD_SAFETY_TEST=1
%endif
%install
# Enable gcc-toolset-12
source scl_source enable gcc-toolset-12
rm -rf %{buildroot}
# Install serial library and headers
make -C serial USE_THREAD=0 DESTDIR=%{buildroot} OPENBLAS_LIBRARY_DIR=%{_libdir} OPENBLAS_INCLUDE_DIR=%{_includedir}/%name OPENBLAS_BINARY_DIR=%{_bindir} OPENBLAS_CMAKE_DIR=%{_libdir}/cmake install
@ -455,9 +443,6 @@ suffix=""
%ifarch armv7hl
suffix="_armv7"
%endif
%ifarch aarch64
suffix="_armv8"
%endif
slibname=`basename %{buildroot}%{_libdir}/libopenblas${suffix}-*.so .so`
mv %{buildroot}%{_libdir}/${slibname}.a %{buildroot}%{_libdir}/lib%{name}.a
if [[ "$suffix" != "" ]]; then
@ -467,10 +452,6 @@ else
sname=${slibname}
fi
# Install the Rblas library
mkdir -p %{buildroot}%{_libdir}/R/lib/
install -p -m 755 Rblas/libRblas.so %{buildroot}%{_libdir}/R/lib/
# Install the OpenMP library
olibname=`echo ${slibname} | sed "s|lib%{name}|lib%{name}o|g"`
install -D -p -m 644 openmp/${olibname}.a %{buildroot}%{_libdir}/lib%{name}o.a
@ -574,45 +555,33 @@ ln -sf ${pname64_}.so lib%{name}p64_.so.0
for lib in %{buildroot}%{_libdir}/libopenblas*.so; do
execstack -c $lib
done
for lib in %{buildroot}%{_libdir}/R/lib/libRblas*.so; do
execstack -c $lib
done
%endif
# Get rid of generated CMake config
rm -rf %{buildroot}%{_libdir}/cmake
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%ldconfig_scriptlets
%post openmp -p /sbin/ldconfig
%postun openmp -p /sbin/ldconfig
%ldconfig_scriptlets openmp
%post Rblas -p /sbin/ldconfig
%postun Rblas -p /sbin/ldconfig
%post threads -p /sbin/ldconfig
%postun threads -p /sbin/ldconfig
%ldconfig_scriptlets threads
%if %build64
%post openmp64 -p /sbin/ldconfig
%postun openmp64 -p /sbin/ldconfig
%post openmp64_ -p /sbin/ldconfig
%postun openmp64_ -p /sbin/ldconfig
%ldconfig_scriptlets openmp64
%ldconfig_scriptlets openmp64_
%post serial64 -p /sbin/ldconfig
%postun serial64 -p /sbin/ldconfig
%post serial64_ -p /sbin/ldconfig
%postun serial64_ -p /sbin/ldconfig
%ldconfig_scriptlets serial64
%ldconfig_scriptlets serial64_
%post threads64 -p /sbin/ldconfig
%postun threads64 -p /sbin/ldconfig
%post threads64_ -p /sbin/ldconfig
%postun threads64_ -p /sbin/ldconfig
%ldconfig_scriptlets threads64
%ldconfig_scriptlets threads64_
%endif
%files
%doc serial/Changelog.txt serial/GotoBLAS* serial/LICENSE
%license serial/LICENSE
%doc serial/Changelog.txt serial/GotoBLAS*
%files serial
%{_libdir}/lib%{name}-*.so
%{_libdir}/lib%{name}.so.*
@ -666,9 +635,6 @@ rm -rf %{buildroot}%{_libdir}/cmake
%{_libdir}/lib%{name}p64_.so
%endif
%files Rblas
%{_libdir}/R/lib/libRblas.so
%files static
%{_libdir}/lib%{name}.a
%{_libdir}/lib%{name}o.a
@ -683,94 +649,163 @@ rm -rf %{buildroot}%{_libdir}/cmake
%endif
%changelog
* Thu Feb 16 2023 Matej Mužila <mmuzila@redhat.com> - 0.3.15-6
* Thu Aug 22 2024 Pavel Simovec <psimovec@redhat.com> - 0.3.26-2
- Re-include openblas.pc
- Resolves: RHEL-20160
* Thu Jun 27 2024 Pavel Simovec <psimovec@redhat.com> - 0.3.26-1
- Update to 0.3.26
- Resolves: RHEL-20160
* Tue Jan 31 2023 Matej Mužila <mmuzila@redhat.com> - 0.3.21-2
- Include openblas.pc
- Resolves: #2115722
Resolves: #2115737
* Wed Feb 15 2023 Nikola Forró <nforro@redhat.com> - 0.3.15-5
- Disable dynamic CPU detection on aarch64
- Use gcc-toolset-12
- Resolves: #2170398
* Wed Aug 24 2022 Honza Horak <hhorak@redhat.com> - 0.3.21-1
- Update to 0.3.21
Resolves: #2112099
- Fix SBGEMM test to work with INTERFACE64 (rhbz#2120974)
* Wed Jun 15 2022 Matej Mužila <mmuzila@redhat.com> - 0.3.15-4
- Fix out-of-bounds read in *larrv
- Resolves: CVE-2021-4048
* Tue Jan 11 2022 Honza Horak <hhorak@redhat.com> - 0.3.15-3
- Fix out of bounds read in ?llarv (Reference-LAPACK PR 625)
(CVE-2021-4048)
Resolves: #2029855
* Fri Nov 12 2021 Nikola Forró <nforro@redhat.com> - 0.3.15-3
- Fix missing header files in openblas-devel subpackage by enabling
gcc-toolset-11 in %%install as well
related: #1983218
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 0.3.15-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Thu Oct 21 2021 Nikola Forró <nforro@redhat.com> - 0.3.15-2
- Enable dynamic cpu detection on all supported architectures
related: #1983218
* Thu May 06 2021 Nikola Forró <nforro@redhat.com> - 0.3.15-1
- Update to 0.3.15.
related: #1870676
related: #1870033
* Wed Sep 15 2021 Nikola Forró <nforro@redhat.com> - 0.3.15-1
- Rebase to version 0.3.15
- Use gcc-toolset-11 to benefit from POWER 10 optimizations
resolves: #1983218
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 0.3.13-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Wed Oct 28 2020 Nikola Forró <nforro@redhat.com> - 0.3.12-1
- Rebase to version 0.3.12
related: #1847435
* Tue Apr 06 2021 Nikola Forró <nforro@redhat.com> - 0.3.13-1
- Update to 0.3.13.
resolves: #1870676
related: #1870033
* Wed Oct 21 2020 Nikola Forró <nforro@redhat.com> - 0.3.10-2
- Fix macro used in LAPACKE_zgesvdq
related: #1847435
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.12-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Tue Oct 20 2020 Nikola Forró <nforro@redhat.com> - 0.3.10-1
- Rebase to version 0.3.10
resolves: #1847435
* Sun Oct 25 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.12-1
- Update to 0.3.12.
* Fri Nov 22 2019 Nikola Forró <nforro@redhat.com> - 0.3.3-5
- Detect POWER9 as POWER8
related: #1752241
* Sun Oct 18 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.11-1
- Update to 0.3.11.
* Wed Nov 20 2019 Nikola Forró <nforro@redhat.com> - 0.3.3-4
- Add tests and enable gating
related: #1752241
* Fri Sep 18 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.10-6
- Fix incorrect result of cblas_zdotc_sub on ppc64le (BZ #1878449).
* Tue Sep 24 2019 Nikola Forró <nforro@redhat.com> - 0.3.3-3
- Fix izamax on s390x
resolves: #1752241
* Sat Aug 29 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.10-5
- Fix unresolved bfloat16 datatype (BZ #1873667).
* Wed Nov 07 2018 Nikola Forró <nforro@redhat.com> - 0.3.3-2
- Fix i686-x86_64 multilib difference
related: #1627890
* Fri Aug 14 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.10-4
- Obsolete Rblas package (BZ #1849966).
* Fri Oct 19 2018 Nikola Forró <nforro@redhat.com> - 0.3.3-1
- Rebase to version 0.3.3
resolves: #1627890
* Tue Aug 11 2020 Jeff Law <law@redhat.com> - 0.3.10-3
- Disable LTO
* Mon Oct 15 2018 Nikola Forró <nforro@redhat.com> - 0.2.20-16
- Set proper CFLAGS also for Rblas
related: #1624156
* Tue Jul 28 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.10-2
- Include upstream patch 2672 to fix test suite on systems with few CPUs.
* Fri Oct 12 2018 Nikola Forró <nforro@redhat.com> - 0.2.20-15
- Remove optimization pragmas on ppc64le
related: #1624156
* Mon Jun 15 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.10-1
- Update to 0.3.10.
* Wed Sep 26 2018 Nikola Forró <nforro@redhat.com> - 0.2.20-14
- Ensure object files built from assembler sources are annotated
related: #1624156
* Thu May 28 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.9-3
- Enable USE_LOCKING in the sequential versions of the library for
thread safety.
* Mon Sep 17 2018 Nikola Forró <nforro@redhat.com> - 0.2.20-13
- Fix detection of generic ARMv8 CPUs
- Get rid of executable stack in libRblas.so
related: #1624156
* Thu Apr 02 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.9-2
- Patch for BZ #1820131.
* Thu Sep 06 2018 Nikola Forró <nforro@redhat.com> - 0.2.20-12
- Force preprocessing of Fortran sources to make annobin record proper flags
- Enable optimizations for all LAPACK sources
resolves: #1624156
* Mon Mar 02 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.9-1
- Update to 0.3.9.
* Tue Aug 14 2018 Nikola Forró <nforro@redhat.com> - 0.2.20-11
- Fix build on s390x (#1615557)
* Tue Feb 11 2020 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.8-1
- Update to 0.3.8; dynamic runtime cpu detection on all architectures.
- Also updates bundled LAPACK to 3.9.0.
* Wed Jan 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.7-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Wed Dec 11 2019 Dominik Mierzejewski <rpm@greysector.net> - 0.3.7-2
- enable C++ thread safety test where possible
* Mon Aug 12 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.7-1
- Update to 0.3.7.
* Thu Jul 25 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.6-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Tue Jul 02 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.6-2
- Rebuild since older build doesn't show up in updates system.
* Tue Apr 30 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.6-1
- Update to 0.3.6.
* Tue Feb 26 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.5-5
- Even more assembly kernel patches.
* Mon Feb 25 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.5-4
- Another assembly kernel patch.
* Sun Feb 17 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.5-3
- Patch assembly kernels to satisfy gcc 9 demands.
* Fri Feb 01 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Jan 07 2019 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.5-1
- Update to 0.3.5, with dynamic CPU detection on aarch64.
* Fri Nov 09 2018 Nikola Forró <nforro@redhat.com> - 0.3.3-3
- Fix i686-x86_64 multilib difference.
- Get rid of executable stack in libRblas.so.
* Sat Sep 29 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.3-2
- Fix segfault (BZ #1634060).
* Sun Sep 09 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.3-1
- Update to 0.3.3.
* Wed Aug 29 2018 Dan Horák <dan[at]danny.cz> - 0.3.2-5
- Fix precision in generic target on s390x
* Fri Aug 24 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.2-4
- Patch to avoid threading issues.
* Fri Aug 24 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.2-3
- Add missing %%{optflags} to COMMON (see discussion in #1619074).
* Wed Aug 15 2018 Dan Horák <dan[at]danny.cz> - 0.3.2-2
- Explicitly set the target to generic on s390x to avoid surprises (#1615760)
* Thu Aug 02 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.2-1
- Update to 0.3.2.
* Sun Jul 22 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.1-3
- Fix crash with multiple instances (BZ #1605231).
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Sun Jul 01 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.1-1
- Update to 0.3.1.
* Mon Jun 11 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.0-2
- Split sequential libraries from core package to openblas-serial.
* Thu May 24 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.3.0-1
- Update to 0.3.0.
* Thu Mar 22 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.2.20-10
- Disable CPU affinity unintentionally enabled upstream (BZ #1558091).
* Wed Mar 04 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.2.20-9
* Sun Mar 04 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.2.20-9
- Clean up obsolete conditionals for 64 bit builds in spec file.
* Tue Feb 27 2018 Susi Lehtola <jussilehtola@fedoraproject.org> - 0.2.20-8