diff --git a/.gitignore b/.gitignore index e69de29..96dbb9d 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,22 @@ +/v0.2.5.tar.gz +/v0.2.7.tar.gz +/v0.2.8.tar.gz +/v0.2.9.tar.gz +/v0.2.10.tar.gz +/v0.2.11.tar.gz +/v0.2.12.tar.gz +/v0.2.13.tar.gz +/v0.2.14.tar.gz +/v0.2.15.tar.gz +/v0.2.16.tar.gz +/openblas-0.2.17.tar.gz +/v0.2.18.tar.gz +/v0.2.19.tar.gz +/v0.3.0.tar.gz +/v0.3.1.tar.gz +/openblas-0.3.2.tar.gz +/openblas-0.3.6.tar.gz +/openblas-0.3.7.tar.gz +/openblas-0.3.8.tar.gz +/openblas-0.3.9.tar.gz +/openblas-0.3.10.tar.gz diff --git a/2669.patch b/2669.patch new file mode 100644 index 0000000..33363ef --- /dev/null +++ b/2669.patch @@ -0,0 +1,89 @@ +From a2d13ea61183099c05aa31e23ef59e1411d77177 Mon Sep 17 00:00:00 2001 +From: Marius Hillenbrand +Date: Tue, 16 Jun 2020 14:40:50 +0200 +Subject: [PATCH 1/2] Fix gcc version detection for zarch + +Employ common variables for gcc version detection and fix the broken +check for gcc >= 5.2. +Fixes #2668 + +Signed-off-by: Marius Hillenbrand +--- + Makefile.system | 19 ++++++++++++++----- + 1 file changed, 14 insertions(+), 5 deletions(-) + +diff --git a/Makefile.system b/Makefile.system +index 8d78b420f..5738b14ec 100644 +--- a/Makefile.system ++++ b/Makefile.system +@@ -282,9 +282,11 @@ endif + ifeq ($(C_COMPILER), GCC) + GCCVERSIONGTEQ4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 4) + GCCVERSIONGT4 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 4) ++GCCVERSIONEQ5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` = 5) + GCCVERSIONGT5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 5) + GCCVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 7) + GCCVERSIONGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9) ++GCCMINORVERSIONGTEQ2 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 2) + GCCMINORVERSIONGTEQ7 := $(shell expr `$(CC) -dumpversion | cut -f2 -d.` \>= 7) + endif + +@@ -570,20 +572,27 @@ ifeq ($(ARCH), zarch) + DYNAMIC_CORE = ZARCH_GENERIC + + # Z13 is supported since gcc-5.2, gcc-6, and in RHEL 7.3 and newer +-GCC_GE_52 := $(subst 0,,$(shell expr `$(CC) -dumpversion` \>= "5.2")) ++ifeq ($(GCCVERSIONGT5), 1) ++ ZARCH_SUPPORT_Z13 := 1 ++else ifeq ($(GCCVERSIONEQ5), 1) ++ifeq ($(GCCMINORVERSIONGTEQ2), 1) ++ ZARCH_SUPPORT_Z13 := 1 ++endif ++endif + + ifeq ($(wildcard /etc/redhat-release), /etc/redhat-release) +-RHEL_WITH_Z13 := $(subst 0,,$(shell source /etc/os-release ; expr $$VERSION_ID \>= "7.3")) ++ifeq ($(shell source /etc/os-release ; expr $$VERSION_ID \>= "7.3"), 1) ++ ZARCH_SUPPORT_Z13 := 1 ++endif + endif + +-ifeq ($(or $(GCC_GE_52),$(RHEL_WITH_Z13)), 1) ++ifeq ($(ZARCH_SUPPORT_Z13), 1) + DYNAMIC_CORE += Z13 + else + $(info OpenBLAS: Not building Z13 kernels because gcc is older than 5.2 or 6.x) + endif + +-GCC_MAJOR_GE_7 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 7) +-ifeq ($(GCC_MAJOR_GE_7), 1) ++ifeq ($(GCCVERSIONGTEQ7), 1) + DYNAMIC_CORE += Z14 + else + $(info OpenBLAS: Not building Z14 kernels because gcc is older than 7.x) + +From 23892917667d87072eef2f18b6120f5d3c029f90 Mon Sep 17 00:00:00 2001 +From: Marius Hillenbrand +Date: Tue, 16 Jun 2020 14:45:09 +0200 +Subject: [PATCH 2/2] Makefile.system: remove duplicate variable GCCVERSIONGT5 + +... to bring unified gcc version detection with common variables to the +one remaining spot in Makefile.system. + +Signed-off-by: Marius Hillenbrand +--- + Makefile.system | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/Makefile.system b/Makefile.system +index 5738b14ec..63cdbccd8 100644 +--- a/Makefile.system ++++ b/Makefile.system +@@ -606,7 +606,6 @@ ifneq ($(C_COMPILER), GCC) + DYNAMIC_CORE += POWER9 + endif + ifeq ($(C_COMPILER), GCC) +-GCCVERSIONGT5 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \> 5) + ifeq ($(GCCVERSIONGT5), 1) + DYNAMIC_CORE += POWER9 + else diff --git a/2672.patch b/2672.patch new file mode 100644 index 0000000..5d9ffcb --- /dev/null +++ b/2672.patch @@ -0,0 +1,90 @@ +From 478898b37a91836a39d046f8c70e26c6c9fc06c7 Mon Sep 17 00:00:00 2001 +From: Marius Hillenbrand +Date: Wed, 17 Jun 2020 16:08:48 +0200 +Subject: [PATCH 1/2] cpp_thread_test/dgemv: cap concurrency to number of hw + threads on small systems + +... instead of (number of hw threads - 4) to avoid invalid numbers on +smaller systems. Currently, systems with 4 or fewer CPUs (e.g., small CI +VMs) would fail the test. Fixes one of the issues discussed in #2668 + +Signed-off-by: Marius Hillenbrand +--- + cpp_thread_test/dgemv_thread_safety.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cpp_thread_test/dgemv_thread_safety.cpp b/cpp_thread_test/dgemv_thread_safety.cpp +index 5411fec29..277594ff0 100644 +--- a/cpp_thread_test/dgemv_thread_safety.cpp ++++ b/cpp_thread_test/dgemv_thread_safety.cpp +@@ -18,7 +18,7 @@ int main(int argc, char* argv[]){ + uint32_t maxHwThreads = omp_get_max_threads(); + + if (maxHwThreads < 52) +- numConcurrentThreads = maxHwThreads -4; ++ numConcurrentThreads = maxHwThreads; + + if (argc > 4){ + std::cout<<"ERROR: too many arguments for thread safety tester"< +Date: Wed, 17 Jun 2020 16:15:44 +0200 +Subject: [PATCH 2/2] cpp_thread_test/dgemv: fail early if concurrency is zero + +The two test cases dgemv_tester and dgemm_tester accept the degree of +concurrency as command line argument (amongst others). Fail early if +value 0 has been specified, instead of later with less-clear symptoms. + +Signed-off-by: Marius Hillenbrand +--- + cpp_thread_test/cpp_thread_safety_common.h | 8 ++++++++ + cpp_thread_test/dgemm_thread_safety.cpp | 2 ++ + cpp_thread_test/dgemv_thread_safety.cpp | 2 ++ + 3 files changed, 12 insertions(+) + +diff --git a/cpp_thread_test/cpp_thread_safety_common.h b/cpp_thread_test/cpp_thread_safety_common.h +index 60ab5bb2f..8005369a8 100644 +--- a/cpp_thread_test/cpp_thread_safety_common.h ++++ b/cpp_thread_test/cpp_thread_safety_common.h +@@ -5,6 +5,14 @@ inline void pauser(){ + std::getline(std::cin, dummy); + } + ++void FailIfThreadsAreZero(uint32_t numConcurrentThreads) { ++ if(numConcurrentThreads == 0) { ++ std::cout<<"ERROR: Invalid parameter 0 for number of concurrent calls into OpenBLAS!"<>& matBlock, std::mt19937_64& PRNG, std::uniform_real_distribution& rngdist, const blasint randomMatSize, const uint32_t numConcurrentThreads, const uint32_t numMat){ + for(uint32_t i=0; i(randomMatSize*randomMatSize); j++){ +diff --git a/cpp_thread_test/dgemm_thread_safety.cpp b/cpp_thread_test/dgemm_thread_safety.cpp +index 1c5287524..104c64f2a 100644 +--- a/cpp_thread_test/dgemm_thread_safety.cpp ++++ b/cpp_thread_test/dgemm_thread_safety.cpp +@@ -46,6 +46,8 @@ int main(int argc, char* argv[]){ + std::cout<<"Number of concurrent calls into OpenBLAS : "<(randomMatSize*randomMatSize)*numConcurrentThreads*3*8)/static_cast(1024*1024)<<" MiB of RAM\n"<(randomMatSize*randomMatSize)*numConcurrentThreads*8)+(static_cast(randomMatSize)*numConcurrentThreads*8*2))/static_cast(1024*1024)<<" MiB of RAM\n"< +Date: Sat, 15 Aug 2020 13:30:29 +0200 +Subject: [PATCH 01/10] Add trivial gemm test for multithread consistency + +--- + cpp_thread_test/gemm64.cpp | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + create mode 100644 cpp_thread_test/gemm64.cpp + +diff --git a/cpp_thread_test/gemm64.cpp b/cpp_thread_test/gemm64.cpp +new file mode 100644 +index 000000000..2c3442a2e +--- /dev/null ++++ b/cpp_thread_test/gemm64.cpp +@@ -0,0 +1,20 @@ ++#include ++#include ++int main ( int argc, char* argv[] ) { ++ const long n = ((long)1 << 31) - 1; ++ std::cout << n < +Date: Sat, 15 Aug 2020 13:31:28 +0200 +Subject: [PATCH 02/10] Update gemm64.cpp + +--- + cpp_thread_test/gemm64.cpp | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/cpp_thread_test/gemm64.cpp b/cpp_thread_test/gemm64.cpp +index 2c3442a2e..df38416fa 100644 +--- a/cpp_thread_test/gemm64.cpp ++++ b/cpp_thread_test/gemm64.cpp +@@ -1,5 +1,6 @@ + #include +-#include ++#include "common.h" ++#include "cblas.h" + int main ( int argc, char* argv[] ) { + const long n = ((long)1 << 31) - 1; + std::cout << n < +Date: Sat, 15 Aug 2020 13:33:52 +0200 +Subject: [PATCH 03/10] Add simple sgemm preicsion test + +--- + cpp_thread_test/Makefile | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/cpp_thread_test/Makefile b/cpp_thread_test/Makefile +index 81e3470ef..0dc7229d7 100644 +--- a/cpp_thread_test/Makefile ++++ b/cpp_thread_test/Makefile +@@ -10,5 +10,9 @@ dgemm_tester : dgemv_tester + $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 dgemm_thread_safety.cpp ../libopenblas.a -lpthread -o dgemm_tester + ./dgemm_tester + ++gemm64 : gemm64 ++ $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 gemm64.cpp ../libopenblas.a -lpthread -o gemm64 ++ ./gemm64 ++ + clean :: +- rm -f dgemv_tester dgemm_tester ++ rm -f dgemv_tester dgemm_tester gemm64 + +From 37ac23e8a36049d875d01887b292ec11751fccc8 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Sat, 15 Aug 2020 13:38:05 +0200 +Subject: [PATCH 04/10] Add simple MT sgemm precision test and INTERFACE64 + build + +--- + .drone.yml | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/.drone.yml b/.drone.yml +index b1c211d14..fb009d46e 100644 +--- a/.drone.yml ++++ b/.drone.yml +@@ -190,3 +190,29 @@ steps: + - make -C ctest $COMMON_FLAGS + - make -C utest $COMMON_FLAGS + - make -C cpp_thread_test dgemm_tester ++ - make -C cpp_thread_test gemm64 ++--- ++kind: pipeline ++name: epyc_native_test_int64 ++ ++platform: ++ os: linux ++ arch: amd64 ++ ++steps: ++- name: Build and Test ++ image: ubuntu:18.04 ++ environment: ++ CC: gcc ++ COMMON_FLAGS: 'USE_OPENMP=1 INTERFACE64=1' ++ commands: ++ - echo "MAKE_FLAGS:= $COMMON_FLAGS" ++ - apt-get update -y ++ - apt-get install -y make $CC gfortran perl python g++ ++ - $CC --version ++ - make QUIET_MAKE=1 $COMMON_FLAGS ++ - make -C test $COMMON_FLAGS ++ - make -C ctest $COMMON_FLAGS ++ - make -C utest $COMMON_FLAGS ++ - make -C cpp_thread_test dgemm_tester ++ - make -C cpp_thread_test gemm64 + +From d57d503c150bb40e1478b88735818c1b76d64ed2 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Sat, 15 Aug 2020 14:46:26 +0200 +Subject: [PATCH 05/10] Update Makefile + +--- + cpp_thread_test/Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cpp_thread_test/Makefile b/cpp_thread_test/Makefile +index 0dc7229d7..0d78990eb 100644 +--- a/cpp_thread_test/Makefile ++++ b/cpp_thread_test/Makefile +@@ -11,7 +11,7 @@ dgemm_tester : dgemv_tester + ./dgemm_tester + + gemm64 : gemm64 +- $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 gemm64.cpp ../libopenblas.a -lpthread -o gemm64 ++ $(CXX) $(COMMON_OPT) -I.. -Wall -Wextra -Wshadow -fopenmp -std=c++11 gemm64.cpp ../libopenblas.a -lpthread -o gemm64 + ./gemm64 + + clean :: + +From 82f8a0aebabab6e81386b75b6f172abb692dd31c Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Sat, 15 Aug 2020 15:46:18 +0200 +Subject: [PATCH 06/10] Update .drone.yml + +--- + .drone.yml | 26 ++++++++++++++++++++++++++ + 1 file changed, 26 insertions(+) + +diff --git a/.drone.yml b/.drone.yml +index fb009d46e..e8353eb5c 100644 +--- a/.drone.yml ++++ b/.drone.yml +@@ -166,6 +166,32 @@ steps: + - make -C ctest $COMMON_FLAGS + - make -C utest $COMMON_FLAGS + - make -C cpp_thread_test dgemm_tester ++ - make -C cpp_thread_test gemm64 ++--- ++kind: pipeline ++name: arm64_native_test_int64 ++ ++platform: ++ os: linux ++ arch: arm64 ++ ++steps: ++- name: Build and Test ++ image: ubuntu:18.04 ++ environment: ++ CC: gcc ++ COMMON_FLAGS: 'USE_OPENMP=1 INTERFACE64=1' ++ commands: ++ - echo "MAKE_FLAGS:= $COMMON_FLAGS" ++ - apt-get update -y ++ - apt-get install -y make $CC gfortran perl python g++ ++ - $CC --version ++ - make QUIET_MAKE=1 $COMMON_FLAGS ++ - make -C test $COMMON_FLAGS ++ - make -C ctest $COMMON_FLAGS ++ - make -C utest $COMMON_FLAGS ++ - make -C cpp_thread_test dgemm_tester ++ - make -C cpp_thread_test gemm64 + --- + kind: pipeline + name: epyc_native_test + +From 5ec8f716cf181b70352fa15a7beb45fc886312de Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Mon, 17 Aug 2020 15:19:40 +0200 +Subject: [PATCH 07/10] revert + +--- + .drone.yml | 52 ---------------------------------------------------- + 1 file changed, 52 deletions(-) + +diff --git a/.drone.yml b/.drone.yml +index e8353eb5c..b1c211d14 100644 +--- a/.drone.yml ++++ b/.drone.yml +@@ -166,32 +166,6 @@ steps: + - make -C ctest $COMMON_FLAGS + - make -C utest $COMMON_FLAGS + - make -C cpp_thread_test dgemm_tester +- - make -C cpp_thread_test gemm64 +---- +-kind: pipeline +-name: arm64_native_test_int64 +- +-platform: +- os: linux +- arch: arm64 +- +-steps: +-- name: Build and Test +- image: ubuntu:18.04 +- environment: +- CC: gcc +- COMMON_FLAGS: 'USE_OPENMP=1 INTERFACE64=1' +- commands: +- - echo "MAKE_FLAGS:= $COMMON_FLAGS" +- - apt-get update -y +- - apt-get install -y make $CC gfortran perl python g++ +- - $CC --version +- - make QUIET_MAKE=1 $COMMON_FLAGS +- - make -C test $COMMON_FLAGS +- - make -C ctest $COMMON_FLAGS +- - make -C utest $COMMON_FLAGS +- - make -C cpp_thread_test dgemm_tester +- - make -C cpp_thread_test gemm64 + --- + kind: pipeline + name: epyc_native_test +@@ -216,29 +190,3 @@ steps: + - make -C ctest $COMMON_FLAGS + - make -C utest $COMMON_FLAGS + - make -C cpp_thread_test dgemm_tester +- - make -C cpp_thread_test gemm64 +---- +-kind: pipeline +-name: epyc_native_test_int64 +- +-platform: +- os: linux +- arch: amd64 +- +-steps: +-- name: Build and Test +- image: ubuntu:18.04 +- environment: +- CC: gcc +- COMMON_FLAGS: 'USE_OPENMP=1 INTERFACE64=1' +- commands: +- - echo "MAKE_FLAGS:= $COMMON_FLAGS" +- - apt-get update -y +- - apt-get install -y make $CC gfortran perl python g++ +- - $CC --version +- - make QUIET_MAKE=1 $COMMON_FLAGS +- - make -C test $COMMON_FLAGS +- - make -C ctest $COMMON_FLAGS +- - make -C utest $COMMON_FLAGS +- - make -C cpp_thread_test dgemm_tester +- - make -C cpp_thread_test gemm64 + +From a8c6fb9e1ce4d6cb3d4e8a782f9c4c69469aae91 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Mon, 17 Aug 2020 15:20:16 +0200 +Subject: [PATCH 08/10] revert + +--- + cpp_thread_test/Makefile | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/cpp_thread_test/Makefile b/cpp_thread_test/Makefile +index 0d78990eb..81e3470ef 100644 +--- a/cpp_thread_test/Makefile ++++ b/cpp_thread_test/Makefile +@@ -10,9 +10,5 @@ dgemm_tester : dgemv_tester + $(CXX) $(COMMON_OPT) -Wall -Wextra -Wshadow -fopenmp -std=c++11 dgemm_thread_safety.cpp ../libopenblas.a -lpthread -o dgemm_tester + ./dgemm_tester + +-gemm64 : gemm64 +- $(CXX) $(COMMON_OPT) -I.. -Wall -Wextra -Wshadow -fopenmp -std=c++11 gemm64.cpp ../libopenblas.a -lpthread -o gemm64 +- ./gemm64 +- + clean :: +- rm -f dgemv_tester dgemm_tester gemm64 ++ rm -f dgemv_tester dgemm_tester + +From 6bfc66663c4b3bbd2c5f7ac05a150d2c4bd94af4 Mon Sep 17 00:00:00 2001 +From: Martin Kroeker +Date: Mon, 17 Aug 2020 15:20:41 +0200 +Subject: [PATCH 09/10] revert + +--- + cpp_thread_test/gemm64.cpp | 21 --------------------- + 1 file changed, 21 deletions(-) + delete mode 100644 cpp_thread_test/gemm64.cpp + +diff --git a/cpp_thread_test/gemm64.cpp b/cpp_thread_test/gemm64.cpp +deleted file mode 100644 +index df38416fa..000000000 +--- a/cpp_thread_test/gemm64.cpp ++++ /dev/null +@@ -1,21 +0,0 @@ +-#include +-#include "common.h" +-#include "cblas.h" +-int main ( int argc, char* argv[] ) { +- const long n = ((long)1 << 31) - 1; +- std::cout << n < +Date: Mon, 17 Aug 2020 15:32:14 +0200 +Subject: [PATCH 10/10] Add typedef for bfloat16 if needed + +--- + openblas_config_template.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/openblas_config_template.h b/openblas_config_template.h +index 49aea1cab..9955e5c73 100644 +--- a/openblas_config_template.h ++++ b/openblas_config_template.h +@@ -34,6 +34,10 @@ typedef long BLASLONG; + typedef unsigned long BLASULONG; + #endif + ++#ifndef BFLOAT16 ++typedef unsigned short bfloat16; ++#endif ++ + #ifdef OPENBLAS_USE64BITINT + typedef BLASLONG blasint; + #else diff --git a/openblas-0.2.15-constructor.patch b/openblas-0.2.15-constructor.patch new file mode 100644 index 0000000..6b6a092 --- /dev/null +++ b/openblas-0.2.15-constructor.patch @@ -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 diff --git a/openblas-0.2.15-system_lapack.patch b/openblas-0.2.15-system_lapack.patch new file mode 100644 index 0000000..4b843a9 --- /dev/null +++ b/openblas-0.2.15-system_lapack.patch @@ -0,0 +1,87 @@ +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 +- +-LAPACK_NOOPT := $(filter-out -O0 -O1 -O2 -O3 -Ofast,$(LAPACK_FFLAGS)) ++SUBDIRS += lapack + + SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench + +@@ -211,57 +207,8 @@ hpl_p : + fi; \ + done + +-ifeq ($(NO_LAPACK), 1) + netlib : +- +-else +-netlib : lapack_prebuild +-ifndef NOFORTRAN +- @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapacklib +- @$(MAKE) -C $(NETLIB_LAPACK_DIR) tmglib +-endif +-ifndef NO_LAPACKE +- @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapackelib +-endif +-endif +- +-prof_lapack : lapack_prebuild +- @$(MAKE) -C $(NETLIB_LAPACK_DIR) lapack_prof +- +-lapack_prebuild : +-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 "NOOPT = -O0 $(LAPACK_NOOPT)" >> $(NETLIB_LAPACK_DIR)/make.inc +- -@echo "PNOOPT = $(LAPACK_FPFLAGS) -O0" >> $(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 "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 "BLASLIB = ../../../$(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 ($(FC), gfortran) +- -@echo "TIMER = INT_ETIME" >> $(NETLIB_LAPACK_DIR)/make.inc +-ifdef SMP +- -@echo "LOADER = $(FC) -pthread" >> $(NETLIB_LAPACK_DIR)/make.inc +-else +- -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc +-endif +-else +- -@echo "TIMER = NONE" >> $(NETLIB_LAPACK_DIR)/make.inc +- -@echo "LOADER = $(FC)" >> $(NETLIB_LAPACK_DIR)/make.inc +-endif +- -@cat make.inc >> $(NETLIB_LAPACK_DIR)/make.inc +-endif ++ @$(MAKE) -C $(NETLIB_LAPACK_DIR) + + large.tgz : + 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 ++NETLIB_LAPACK_DIR = $(TOPDIR)/netliblapack + + # Default C compiler + # - Only set if not specified on the command line or inherited from the environment. diff --git a/openblas-0.2.5-libname.patch b/openblas-0.2.5-libname.patch new file mode 100644 index 0000000..e30ab8b --- /dev/null +++ b/openblas-0.2.5-libname.patch @@ -0,0 +1,24 @@ +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 +-LIBNAME = $(LIBPREFIX)_$(LIBCORE)p$(REVISION).$(LIBSUFFIX) +-LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)p$(REVISION)_p.$(LIBSUFFIX) ++LIBNAME = $(LIBPREFIX)_$(LIBCORE)$(REVISION).$(LIBSUFFIX) ++LIBNAME_P = $(LIBPREFIX)_$(LIBCORE)$(REVISION)_p.$(LIBSUFFIX) + endif + else + ifndef SMP + LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX) + LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX) + else +-LIBNAME = $(LIBPREFIX)p$(REVISION).$(LIBSUFFIX) +-LIBNAME_P = $(LIBPREFIX)p$(REVISION)_p.$(LIBSUFFIX) ++LIBNAME = $(LIBPREFIX)$(REVISION).$(LIBSUFFIX) ++LIBNAME_P = $(LIBPREFIX)$(REVISION)_p.$(LIBSUFFIX) + endif + endif + diff --git a/openblas-0.3.10-zdot-ppc64le.patch b/openblas-0.3.10-zdot-ppc64le.patch new file mode 100644 index 0000000..28c027e --- /dev/null +++ b/openblas-0.3.10-zdot-ppc64le.patch @@ -0,0 +1,34 @@ +diff -up OpenBLAS-0.3.10/kernel/power/zdot.c.ppc64le OpenBLAS-0.3.10/kernel/power/zdot.c +--- OpenBLAS-0.3.10/kernel/power/zdot.c.ppc64le 2020-06-14 22:03:04.000000000 +0200 ++++ OpenBLAS-0.3.10/kernel/power/zdot.c 2020-09-18 11:18:16.102180677 +0200 +@@ -94,8 +94,11 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT * + + if ( n <= 0 ) + { ++ /* + __real__ result = 0.0 ; + __imag__ result = 0.0 ; ++ */ ++ result = OPENBLAS_MAKE_COMPLEX_FLOAT(0.0,0.0); + return(result); + + } +@@ -149,12 +152,17 @@ FLOAT _Complex CNAME(BLASLONG n, FLOAT * + } + + #if !defined(CONJ) ++ /* + __real__ result = dot[0] - dot[1]; + __imag__ result = dot[2] + dot[3]; ++ */ ++ result = OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]-dot[1],dot[2]+dot[3]); + #else ++ /* + __real__ result = dot[0] + dot[1]; + __imag__ result = dot[2] - dot[3]; +- ++ */ ++ result = OPENBLAS_MAKE_COMPLEX_FLOAT(dot[0]+dot[1],dot[2]-dot[3]); + #endif + + return(result); diff --git a/openblas-0.3.7-tests.patch b/openblas-0.3.7-tests.patch new file mode 100644 index 0000000..fbe2fdb --- /dev/null +++ b/openblas-0.3.7-tests.patch @@ -0,0 +1,42 @@ +diff -up OpenBLAS-0.3.7/Makefile.tests OpenBLAS-0.3.7/Makefile +--- OpenBLAS-0.3.7/Makefile.tests 2019-08-11 23:23:27.000000000 +0200 ++++ OpenBLAS-0.3.7/Makefile 2019-08-12 11:32:09.937281485 +0200 +@@ -123,13 +123,13 @@ 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 +- $(MAKE) -C utest all ++ $(MAKE) -C utest FC="$(FC)" CC="$(CC)" COMMON_OPT="$(COMMON_OPT)" FCOMMON_OPT="$(FCOMMON_OPT)" all + ifndef NO_CBLAS +- $(MAKE) -C ctest all ++ $(MAKE) -C ctest FC="$(FC)" CC="$(CC)" COMMON_OPT="$(COMMON_OPT)" FCOMMON_OPT="$(FCOMMON_OPT)" all + 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 -up OpenBLAS-0.3.7/cpp_thread_test/Makefile.tests OpenBLAS-0.3.7/cpp_thread_test/Makefile +--- OpenBLAS-0.3.7/cpp_thread_test/Makefile.tests 2019-08-11 19:23:00.000000000 +0000 ++++ OpenBLAS-0.3.7/cpp_thread_test/Makefile 2019-12-12 11:05:51.426334062 +0000 +@@ -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.spec b/openblas.spec new file mode 100644 index 0000000..42e0e04 --- /dev/null +++ b/openblas.spec @@ -0,0 +1,971 @@ +%bcond_with system_lapack +# Version of bundled lapack +%global lapackver 3.9.0 + +# DO NOT "CLEAN UP" OR MODIFY THIS SPEC FILE WITHOUT ASKING THE +# MAINTAINER FIRST! +# +# OpenBLAS is hand written assembler code and it has a limited number +# of supported architectures. Don't enable any new architectures / +# processors a) without checking that it is actually supported and b) +# without modifying the target flags. +# +# The same spec is also used on the EPEL branches, meaninng that some +# "obsoleted" features are still kept in the spec. + +Name: openblas +Version: 0.3.10 +Release: 6%{?dist} +Summary: An optimized BLAS library based on GotoBLAS2 +License: BSD +URL: https://github.com/xianyi/OpenBLAS/ +Source0: https://github.com/xianyi/OpenBLAS/archive/v%{version}/openblas-%{version}.tar.gz +# Use system lapack +Patch0: openblas-0.2.15-system_lapack.patch +# Drop extra p from threaded library name +Patch1: openblas-0.2.5-libname.patch +# Don't use constructor priorities on too old architectures +Patch2: openblas-0.2.15-constructor.patch +# Fix broken detection for z13 support +Patch4: https://github.com/xianyi/OpenBLAS/pull/2669.patch +# Fix test suite failure for <= 4 CPUs +Patch5: https://github.com/xianyi/OpenBLAS/pull/2672.patch +# Resolve undefined bfloat16 datatype (BZ #1873667) +Patch6: https://github.com/xianyi/OpenBLAS/pull/2784.patch +# Supply the proper flags to the test makefile +Patch3: openblas-0.3.7-tests.patch +# Fix zdotc on ppc64le (BZ #1878449) +Patch7: openblas-0.3.10-zdot-ppc64le.patch + +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 +%global execstack 0 +%else +%global execstack 1 +%endif +%else +%global execstack 1 +%endif +%if %{execstack} +BuildRequires: /usr/bin/execstack +%endif + +# LAPACK +%if %{with system_lapack} +%if 0%{?rhel} == 5 || 0%{?rhel} == 6 +BuildRequires: lapack-devel +%else +BuildRequires: lapack-static +%endif +# Do we have LAPACKE? (Needs at least lapack 3.4.0) +%if 0%{?fedora} +%global lapacke 1 +%else +%global lapacke 0 +%endif + +%else +# Use bundled LAPACK +%global lapacke 1 +Provides: bundled(lapack) = %{lapackver} +%endif + +# 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} +%if %build64 +BuildRequires: lapack64-static +%endif +%endif + +# Upstream supports the package only on these architectures. +# Runtime processor detection is not available on other archs. +ExclusiveArch: %{openblas_arches} + +%global base_description \ +OpenBLAS is an optimized BLAS library based on GotoBLAS2 1.13 BSD \ +version. The project is supported by the Lab of Parallel Software and \ +Computational Science, ISCAS. http://www.rdcps.ac.cn + + +%description +%{base_description} + +%package serial +Summary: An optimized BLAS library based on GotoBLAS2, serial version +Requires: %{name} = %{version}-%{release} + +%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 +Requires: %{name} = %{version}-%{release} + +%description openmp +%{base_description} + +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 +Requires: %{name} = %{version}-%{release} + +%description threads +%{base_description} + +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 +Requires: %{name} = %{version}-%{release} + +%description serial64 +%{base_description} + +This package contains the sequential library compiled with a 64-bit +integer interface. + +%package openmp64 +Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version +Requires: %{name} = %{version}-%{release} + +%description openmp64 +%{base_description} + +This package contains the library compiled with OpenMP support and +64-bit integer interface. + +%package threads64 +Summary: An optimized BLAS library based on GotoBLAS2, pthreads version +Requires: %{name} = %{version}-%{release} + +%description threads64 +%{base_description} + +This package contains the library compiled with threading support and +64-bit integer interface. + +%package serial64_ +Summary: An optimized BLAS library based on GotoBLAS2, serial version +Requires: %{name} = %{version}-%{release} + +%description serial64_ +%{base_description} + +This package contains the sequential library compiled with a 64-bit +integer interface and a symbol name suffix. + +%package openmp64_ +Summary: An optimized BLAS library based on GotoBLAS2, OpenMP version +Requires: %{name} = %{version}-%{release} + +%description openmp64_ +%{base_description} + +This package contains the library compiled with OpenMP support and +64-bit integer interface and a symbol name suffix. + +%package threads64_ +Summary: An optimized BLAS library based on GotoBLAS2, pthreads version +Requires: %{name} = %{version}-%{release} + +%description threads64_ +%{base_description} + +This package contains the library compiled with threading support and +64-bit integer interface and a symbol name suffix. +%endif + + +%package devel +Summary: Development headers and libraries for OpenBLAS +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 +Requires: %{name}-openmp64%{?_isa} = %{version}-%{release} +Requires: %{name}-threads64%{?_isa} = %{version}-%{release} +Requires: %{name}-serial64%{?_isa} = %{version}-%{release} +Requires: %{name}-openmp64_%{?_isa} = %{version}-%{release} +Requires: %{name}-threads64_%{?_isa} = %{version}-%{release} +Requires: %{name}-serial64_%{?_isa} = %{version}-%{release} +%endif +Requires: %{name}-srpm-macros + +%description devel +%{base_description} + +This package contains the development headers and libraries. + +%package static +Summary: Static version of OpenBLAS +Requires: %{name}-devel%{?_isa} = %{version}-%{release} + +%description static +%{base_description} + +This package contains the static libraries. + + +%prep +%setup -q -c -T + +# Untar source +tar zxf %{SOURCE0} +cd OpenBLAS-%{version} +%if %{with system_lapack} +%patch0 -p1 -b .system_lapack +%endif +%patch1 -p1 -b .libname +%if 0%{?rhel} == 5 +%patch2 -p1 -b .constructor +%endif +%patch4 -p1 -b .s390x +%patch5 -p1 -b .fewcpus +%patch6 -p1 -b .bfloat16 +%patch3 -p1 -b .tests +%patch7 -p1 -b .ppc64le + +# Fix source permissions +find -name \*.f -exec chmod 644 {} \; + +%if %{with system_lapack} +# Get rid of bundled LAPACK sources +rm -rf lapack-netlib +%endif + +# Make serial, threaded and OpenMP versions; as well as 64-bit versions +cd .. +cp -ar OpenBLAS-%{version} openmp +cp -ar OpenBLAS-%{version} threaded +%if %build64 +for d in {serial,threaded,openmp}64{,_}; do + cp -ar OpenBLAS-%{version} $d +done +%endif +mv OpenBLAS-%{version} serial + +%if %{with system_lapack} +# Setup 32-bit interface LAPACK +mkdir netliblapack +cd netliblapack +ar x %{_libdir}/liblapack_pic.a +# Get rid of duplicate functions. See list in Makefile of lapack directory +for f in laswp getf2 getrf potf2 potrf lauu2 lauum trti2 trtri getrs; do + \rm {c,d,s,z}$f.o +done + +# LAPACKE +%if %{lapacke} +ar x %{_libdir}/liblapacke.a +%endif + +# Create makefile +echo "TOPDIR = .." > Makefile +echo "include ../Makefile.system" >> Makefile +echo "COMMONOBJS = \\" >> Makefile +for i in *.o; do + echo "$i \\" >> Makefile +done +echo -e "\n\ninclude \$(TOPDIR)/Makefile.tail" >> Makefile + +%if %{lapacke} +# Copy include files +cp -a %{_includedir}/lapacke . +%endif +cd .. + +# Copy in place +for d in serial threaded openmp; do + cp -pr netliblapack $d +done +rm -rf netliblapack + + +# Setup 64-bit interface LAPACK +%if %build64 +mkdir netliblapack64 +cd netliblapack64 +ar x %{_libdir}/liblapack64_pic.a +# Get rid of duplicate functions. See list in Makefile of lapack directory +for f in laswp getf2 getrf potf2 potrf lauu2 lauum trti2 trtri getrs; do + \rm {c,d,s,z}$f.o +done + +# LAPACKE, no 64-bit interface +%if %{lapacke} +ar x %{_libdir}/liblapacke.a +%endif + +# Create makefile +echo "TOPDIR = .." > Makefile +echo "include ../Makefile.system" >> Makefile +echo "COMMONOBJS = \\" >> Makefile +for i in *.o; do + echo "$i \\" >> Makefile +done +echo -e "\n\ninclude \$(TOPDIR)/Makefile.tail" >> Makefile + +%if %{lapacke} +# Copy include files +cp -a %{_includedir}/lapacke . +%endif +cd .. + +# Copy in place +for d in {serial,threaded,openmp}64{,_}; do + cp -pr netliblapack64 $d/netliblapack +done +rm -rf netliblapack64 +%endif +%endif + +%build +# 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 + +# Maximum possible amount of processors +NMAX="NUM_THREADS=128" + +%ifarch %{ix86} x86_64 +TARGET="TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" + +# Compability for old versions of GCC +%if 0%{?rhel} == 5 +export AVX="NO_AVX=1 NO_AVX2=1" +%endif +%if 0%{?rhel} == 6 +export AVX="NO_AVX2=1" +%endif + +%endif +%ifarch armv7hl +# ARM v7 still doesn't have runtime cpu detection... +TARGET="TARGET=ARMV7 DYNAMIC_ARCH=0" +%endif +%ifarch ppc64 +TARGET="TARGET=POWER6 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +%endif +%ifarch ppc64p7 +TARGET="TARGET=POWER7 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +%endif +%ifarch ppc64le +TARGET="TARGET=POWER8 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +%endif +%ifarch aarch64 +TARGET="TARGET=ARMV8 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +%endif +%ifarch s390x +TARGET="TARGET=ZARCH_GENERIC DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +%endif + +%if 0%{?rhel} == 5 +# Gfortran too old to recognize -frecursive +COMMON="%{optflags} -fPIC" +FCOMMON="%{optflags} -fPIC" +%else +COMMON="%{optflags} -fPIC" +FCOMMON="%{optflags} -fPIC -frecursive" +%endif +# Use Fedora linker flags +export LDFLAGS="%{__global_ldflags}" + +# Declare some necessary build flags +COMMON="%{optflags} -fPIC" +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" +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" +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" +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" +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" +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 +rm -rf %{buildroot} +# Install serial library and headers +make -C serial USE_THREAD=0 PREFIX=%{buildroot} OPENBLAS_LIBRARY_DIR=%{buildroot}%{_libdir} OPENBLAS_INCLUDE_DIR=%{buildroot}%{_includedir}/%name OPENBLAS_BINARY_DIR=%{buildroot}%{_bindir} OPENBLAS_CMAKE_DIR=%{buildroot}%{_libdir}/cmake install + +# Copy lapacke include files +%if %{with system_lapack} && %{lapacke} +cp -a %{_includedir}/lapacke %{buildroot}%{_includedir}/%{name} +%endif + +# Fix i686-x86_64 multilib difference +%multilib_fix_c_header --file %{_includedir}/openblas/openblas_config.h + +# Fix name of libraries: runtime CPU detection has none +suffix="" +# but archs that don't have it do have one +%ifarch armv7hl +suffix="_armv7" +%endif +slibname=`basename %{buildroot}%{_libdir}/libopenblas${suffix}-*.so .so` +mv %{buildroot}%{_libdir}/${slibname}.a %{buildroot}%{_libdir}/lib%{name}.a +if [[ "$suffix" != "" ]]; then + sname=$(echo $slibname | sed "s|$suffix||g") + mv %{buildroot}%{_libdir}/${slibname}.so %{buildroot}%{_libdir}/${sname}.so +else + sname=${slibname} +fi + +# 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 +if [[ "$suffix" != "" ]]; then + oname=$(echo $olibname | sed "s|$suffix||g") +else + oname=${olibname} +fi +install -D -p -m 755 openmp/${olibname}.so %{buildroot}%{_libdir}/${oname}.so + +# Install the threaded library +plibname=`echo ${slibname} | sed "s|lib%{name}|lib%{name}p|g"` +install -D -p -m 644 threaded/${plibname}.a %{buildroot}%{_libdir}/lib%{name}p.a +if [[ "$suffix" != "" ]]; then + pname=$(echo $plibname | sed "s|$suffix||g") +else + pname=${plibname} +fi +install -D -p -m 755 threaded/${plibname}.so %{buildroot}%{_libdir}/${pname}.so + +# Install the 64-bit interface libraries +%if %build64 +slibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}64|g"` +install -D -p -m 644 serial64/${slibname64}.a %{buildroot}%{_libdir}/lib%{name}64.a +slibname64_=`echo ${slibname} | sed "s|lib%{name}|lib%{name}64_|g"` +install -D -p -m 644 serial64_/${slibname64_}.a %{buildroot}%{_libdir}/lib%{name}64_.a + +if [[ "$suffix" != "" ]]; then + sname64=$(echo ${slibname64} | sed "s|$suffix||g") + sname64_=$(echo ${slibname64_} | sed "s|$suffix||g") +else + sname64=${slibname64} + sname64_=${slibname64_} +fi +install -D -p -m 755 serial64/${slibname64}.so %{buildroot}%{_libdir}/${sname64}.so +install -D -p -m 755 serial64_/${slibname64_}.so %{buildroot}%{_libdir}/${sname64_}.so + +olibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}o64|g"` +install -D -p -m 644 openmp64/${olibname64}.a %{buildroot}%{_libdir}/lib%{name}o64.a +olibname64_=`echo ${slibname} | sed "s|lib%{name}|lib%{name}o64_|g"` +install -D -p -m 644 openmp64_/${olibname64_}.a %{buildroot}%{_libdir}/lib%{name}o64_.a + +if [[ "$suffix" != "" ]]; then + oname64=$(echo ${olibname64} | sed "s|$suffix||g") + oname64_=$(echo ${olibname64_} | sed "s|$suffix||g") +else + oname64=${olibname64} + oname64_=${olibname64_} +fi +install -D -p -m 755 openmp64/${olibname64}.so %{buildroot}%{_libdir}/${oname64}.so +install -D -p -m 755 openmp64_/${olibname64_}.so %{buildroot}%{_libdir}/${oname64_}.so + +plibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}p64|g"` +install -D -p -m 644 threaded64/${plibname64}.a %{buildroot}%{_libdir}/lib%{name}p64.a +plibname64_=`echo ${slibname} | sed "s|lib%{name}|lib%{name}p64_|g"` +install -D -p -m 644 threaded64_/${plibname64_}.a %{buildroot}%{_libdir}/lib%{name}p64_.a + +if [[ "$suffix" != "" ]]; then + pname64=$(echo $plibname64 | sed "s|$suffix||g") + pname64_=$(echo $plibname64_ | sed "s|$suffix||g") +else + pname64=${plibname64} + pname64_=${plibname64_} +fi +install -D -p -m 755 threaded64/${plibname64}.so %{buildroot}%{_libdir}/${pname64}.so +install -D -p -m 755 threaded64_/${plibname64_}.so %{buildroot}%{_libdir}/${pname64_}.so +%endif + +# Fix symlinks +pushd %{buildroot}%{_libdir} +# Serial libraries +ln -sf ${sname}.so lib%{name}.so +ln -sf ${sname}.so lib%{name}.so.0 +# OpenMP libraries +ln -sf ${oname}.so lib%{name}o.so +ln -sf ${oname}.so lib%{name}o.so.0 +# Threaded libraries +ln -sf ${pname}.so lib%{name}p.so +ln -sf ${pname}.so lib%{name}p.so.0 + +%if %build64 +# Serial libraries +ln -sf ${sname64}.so lib%{name}64.so +ln -sf ${sname64}.so lib%{name}64.so.0 +ln -sf ${sname64_}.so lib%{name}64_.so +ln -sf ${sname64_}.so lib%{name}64_.so.0 +# OpenMP libraries +ln -sf ${oname64}.so lib%{name}o64.so +ln -sf ${oname64}.so lib%{name}o64.so.0 +ln -sf ${oname64_}.so lib%{name}o64_.so +ln -sf ${oname64_}.so lib%{name}o64_.so.0 +# Threaded libraries +ln -sf ${pname64}.so lib%{name}p64.so +ln -sf ${pname64}.so lib%{name}p64.so.0 +ln -sf ${pname64_}.so lib%{name}p64_.so +ln -sf ${pname64_}.so lib%{name}p64_.so.0 +%endif + +%if %{execstack} +# Get rid of executable stacks +for lib in %{buildroot}%{_libdir}/libopenblas*.so; do + execstack -c $lib +done +%endif + +# Get rid of generated CMake config +rm -rf %{buildroot}%{_libdir}/cmake +# Get rid of generated pkgconfig +rm -rf %{buildroot}%{_libdir}/pkgconfig + +%ldconfig_scriptlets + +%ldconfig_scriptlets openmp + +%ldconfig_scriptlets threads + +%if %build64 +%ldconfig_scriptlets openmp64 +%ldconfig_scriptlets openmp64_ + +%ldconfig_scriptlets serial64 +%ldconfig_scriptlets serial64_ + +%ldconfig_scriptlets threads64 +%ldconfig_scriptlets threads64_ +%endif + +%files +%license serial/LICENSE +%doc serial/Changelog.txt serial/GotoBLAS* + +%files serial +%{_libdir}/lib%{name}-*.so +%{_libdir}/lib%{name}.so.* + +%files openmp +%{_libdir}/lib%{name}o-*.so +%{_libdir}/lib%{name}o.so.* + +%files threads +%{_libdir}/lib%{name}p-*.so +%{_libdir}/lib%{name}p.so.* + +%if %build64 +%files serial64 +%{_libdir}/lib%{name}64-*.so +%{_libdir}/lib%{name}64.so.* + +%files openmp64 +%{_libdir}/lib%{name}o64-*.so +%{_libdir}/lib%{name}o64.so.* + +%files threads64 +%{_libdir}/lib%{name}p64-*.so +%{_libdir}/lib%{name}p64.so.* + +%files serial64_ +%{_libdir}/lib%{name}64_-*.so +%{_libdir}/lib%{name}64_.so.* + +%files openmp64_ +%{_libdir}/lib%{name}o64_-*.so +%{_libdir}/lib%{name}o64_.so.* + +%files threads64_ +%{_libdir}/lib%{name}p64_-*.so +%{_libdir}/lib%{name}p64_.so.* +%endif + +%files devel +%{_includedir}/%{name}/ +%{_libdir}/lib%{name}.so +%{_libdir}/lib%{name}o.so +%{_libdir}/lib%{name}p.so +%if %build64 +%{_libdir}/lib%{name}64.so +%{_libdir}/lib%{name}o64.so +%{_libdir}/lib%{name}p64.so +%{_libdir}/lib%{name}64_.so +%{_libdir}/lib%{name}o64_.so +%{_libdir}/lib%{name}p64_.so +%endif + +%files static +%{_libdir}/lib%{name}.a +%{_libdir}/lib%{name}o.a +%{_libdir}/lib%{name}p.a +%if %build64 +%{_libdir}/lib%{name}64.a +%{_libdir}/lib%{name}o64.a +%{_libdir}/lib%{name}p64.a +%{_libdir}/lib%{name}64_.a +%{_libdir}/lib%{name}o64_.a +%{_libdir}/lib%{name}p64_.a +%endif + +%changelog +* Fri Sep 18 2020 Susi Lehtola - 0.3.10-6 +- Fix incorrect result of cblas_zdotc_sub on ppc64le (BZ #1878449). + +* Sat Aug 29 2020 Susi Lehtola - 0.3.10-5 +- Fix unresolved bfloat16 datatype (BZ #1873667). + +* Fri Aug 14 2020 Susi Lehtola - 0.3.10-4 +- Obsolete Rblas package (BZ #1849966). + +* Tue Aug 11 2020 Jeff Law - 0.3.10-3 +- Disable LTO + +* Tue Jul 28 2020 Susi Lehtola - 0.3.10-2 +- Include upstream patch 2672 to fix test suite on systems with few CPUs. + +* Mon Jun 15 2020 Susi Lehtola - 0.3.10-1 +- Update to 0.3.10. + +* Thu May 28 2020 Susi Lehtola - 0.3.9-3 +- Enable USE_LOCKING in the sequential versions of the library for + thread safety. + +* Thu Apr 02 2020 Susi Lehtola - 0.3.9-2 +- Patch for BZ #1820131. + +* Mon Mar 02 2020 Susi Lehtola - 0.3.9-1 +- Update to 0.3.9. + +* Tue Feb 11 2020 Susi Lehtola - 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 - 0.3.7-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Dec 11 2019 Dominik Mierzejewski - 0.3.7-2 +- enable C++ thread safety test where possible + +* Mon Aug 12 2019 Susi Lehtola - 0.3.7-1 +- Update to 0.3.7. + +* Thu Jul 25 2019 Fedora Release Engineering - 0.3.6-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 02 2019 Susi Lehtola - 0.3.6-2 +- Rebuild since older build doesn't show up in updates system. + +* Tue Apr 30 2019 Susi Lehtola - 0.3.6-1 +- Update to 0.3.6. + +* Tue Feb 26 2019 Susi Lehtola - 0.3.5-5 +- Even more assembly kernel patches. + +* Mon Feb 25 2019 Susi Lehtola - 0.3.5-4 +- Another assembly kernel patch. + +* Sun Feb 17 2019 Susi Lehtola - 0.3.5-3 +- Patch assembly kernels to satisfy gcc 9 demands. + +* Fri Feb 01 2019 Fedora Release Engineering - 0.3.5-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 07 2019 Susi Lehtola - 0.3.5-1 +- Update to 0.3.5, with dynamic CPU detection on aarch64. + +* Fri Nov 09 2018 Nikola Forró - 0.3.3-3 +- Fix i686-x86_64 multilib difference. +- Get rid of executable stack in libRblas.so. + +* Sat Sep 29 2018 Susi Lehtola - 0.3.3-2 +- Fix segfault (BZ #1634060). + +* Sun Sep 09 2018 Susi Lehtola - 0.3.3-1 +- Update to 0.3.3. + +* Wed Aug 29 2018 Dan Horák - 0.3.2-5 +- Fix precision in generic target on s390x + +* Fri Aug 24 2018 Susi Lehtola - 0.3.2-4 +- Patch to avoid threading issues. + +* Fri Aug 24 2018 Susi Lehtola - 0.3.2-3 +- Add missing %%{optflags} to COMMON (see discussion in #1619074). + +* Wed Aug 15 2018 Dan Horák - 0.3.2-2 +- Explicitly set the target to generic on s390x to avoid surprises (#1615760) + +* Thu Aug 02 2018 Susi Lehtola - 0.3.2-1 +- Update to 0.3.2. + +* Sun Jul 22 2018 Susi Lehtola - 0.3.1-3 +- Fix crash with multiple instances (BZ #1605231). + +* Fri Jul 13 2018 Fedora Release Engineering - 0.3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Jul 01 2018 Susi Lehtola - 0.3.1-1 +- Update to 0.3.1. + +* Mon Jun 11 2018 Susi Lehtola - 0.3.0-2 +- Split sequential libraries from core package to openblas-serial. + +* Thu May 24 2018 Susi Lehtola - 0.3.0-1 +- Update to 0.3.0. + +* Thu Mar 22 2018 Susi Lehtola - 0.2.20-10 +- Disable CPU affinity unintentionally enabled upstream (BZ #1558091). + +* Sun Mar 04 2018 Susi Lehtola - 0.2.20-9 +- Clean up obsolete conditionals for 64 bit builds in spec file. + +* Tue Feb 27 2018 Susi Lehtola - 0.2.20-8 +- Use %%__global_ldflags instead of %%build_ldflags that doesn't work on + all distributions. + +* Tue Feb 27 2018 Susi Lehtola - 0.2.20-7 +- Honor Fedora linker flags (BZ #1548750). + +* Wed Feb 14 2018 Susi Lehtola - 0.2.20-6 +- Drop arch-dependent buildrequires (BZ #1545201); no changes to package + (only affects packages custom built with --with system_lapack). + +* Thu Feb 08 2018 Fedora Release Engineering - 0.2.20-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 30 2018 Florian Weimer - 0.2.20-4 +- Rebuild for GCC 8 + +* Thu Sep 14 2017 Susi Lehtola - 0.2.20-3 +- Simplify spec, dropping extra lib arguments. + +* Thu Aug 03 2017 Fedora Release Engineering - 0.2.20-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Fri Jul 28 2017 Susi Lehtola - 0.2.20-1 +- Update to 0.2.20. + +* Thu Jul 27 2017 Fedora Release Engineering - 0.2.19-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Mon May 29 2017 Dan Horák - 0.2.19-11 +- add generic s390x support (#1442048) + +* Mon Mar 20 2017 Orion Poplawski - 0.2.19-10 +- Drop openblas-srpm-macros version requirement + +* Mon Mar 20 2017 Orion Poplawski - 0.2.19-9 +- Move openblas-srpm-macros to separate package + +* Wed Mar 15 2017 Orion Poplawski - 0.2.19-8 +- Define %%openblas_arches for dependent packages to use + +* Mon Feb 13 2017 Björn Esser - 0.2.19-7 +- Upgrade Patch4 to hopefully fully fix the issues on PPC64LE + +* Fri Feb 03 2017 Björn Esser - 0.2.19-6 +- Add Patch4 to fix register clobbers (BZ #1417385) + +* Sat Jan 28 2017 Björn Esser - 0.2.19-5 +- Rebuilt for GCC-7 + +* Wed Dec 14 2016 Tom Callaway - 0.2.19-4 +- build a copy of openblas that thinks it is Rblas + There are no code changes, except for libname and soname, it is identical to libopenblas.so.0 + Unfortunately, while R itself is fine using a symlink from libopenblas.so.0 to libRblas.so + the larger R ecosystem becomes unhappy in this scenario. + +* Thu Nov 03 2016 Susi Lehtola - 0.2.19-3 +- Fix linkage of OpenMP libraries (BZ #1391491). + +* Thu Oct 20 2016 Susi Lehtola - 0.2.19-2 +- Actually use 8-bit integers in 64-bit interfaces (BZ #1382916). + +* Tue Oct 18 2016 Susi Lehtola - 0.2.19-1 +- Update to 0.2.19. + +* Wed Aug 17 2016 Susi Lehtola - 0.2.18-5 +- Revert "minor spec cleanups" by Peter Robinson. + +* Wed Jul 13 2016 Peter Robinson 0.2.18-4 +- aarch64 has execstack in Fedora +- Minor spec cleanups + +* Wed Jul 13 2016 Susi Lehtola - 0.2.18-3 +- Enable ppc64 and ppc64p7 architectures + based on Dan Horák's patch (BZ #1356189). +- Supply proper make flags to the tests. + +* Tue Jul 12 2016 Jeff Bastian - 0.2.18-2 +- update for aarch64 + +* Tue Apr 12 2016 Susi Lehtola - 0.2.18-1 +- Update to 0.2.18. + +* Wed Apr 6 2016 Orion Poplawski - 0.2.17-1 +- Update to 0.2.17 + +* Fri Mar 18 2016 Susi Lehtola - 0.2.16-3 +- Include deprecated LAPACK functions. + +* Wed Mar 16 2016 Susi Lehtola - 0.2.16-2 +- Fix library suffix on ppc64le. + +* Tue Mar 15 2016 Susi Lehtola - 0.2.16-1 +- Update to 0.2.16. + +* Thu Feb 04 2016 Fedora Release Engineering - 0.2.15-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Jan 12 2016 Susi Lehtola - 0.2.15-5 +- Need to use -frecursive to make LAPACK thread safe. + +* Tue Jan 12 2016 Susi Lehtola - 0.2.15-4 +- Add version to bundled lapack provide. + +* Mon Jan 11 2016 Orion Poplawski - 0.2.15-3 +- Allow conditional build with or without system lapack, default to without + +* Tue Dec 01 2015 Susi Lehtola - 0.2.15-2 +- Enable armv7hl and ppc64le architectures. +- Build versions of the 64-bit libraries with an additional suffix + (BZ #1287541). + +* Wed Oct 28 2015 Susi Lehtola - 0.2.15-1 +- Update to 0.2.15. + +* Tue Aug 04 2015 Zbigniew Jędrzejewski-Szmek - 0.2.14-4 +- Use new execstack (#1247795) + +* Wed Jun 17 2015 Fedora Release Engineering - 0.2.14-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun May 3 2015 Peter Robinson 0.2.14-2 +- Run ldconfig on 64 builds too + +* Wed Mar 25 2015 Susi Lehtola - 0.2.14-1 +- Update to 0.2.14. + +* Fri Dec 19 2014 Susi Lehtola - 0.2.13-2 +- Bump spec due to LAPACK rebuild. + +* Fri Dec 05 2014 Susi Lehtola - 0.2.13-1 +- Update to 0.2.13. + +* Mon Oct 13 2014 Susi Lehtola - 0.2.12-1 +- Update to 0.2.12. + +* Mon Aug 18 2014 Susi Lehtola - 0.2.11-1 +- Update to 0.2.11. + +* Sun Aug 17 2014 Fedora Release Engineering - 0.2.10-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Jul 16 2014 Susi Lehtola - 0.2.10-1 +- Update to 0.2.10. + +* Wed Jun 11 2014 Susi Lehtola - 0.2.9-1 +- Increase maximum amount of cores from 32 to 128. +- Add 64-bit interface support. (BZ #1088256) +- Update to 0.2.9. (BZ #1043083) + +* Sat Jun 07 2014 Fedora Release Engineering - 0.2.8-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed Aug 07 2013 Susi Lehtola - 0.2.8-1 +- Update to 0.2.8. + +* Sat Aug 03 2013 Fedora Release Engineering - 0.2.7-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Tue Jul 23 2013 Susi Lehtola - 0.2.7-1 +- Update to 0.2.7. +- Use OpenBLAS versions of LAPACK functions, as they seem to be + working now. + +* Mon Jul 08 2013 Susi Lehtola - 0.2.5-10 +- Due to long standing bug, replace all OpenBLAS LAPACK functions with + generic ones, so that package can finally be released in stable. + +* Thu Feb 14 2013 Fedora Release Engineering - 0.2.5-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Tue Jan 15 2013 Susi Lehtola - 0.2.5-8 +- Added LAPACKE include files. + +* Mon Jan 14 2013 Susi Lehtola - 0.2.5-7 +- Fix build on RHEL5 and ppc architecture. + +* Mon Dec 24 2012 Susi Lehtola - 0.2.5-6 +- Review fixes. + +* Fri Dec 21 2012 Susi Lehtola - 0.2.5-5 +- Disable LAPACKE support on distributions where it is not available due to + a too old version of lapack. + +* Mon Dec 17 2012 Susi Lehtola - 0.2.5-4 +- Don't use reference LAPACK functions that have optimized implementation. + +* Wed Dec 12 2012 Susi Lehtola - 0.2.5-3 +- Use system version of LAPACK. + +* Mon Nov 26 2012 Susi Lehtola - 0.2.5-2 +- Fixed 32-bit build, and build on EPEL 5. + +* Mon Nov 26 2012 Susi Lehtola - 0.2.5-1 +- Update to 0.2.5. + +* Thu Oct 06 2011 Jussi Lehtola - 0.1-2.alpha2.4 +- Added documentation. + +* Sun Sep 18 2011 Jussi Lehtola - 0.1-1.alpha2.4 +- First release. diff --git a/sources b/sources new file mode 100644 index 0000000..3d7fe4a --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (openblas-0.3.10.tar.gz) = 64a5f983b2f6e02cdb6e0f14433498cc5daa1ccfb49246f7a2dcd38f9982fa608f2abea069fe0e35012af8c1441c43d1f6418eaccd40795f5002fed1c36ce05d