Really unbundle lapack.

This commit is contained in:
Susi Lehtola 2015-02-08 05:49:45 +01:00
parent ce75bd4e22
commit 36b85772cc
3 changed files with 71 additions and 38 deletions

View File

@ -0,0 +1,17 @@
diff -up wrk/makes/Make.lib.wrk wrk/makes/Make.lib
--- wrk/makes/Make.lib.wrk 2015-01-23 21:14:46.465494411 +0100
+++ wrk/makes/Make.lib 2015-01-23 22:48:39.632479588 +0100
@@ -185,11 +185,11 @@ TRYALL :
#
fat_ptshared : # threaded target
$(MAKE) TRYALL outso=libtatlas.so \
- libas="libptlapack.a libptf77blas.a libptcblas.a libatlas.a" \
+ libas="libptlapack.a libptf77blas.a libptcblas.a libatlas.a $(SLAPACKlib)" \
LIBINSTdir="$(LIBINSTdir)"
fat_shared : # serial target
$(MAKE) TRYALL outso=libsatlas.so \
- libas="liblapack.a libf77blas.a libcblas.a libatlas.a" \
+ libas="liblapack.a libf77blas.a libcblas.a libatlas.a $(SLAPACKlib)" \
LIBINSTdir="$(LIBINSTdir)"
#
# Builds shared lib, not include fortran codes from LAPACK

View File

