From ffa7fe5b1cca5abde762c650b239f6b17d7dc027 Mon Sep 17 00:00:00 2001 From: zhouwenpei Date: Tue, 15 Mar 2022 18:01:51 +0800 Subject: [PATCH] restore tune up build speed (cherry picked from commit 4067bceb3b9335236d1cf1d6be21d58b055cc9ba) --- openblas.spec | 84 +++++++++++++++++-- ...m-Makefile-and-add-this-to-spec-in-f.patch | 27 ++++++ 2 files changed, 102 insertions(+), 9 deletions(-) create mode 100644 rm-make-test-from-Makefile-and-add-this-to-spec-in-f.patch diff --git a/openblas.spec b/openblas.spec index 9d14b03..01c148f 100644 --- a/openblas.spec +++ b/openblas.spec @@ -2,7 +2,7 @@ Name: openblas Version: 0.3.18 -Release: 1 +Release: 2 Summary: An optimized BLAS library based on GotoBLAS2 1.13 BSD version License: BSD URL: https://github.com/xianyi/OpenBLAS/ @@ -10,10 +10,12 @@ Source0: https://github.com/xianyi/OpenBLAS/archive/v%{version}/openblas- Patch0000: openblas-0.2.15-system_lapack.patch Patch0001: openblas-0.2.5-libname.patch Patch0002: openblas-0.3.7-tests.patch +Patch0003: rm-make-test-from-Makefile-and-add-this-to-spec-in-f.patch Requires: %{name}-devel = %{version}-%{release} BuildRequires: gcc gcc-gfortran perl-devel gcc-c++ +%define build64 0 %if %{with system_lapack} BuildRequires: lapack-static lapack64-static %global lapacke 0 @@ -23,17 +25,23 @@ Provides: bundled(lapack) = 3.9.0 %endif Provides: openblas-serial = %{version}-%{release} openblas-openmp = %{version}-%{release} +Provides: openblas-threads = %{version}-%{release} +%if %{build64} Provides: openblas-threads = %{version}-%{release} openblas-serial64 = %{version}-%{release} Provides: openblas-openmp64 = %{version}-%{release} openblas-threads64 = %{version}-%{release} Provides: openblas-serial64_ = %{version}-%{release} openblas-openmp64_ = %{version}-%{release} Provides: openblas-threads64_ = %{version}-%{release} openblas-Rblas = %{version}-%{release} +%endif +Provides: openblas-Rblas = %{version}-%{release} Provides: openblas-static = %{version}-%{release} Obsoletes: openblas-serial < %{version}-%{release} openblas-openmp < %{version}-%{release} +Obsoletes: openblas-threads < %{version}-%{release} +%if %{build64} Obsoletes: openblas-threads < %{version}-%{release} openblas-serial64 < %{version}-%{release} Obsoletes: openblas-openmp64 < %{version}-%{release} openblas-threads64 < %{version}-%{release} Obsoletes: openblas-serial64_ < %{version}-%{release} openblas-openmp64_ < %{version}-%{release} Obsoletes: openblas-threads64_ < %{version}-%{release} openblas-Rblas < %{version}-%{release} -Obsoletes: openblas-static < %{version}-%{release} +%endif ExclusiveArch: x86_64 aarch64 @@ -58,6 +66,7 @@ cd OpenBLAS-%{version} %endif %patch0001 -p1 -b .libname %patch0002 -p1 -b .tests +%patch0003 -p1 # Set source permissions find -name \*.f -exec chmod 644 {} \; @@ -71,9 +80,11 @@ rm -rf lapack-netlib 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 cp -ar OpenBLAS-%{version} Rblas mv OpenBLAS-%{version} serial @@ -161,10 +172,10 @@ LAPACKE="NO_LAPACKE=1" NMAX="NUM_THREADS=128" %ifarch x86_64 -TARGET="TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +TARGET="TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=0" %endif %ifarch aarch64 -TARGET="TARGET=ARMV8 DYNAMIC_ARCH=1 DYNAMIC_OLDER=1" +TARGET="TARGET=ARMV8 DYNAMIC_ARCH=0" %endif COMMON="%{optflags} -fPIC" @@ -184,23 +195,67 @@ 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 +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 CPP_THREAD_SAFETY_TEST=1 +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 + +%check +%define _lto_cflags %{nil} +%if !%{lapacke} +LAPACKE="NO_LAPACKE=1" +%endif + +# Maximum possible amount of processors +NMAX="NUM_THREADS=128" + +%ifarch x86_64 +TARGET="TARGET=CORE2 DYNAMIC_ARCH=1 DYNAMIC_OLDER=0" +%endif +%ifarch aarch64 +TARGET="TARGET=ARMV8 DYNAMIC_ARCH=0" +%endif 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_ +FCOMMON="%{optflags} -fPIC -frecursive" +export LDFLAGS="%{__global_ldflags}" + +make -C Rblas tests $TARGET USE_THREAD=0 USE_LOCKING=1 USE_OPENMP=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" +make -C serial tests $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 tests $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 tests $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 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 +make -C serial64 tests $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 tests $TARGET USE_THREAD=1 USE_OPENMP=0 FC=gfortran CC=gcc COMMON_OPT="$COMMON" FCOMMON_OPT="$FCOMMON" $NMAX LIBPREFIX="libopenblasp64" $AVX $LAPACKE INTERFACE64=1 +make -C serial64_ tests $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_ tests $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 tests $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 +make -C openmp64_ tests $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} @@ -213,6 +268,9 @@ cp -a %{_includedir}/lapacke %{buildroot}%{_includedir}/%{name} %endif # Fix name of libraries +%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 @@ -246,6 +304,7 @@ else fi install -D -p -m 755 threaded/${plibname}.so %{buildroot}%{_libdir}/${pname}.so +%if %{build64} # Install the 64-bit interface libraries slibname64=`echo ${slibname} | sed "s|lib%{name}|lib%{name}64|g"` @@ -292,6 +351,7 @@ else 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 cd %{buildroot}%{_libdir} @@ -306,6 +366,7 @@ ln -sf ${oname}.so lib%{name}o.so.0 ln -sf ${pname}.so lib%{name}p.so ln -sf ${pname}.so lib%{name}p.so.0 +%if %{build64} # 64bit Serial libraries ln -sf ${sname64}.so lib%{name}64.so ln -sf ${sname64}.so lib%{name}64.so.0 @@ -321,7 +382,7 @@ 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 # Get rid of generated CMake config rm -rf %{buildroot}%{_libdir}/cmake @@ -347,10 +408,15 @@ rm -rf %{buildroot}%{_libdir}/pkgconfig %{_libdir}/lib%{name}.so %{_libdir}/lib%{name}o.so %{_libdir}/lib%{name}p.so +%if %{build64} %{_libdir}/lib%{name}*64.so %{_libdir}/lib%{name}*64_.so +%endif %changelog +* Tue Mar 15 2022 zhouwenpei - 0.3.18-2 +- restore tune up build speed + * Mon Dec 27 2021 zhouwenpei - 0.3.18-1 - Upgrade to 0.3.18 diff --git a/rm-make-test-from-Makefile-and-add-this-to-spec-in-f.patch b/rm-make-test-from-Makefile-and-add-this-to-spec-in-f.patch new file mode 100644 index 0000000..8ce5a38 --- /dev/null +++ b/rm-make-test-from-Makefile-and-add-this-to-spec-in-f.patch @@ -0,0 +1,27 @@ +From bc1d1850adf69e08debd5ff1ac50d6d497b625b0 Mon Sep 17 00:00:00 2001 +From: qinyu +Date: Tue, 6 Apr 2021 18:19:27 +0800 +Subject: [PATCH] rm "make test" from Makefile and add this to spec in + following ci + +Signed-off-by: qinyu +--- + Makefile | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/Makefile b/Makefile +index a22e16b..2103691 100644 +--- a/Makefile ++++ b/Makefile +@@ -39,7 +39,7 @@ SUBDIRS_ALL = $(SUBDIRS) test ctest utest exports benchmark ../laswp ../bench cp + .PHONY : all libs netlib $(RELA) test ctest shared install + .NOTPARALLEL : all libs $(RELA) prof lapack-test install blas-test + +-all :: libs netlib $(RELA) tests shared ++all :: libs netlib $(RELA) shared + @echo + @echo " OpenBLAS build complete. ($(LIB_COMPONENTS))" + @echo +-- +2.23.0 + -- Gitee