@ -5,7 +5,7 @@ Version: 3.10.1
%if "%{?enable_native_atlas}" != "0" %if "%{?enable_native_atlas}" != "0"
%define dist .native %define dist .native
%endif %endif
Release: 17%{?dist} Release: 18%{?dist}
Summary: Automatically Tuned Linear Algebra Software Summary: Automatically Tuned Linear Algebra Software
Group: System Environment/Libraries Group: System Environment/Libraries
@ -15,13 +15,12 @@ Source0: http://downloads.sourceforge.net/math-atlas/%{name}%{version}.ta
Source1: PPRO32.tgz Source1: PPRO32.tgz
#Source2: K7323DNow.tgz #Source2: K7323DNow.tgz
Source3: README.dist Source3: README.dist
#Source4: USII64.tgz #Source4: USII64.tgz
#Source5: USII32.tgz #Source5: USII32.tgz
#Source6: IBMz1032.tgz #Source6: IBMz1032.tgz
#Source7: IBMz1064.tgz #Source7: IBMz1064.tgz
#Source8: IBMz19632.tgz #Source8: IBMz19632.tgz
#Source9: IBMz19664.tgz #Source9: IBMz19664.tgz
Source10: http://www.netlib.org/lapack/lapack-3.5.0.tgz
#archdefs taken from debian: #archdefs taken from debian:
Source11: POWER332.tar.bz2 Source11: POWER332.tar.bz2
Source12: IBMz932.tar.bz2 Source12: IBMz932.tar.bz2
@ -43,6 +42,7 @@ Patch6: atlas-affinity.patch
Patch7: atlas-aarch64port.patch Patch7: atlas-aarch64port.patch
Patch8: atlas-genparse.patch Patch8: atlas-genparse.patch
Patch9: atlas.3.10.1-unbundle.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@ -55,8 +55,7 @@ Patch100: ppc64le-abiv2.patch
Patch110: p8-mem-barrier.patch Patch110: p8-mem-barrier.patch
BuildRequires: gcc-gfortran BuildRequires: gcc-gfortran
BuildRequires: lapack-static
Provides: bundled(lapack)
%ifarch x86_64 %ifarch x86_64
Obsoletes: atlas-sse3 < 3.10 Obsoletes: atlas-sse3 < 3.10
@ -182,7 +181,7 @@ Requires(preun): chkconfig
%description sse2-static %description sse2-static
This package contains ATLAS (Automatically Tuned Linear Algebra Software) This package contains ATLAS (Automatically Tuned Linear Algebra Software)
static libraries compiled with optimizations for the SSE2 extensions to the static libraries compiled with optimizations for the SSE2 extensions to the
ix86 architecture. ix86 architecture.
@ -216,13 +215,13 @@ Requires(preun): chkconfig
%description sse3-static %description sse3-static
This package contains ATLAS (Automatically Tuned Linear Algebra Software) This package contains ATLAS (Automatically Tuned Linear Algebra Software)
static libraries compiled with optimizations for the SSE3 extensions to the static libraries compiled with optimizations for the SSE3 extensions to the
ix86 architecture. ix86 architecture.
%endif %endif
%ifarch s390 s390x %ifarch s390 s390x
%define types base %define types base
#z196 #z196
#z10 #z10
@ -297,7 +296,7 @@ ix86 architecture.
%ifarch %{arm} %ifarch %{arm}
#beware - arch constant can change between releases #beware - arch constant can change between releases
%define arch_option -A 46 %define arch_option -A 46
%define threads_option -t 2 %define threads_option -t 2
%global armflags -DATL_ARM_HARDFP=1 %global armflags -DATL_ARM_HARDFP=1
%global mode %{nil} %global mode %{nil}
@ -305,7 +304,7 @@ ix86 architecture.
%global mode -b %{__isa_bits} %global mode -b %{__isa_bits}
%global armflags %{nil} %global armflags %{nil}
%if "%{?enable_native_atlas}" == "0" %if "%{?enable_native_atlas}" == "0"
%define threads_option -t 4 %define threads_option -t 4
%endif %endif
%endif %endif
@ -332,6 +331,7 @@ ix86 architecture.
%patch7 -p1 -b .aarch64 %patch7 -p1 -b .aarch64
%endif %endif
%patch8 -p1 -b .genparse %patch8 -p1 -b .genparse
%patch9 -p1 -b .unbundle
cp %{SOURCE1} CONFIG/ARCHS/ cp %{SOURCE1} CONFIG/ARCHS/
#cp %{SOURCE2} CONFIG/ARCHS/ #cp %{SOURCE2} CONFIG/ARCHS/
@ -362,8 +362,19 @@ sed -i -e 's,-mfpu=vfpv3,,' tune/blas/gemm/CASES/*.flg
# Debug # Debug
#sed -i -e 's,> \(.*\)/ptsanity.out,> \1/ptsanity.out || cat \1/ptsanity.out \&\& exit 1,' makes/Make.* #sed -i -e 's,> \(.*\)/ptsanity.out,> \1/ptsanity.out || cat \1/ptsanity.out \&\& exit 1,' makes/Make.*
# Generate lapack library
mkdir lapacklib
cd lapacklib
ar x %{_libdir}/liblapack_pic.a
# Remove functions that have ATLAS implementations
rm cgelqf.o cgels.o cgeqlf.o cgeqrf.o cgerqf.o cgesv.o cgetrf.o cgetri.o cgetrs.o clarfb.o clarft.o clauum.o cposv.o cpotrf.o cpotri.o cpotrs.o ctrtri.o dgelqf.o dgels.o dgeqlf.o dgeqrf.o dgerqf.o dgesv.o dgetrf.o dgetri.o dgetrs.o dlamch.o dlarfb.o dlarft.o dlauum.o dposv.o dpotrf.o dpotri.o dpotrs.o dtrtri.o ieeeck.o ilaenv.o lsame.o sgelqf.o sgels.o sgeqlf.o sgeqrf.o sgerqf.o sgesv.o sgetrf.o sgetri.o sgetrs.o slamch.o slarfb.o slarft.o slauum.o sposv.o spotrf.o spotri.o spotrs.o strtri.o xerbla.o zgelqf.o zgels.o zgeqlf.o zgeqrf.o zgerqf.o zgesv.o zgetrf.o zgetri.o zgetrs.o zlarfb.o zlarft.o zlauum.o zposv.o zpotrf.o zpotri.o zpotrs.o ztrtri.o
# Create new library
ar rcs ../liblapack_pic_pruned.a *.o
cd ..
%build %build
p=$(pwd)
for type in %{types}; do for type in %{types}; do
if [ "$type" = "base" ]; then if [ "$type" = "base" ]; then
libname=atlas libname=atlas
@ -377,8 +388,11 @@ for type in %{types}; do
../configure %{mode} %{?threads_option} %{?arch_option} -D c -DWALL -Fa alg '%{armflags} -g -Wa,--noexecstack -fPIC'\ ../configure %{mode} %{?threads_option} %{?arch_option} -D c -DWALL -Fa alg '%{armflags} -g -Wa,--noexecstack -fPIC'\
--prefix=%{buildroot}%{_prefix} \ --prefix=%{buildroot}%{_prefix} \
--incdir=%{buildroot}%{_includedir} \ --incdir=%{buildroot}%{_includedir} \
--libdir=%{buildroot}%{_libdir}/${libname} \ --libdir=%{buildroot}%{_libdir}/${libname}
--with-netlib-lapack-tarfile=%{SOURCE10} #--with-netlib-lapack-tarfile=%{SOURCE10}
#matches both SLAPACK and SSLAPACK
sed -i "s#SLAPACKlib.*#SLAPACKlib = ${p}/liblapack_pic_pruned.a#" Make.inc
%if "%{?enable_native_atlas}" == "0" %if "%{?enable_native_atlas}" == "0"
%ifarch x86_64 %ifarch x86_64
@ -386,18 +400,18 @@ for type in %{types}; do
# sed -i 's#ARCH =.*#ARCH = HAMMER64SSE2#' Make.inc # sed -i 's#ARCH =.*#ARCH = HAMMER64SSE2#' Make.inc
sed -i 's#ARCH =.*#ARCH = HAMMER64SSE3#' Make.inc sed -i 's#ARCH =.*#ARCH = HAMMER64SSE3#' Make.inc
# sed -i 's#-DATL_SSE3##' Make.inc # sed -i 's#-DATL_SSE3##' Make.inc
sed -i 's#-DATL_AVX##' Make.inc sed -i 's#-DATL_AVX##' Make.inc
# sed -i 's#-msse3#-msse2#' Make.inc # sed -i 's#-msse3#-msse2#' Make.inc
sed -i 's#-mavx#-msse3#' Make.inc sed -i 's#-mavx#-msse3#' Make.inc
echo 'base makefile edited' echo 'base makefile edited'
# sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc # sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc
elif [ "$type" = "sse3" ]; then elif [ "$type" = "sse3" ]; then
# sed -i 's#ARCH =.*#ARCH = Corei264AVX#' Make.inc # sed -i 's#ARCH =.*#ARCH = Corei264AVX#' Make.inc
# sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc # sed -i 's#PMAKE = $(MAKE) .*#PMAKE = $(MAKE) -j 1#' Make.inc
sed -i 's#-DATL_AVX##' Make.inc sed -i 's#-DATL_AVX##' Make.inc
sed -i 's#-DATL_SSE2##' Make.inc sed -i 's#-DATL_SSE2##' Make.inc
sed -i 's#-mavx#-msse2#' Make.inc sed -i 's#-mavx#-msse2#' Make.inc
sed -i 's#-msse3#-msse2#' Make.inc sed -i 's#-msse3#-msse2#' Make.inc
echo 'sse makefile edited' echo 'sse makefile edited'
%define pr_sse3 %(echo $((%{__isa_bits}+4))) %define pr_sse3 %(echo $((%{__isa_bits}+4)))
fi fi
@ -409,18 +423,18 @@ for type in %{types}; do
#sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc #sed -i 's#-DATL_SSE3 -DATL_SSE2 -DATL_SSE1##' Make.inc
sed -i 's#-DATL_SSE3##' Make.inc sed -i 's#-DATL_SSE3##' Make.inc
sed -i 's#-DATL_SSE2##' Make.inc sed -i 's#-DATL_SSE2##' Make.inc
sed -i 's#-DATL_SSE1##' Make.inc sed -i 's#-DATL_SSE1##' Make.inc
sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc sed -i 's#-mfpmath=sse -msse3#-mfpmath=387#' Make.inc
elif [ "$type" = "sse" ]; then elif [ "$type" = "sse" ]; then
sed -i 's#ARCH =.*#ARCH = PIII32SSE1#' Make.inc sed -i 's#ARCH =.*#ARCH = PIII32SSE1#' Make.inc
sed -i 's#-DATL_SSE3#-DATL_SSE1#' Make.inc sed -i 's#-DATL_SSE3#-DATL_SSE1#' Make.inc
sed -i 's#-msse3#-msse#' Make.inc sed -i 's#-msse3#-msse#' Make.inc
%define pr_sse %(echo $((%{__isa_bits}+2))) %define pr_sse %(echo $((%{__isa_bits}+2)))
elif [ "$type" = "sse2" ]; then elif [ "$type" = "sse2" ]; then
# sed -i 's#ARCH =.*#ARCH = P432SSE2#' Make.inc # sed -i 's#ARCH =.*#ARCH = P432SSE2#' Make.inc
sed -i 's#ARCH =.*#ARCH = x86SSE232SSE2#' Make.inc sed -i 's#ARCH =.*#ARCH = x86SSE232SSE2#' Make.inc
sed -i 's#-DATL_SSE3#-DATL_SSE2#' Make.inc sed -i 's#-DATL_SSE3#-DATL_SSE2#' Make.inc
sed -i 's#-msse3#-msse2#' Make.inc sed -i 's#-msse3#-msse2#' Make.inc
%define pr_sse2 %(echo $((%{__isa_bits}+3))) %define pr_sse2 %(echo $((%{__isa_bits}+3)))
elif [ "$type" = "sse3" ]; then elif [ "$type" = "sse3" ]; then
sed -i 's#ARCH =.*#ARCH = P4E32SSE3#' Make.inc sed -i 's#ARCH =.*#ARCH = P4E32SSE3#' Make.inc
@ -433,10 +447,10 @@ for type in %{types}; do
# we also need a compiler with -march=z196 support # we also need a compiler with -march=z196 support
# the base support will use z196 tuning # the base support will use z196 tuning
if [ "$type" = "base" ]; then if [ "$type" = "base" ]; then
%ifarch s390x %ifarch s390x
sed -i 's#ARCH =.*#ARCH = IBMz964#' Make.inc sed -i 's#ARCH =.*#ARCH = IBMz964#' Make.inc
%endif %endif
%ifarch s390 %ifarch s390
sed -i 's#ARCH =.*#ARCH = IBMz932#' Make.inc sed -i 's#ARCH =.*#ARCH = IBMz932#' Make.inc
%endif %endif
sed -i 's#-march=z196#-march=z9-109 -mtune=z196#' Make.inc sed -i 's#-march=z196#-march=z9-109 -mtune=z196#' Make.inc
@ -446,12 +460,12 @@ for type in %{types}; do
sed -i 's#-DATL_ARCH_IBMz10#-DATL_ARCH_IBMz9#' Make.inc sed -i 's#-DATL_ARCH_IBMz10#-DATL_ARCH_IBMz9#' Make.inc
# sed -i 's#-DATL_ARCH_IBMz9#-DATL_ARCH_IBMz9#' Make.inc # sed -i 's#-DATL_ARCH_IBMz9#-DATL_ARCH_IBMz9#' Make.inc
elif [ "$type" = "z10" ]; then elif [ "$type" = "z10" ]; then
%ifarch s390x %ifarch s390x
# cat Make.inc | grep "ARCH =" # cat Make.inc | grep "ARCH ="
sed -i 's#ARCH =.*#ARCH = IBMz1064#' Make.inc sed -i 's#ARCH =.*#ARCH = IBMz1064#' Make.inc
%endif %endif
%ifarch s390 %ifarch s390
sed -i 's#ARCH =.*#ARCH = IBMz1032#' Make.inc sed -i 's#ARCH =.*#ARCH = IBMz1032#' Make.inc
# cat Make.inc | grep "ARCH =" # cat Make.inc | grep "ARCH ="
%endif %endif
@ -463,10 +477,10 @@ for type in %{types}; do
%define pr_z10 %(echo $((%{__isa_bits}+1))) %define pr_z10 %(echo $((%{__isa_bits}+1)))
elif [ "$type" = "z196" ]; then elif [ "$type" = "z196" ]; then
%ifarch s390x %ifarch s390x
sed -i 's#ARCH =.*#ARCH = IBMz19664#' Make.inc sed -i 's#ARCH =.*#ARCH = IBMz19664#' Make.inc
%endif %endif
%ifarch s390 %ifarch s390
sed -i 's#ARCH =.*#ARCH = IBMz19632#' Make.inc sed -i 's#ARCH =.*#ARCH = IBMz19632#' Make.inc
%endif %endif
sed -i 's#-march=z196#-march=z10 -mtune=z196#' Make.inc sed -i 's#-march=z196#-march=z10 -mtune=z196#' Make.inc
@ -504,7 +518,7 @@ for type in %{types}; do
popd popd
done done
%install %install
for type in %{types}; do for type in %{types}; do
pushd %{_arch}_${type} pushd %{_arch}_${type}
make DESTDIR=%{buildroot} install make DESTDIR=%{buildroot} install
@ -848,6 +862,9 @@ fi
%endif %endif
%changelog %changelog
* Sat Feb 07 2015 Susi Lehtola <jussilehtola@fedoraproject.org> - 3.10.1-18
- Really do the unbundling of lapack.
* Mon Feb 02 2015 Frantisek Kluknavsky <fkluknav@redhat.com> - 3.10.1-17 * Mon Feb 02 2015 Frantisek Kluknavsky <fkluknav@redhat.com> - 3.10.1-17
- rebuild with new lapack, https://bugzilla.redhat.com/show_bug.cgi?id=1149032 - rebuild with new lapack, https://bugzilla.redhat.com/show_bug.cgi?id=1149032
@ -971,10 +988,10 @@ fi
- Fix typo in SSE3 subpackage's summary. - Fix typo in SSE3 subpackage's summary.
* Sat Oct 24 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-12 * Sat Oct 24 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-12
- Use alternatives to workaround multilib conflicts (BZ#508565). - Use alternatives to workaround multilib conflicts (BZ#508565).
* Tue Sep 29 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-11 * Tue Sep 29 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-11
- Obsolete the -header subpackage properly. - Obsolete the -header subpackage properly.
* Sat Sep 26 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-10 * Sat Sep 26 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-10
- Use the new arch. default for Pentium PRO (Fedora bug #510498) - Use the new arch. default for Pentium PRO (Fedora bug #510498)
@ -984,10 +1001,10 @@ fi
- Rebuild against fixed lapack (see #520518) - Rebuild against fixed lapack (see #520518)
* Thu Aug 13 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-8 * Thu Aug 13 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-8
- Revert the last change, it doesn't solve the problem. - Revert the last change, it doesn't solve the problem.
* Tue Aug 04 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-7 * Tue Aug 04 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-7
- Create a -header subpackage to avoid multilib conflicts (BZ#508565). - Create a -header subpackage to avoid multilib conflicts (BZ#508565).
* Tue Aug 04 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-6 * Tue Aug 04 2009 Deji Akingunola <dakingun@gmail.com> - 3.8.3-6
- Add '-g' to build flag to allow proper genration of debuginfo subpackages (Fedora bug #509813) - Add '-g' to build flag to allow proper genration of debuginfo subpackages (Fedora bug #509813)

View File

@ -11,4 +11,3 @@ ebb4732aff468bbc223e7f734252173b USII32.tgz
f3e4ca175b5ffc49dce7f3c37f791827 IBMz964.tar.bz2 f3e4ca175b5ffc49dce7f3c37f791827 IBMz964.tar.bz2
27e7baa49c588299260188afa78303dc POWER332.tar.bz2 27e7baa49c588299260188afa78303dc POWER332.tar.bz2
af1f95e19d7afaf0342fb1377ec94817 ARMv732NEON.tar.bz2 af1f95e19d7afaf0342fb1377ec94817 ARMv732NEON.tar.bz2
e7ba742120bd75339ac4c6fbdd8bce92 lapack-3.5.0.tgz