From 8a1f9ddb2c27d7d28bb574d86718bcfbb4345683 Mon Sep 17 00:00:00 2001 From: Deji Akingunola Date: Jun 15 2011 20:17:53 +0000 Subject: Update to 3.8.4 Build the default package for SSE2 and add a SSE3 subpackage on x86_64 Apply patch (and arch defs.) to build on s390 and s390x (Dan Horák) Fix-up build on s390 and s390x (Christian Bornträger) --- diff --git a/README.Fedora b/README.Fedora index 19cd5ba..09ab711 100644 --- a/README.Fedora +++ b/README.Fedora @@ -6,6 +6,9 @@ updated: October 4, 2005 updated by Deji Akingunola October 15, 2008 +updated by Deji Akingunola +June 15, 2011 + Because ATLAS relies on compile-time optimizations to obtain improved performance over BLAS and LAPACK, the resulting binaries are closely tied to the hardware on which they are compiled, and can likely result @@ -38,9 +41,15 @@ lapack libraries that should work as a drop-in replacement for the standard ones (they are installed in /usr/lib{64}/atlas* rather than /usr/lib{64}). -For i386 systems, 4 ATLAS subpackages are built for 3Dnow, SSE1, SSE2, and SSE3 -ix86 extensions, using architectural defaults obtained from Athlon K7, PIII, Pentium 4 with SSE2 extension and PENTIUM 4 with SSE3 extensions respectively. +For 32bit x86 systems, the default atlas package on was built using Pentium Pro +architectural defaults using just x87 math optimization. In addition to the +base 32bit build, 4 ATLAS subpackages are built for 3Dnow, SSE, SSE2, and SSE3 +ix86 extensions, using architectural defaults obtained from Athlon K7, PIII, +Pentium 4 with SSE2 extension and PENTIUM 4 with SSE3 extensions respectively. +On 64bit x86 systems the default atlas package on was built with SSE2 optimization using architetural default made for AMD's HAMMER processor, and an additional +SSE3-enabled subpackage was built also using architetural default made for AMD's HAMMER processor. + This packaging allows multiple installation of different atlas sub-packages at the same time. The alternatives system (read 'man alternatives' for usage) is used in the -devel subpackages to select the appropriate location for the diff --git a/atlas-s390-m31.patch b/atlas-s390-m31.patch deleted file mode 100644 index e48e58b..0000000 --- a/atlas-s390-m31.patch +++ /dev/null @@ -1,30 +0,0 @@ -diff -up ATLAS/CONFIG/src/probe_comp.c.s390 ATLAS/CONFIG/src/probe_comp.c ---- ATLAS/CONFIG/src/probe_comp.c.s390 2009-12-10 13:18:24.000000000 +0100 -+++ ATLAS/CONFIG/src/probe_comp.c 2009-12-10 13:19:17.000000000 +0100 -@@ -535,7 +535,11 @@ char *GetPtrbitsFlag(enum OSTYPE OS, enu - else if (ptrbits == 64) - sp = "-m64"; - else if (ptrbits == 32) -+#ifdef __s390__ -+ sp = "-m31"; -+#else - sp = "-m32"; -+#endif - return(sp); - } - char *GetStandardCompName(char *comp) -diff -up ATLAS/CONFIG/src/SpewMakeInc.c.s390 ATLAS/CONFIG/src/SpewMakeInc.c ---- ATLAS/CONFIG/src/SpewMakeInc.c.s390 2009-12-10 13:22:16.000000000 +0100 -+++ ATLAS/CONFIG/src/SpewMakeInc.c 2009-12-10 13:22:19.000000000 +0100 -@@ -368,7 +368,11 @@ char *GetPtrbitsFlag(enum OSTYPE OS, enu - else if (ptrbits == 64) - sp = "-m64"; - else if (ptrbits == 32) -+#ifdef __s390__ -+ sp = "-m31"; -+#else - sp = "-m32"; -+#endif - return(sp); - } - diff --git a/atlas.spec b/atlas.spec index 58b7b52..68166b1 100644 --- a/atlas.spec +++ b/atlas.spec @@ -1,8 +1,11 @@ %define enable_native_atlas 0 Name: atlas -Version: 3.8.3 -Release: 19%{?dist} +Version: 3.8.4 +%if "%{?enable_native_atlas}" != "0" +%define dist .native +%endif +Release: 1%{?dist} Summary: Automatically Tuned Linear Algebra Software Group: System Environment/Libraries @@ -14,9 +17,12 @@ Source2: K7323DNow.tgz Source3: README.Fedora Source4: USII64.tgz Source5: USII32.tgz +Source6: IBMz1032.tgz +Source7: IBMz1064.tgz +Source8: IBMz19632.tgz +Source9: IBMz19664.tgz Patch0: atlas-fedora_shared.patch -Patch1: atlas-sparc-linux.patch -Patch2: atlas-s390-m31.patch +Patch1: atlas-s390port.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: gcc-gfortran lapack-static @@ -55,30 +61,30 @@ with ATLAS (Automatically Tuned Linear Algebra Software). ############## Subpackages for architecture extensions ################# # %ifarch x86_64 -%define types base sse2 +%define types base sse3 -%package sse2 -Summary: ATLAS libraries for SSE2 extensions +%package sse3 +Summary: ATLAS libraries for SSE3 extensions Group: System Environment/Libraries -%description sse2 +%description sse3 This package contains the ATLAS (Automatically Tuned Linear Algebra -Software) libraries compiled with optimizations for the SSE2 +Software) libraries compiled with optimizations for the SSE3 extensions to the x86_64 architecture. The base ATLAS builds in Fedora for the -x86_64 architecture are made fro the SSE3 extensions. +x86_64 architecture are made for the SSE2 extensions. -%package sse2-devel -Summary: Development libraries for ATLAS with SSE2 extensions +%package sse3-devel +Summary: Development libraries for ATLAS with SSE3 extensions Group: Development/Libraries -Requires: %{name}-sse2 = %{version}-%{release} +Requires: %{name}-sse3 = %{version}-%{release} Obsoletes: %name-header <= %version-%release Requires(posttrans): chkconfig Requires(preun): chkconfig -%description sse2-devel +%description sse3-devel This package contains shared and static versions of the ATLAS (Automatically Tuned Linear Algebra Software) libraries compiled with -optimizations for the SSE2 extensions to the x86_64 architecture. +optimizations for the SSE3 extensions to the x86_64 architecture. %endif @@ -176,18 +182,68 @@ This package contains ATLAS (Automatically Tuned Linear Algebra Software) shared libraries compiled with optimizations for the SSE3 extensions to the ix86 architecture. %endif + +%ifarch s390 s390x +%define types base z10 z196 + +%package z196 +Summary: ATLAS libraries for z196 +Group: System Environment/Libraries + +%description z196 +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) libraries compiled with optimizations for the z196. + +%package z196-devel +Summary: Development libraries for ATLAS for z196 +Group: Development/Libraries +Requires: %{name}-z196 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description z196-devel +This package contains headers and shared versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the z196 architecture. + +%package z10 +Summary: ATLAS libraries for z10 +Group: System Environment/Libraries + +%description z10 +This package contains the ATLAS (Automatically Tuned Linear Algebra +Software) libraries compiled with optimizations for the z10. + +%package z10-devel +Summary: Development libraries for ATLAS for z10 +Group: Development/Libraries +Requires: %{name}-z10 = %{version}-%{release} +Obsoletes: %name-header <= %version-%release +Requires(posttrans): chkconfig +Requires(preun): chkconfig + +%description z10-devel +This package contains headers and shared versions of the ATLAS +(Automatically Tuned Linear Algebra Software) libraries compiled with +optimizations for the z10 architecture. + +%endif %endif %prep %setup -q -n ATLAS %patch0 -p0 -b .shared -#%patch1 -p1 -b .sparc -%patch2 -p1 -b .s390 +%patch1 -p1 -b .s390 cp %{SOURCE1} CONFIG/ARCHS/ cp %{SOURCE2} CONFIG/ARCHS/ cp %{SOURCE3} doc cp %{SOURCE4} CONFIG/ARCHS/ cp %{SOURCE5} CONFIG/ARCHS/ +cp %{SOURCE6} CONFIG/ARCHS/ +cp %{SOURCE7} CONFIG/ARCHS/ +cp %{SOURCE8} CONFIG/ARCHS/ +cp %{SOURCE9} CONFIG/ARCHS/ %build for type in %{types}; do @@ -206,12 +262,15 @@ for type in %{types}; do --with-netlib-lapack=%{_libdir}/liblapack_pic.a \ -Si cputhrchk 0 +%if "%{?enable_native_atlas}" == "0" %ifarch x86_64 - if [ "$type" = "sse2" ]; then + if [ "$type" = "base" ]; then sed -i 's#ARCH =.*#ARCH = HAMMER64SSE2#' Make.inc sed -i 's#-DATL_SSE3##' Make.inc sed -i 's#-msse3#-msse2#' Make.inc - %define pr_sse2 %(echo $((%{__isa_bits}-1))) + elif [ "$type" = "sse3" ]; then + sed -i 's#ARCH =.*#ARCH = HAMMER64SSE3#' Make.inc + %define pr_sse3 %(echo $((%{__isa_bits}+4))) fi %endif @@ -240,6 +299,54 @@ for type in %{types}; do %define pr_sse3 %(echo $((%{__isa_bits}+4))) fi %endif + +%ifarch s390 s390x +# we require a z9/z10/z196 but base,z10 and z196 +# we also need a compiler with -march=z196 support +# the base support will use z196 tuning + if [ "$type" = "base" ]; then + %ifarch s390x + sed -i 's#ARCH =.*#ARCH = IBMz19664#' Make.inc + %endif + %ifarch s390 + sed -i 's#ARCH =.*#ARCH = IBMz19632#' Make.inc + %endif + sed -i 's#-march=z196#-march=z9-109 -mtune=z196#' Make.inc + sed -i 's#-march=z10 -mtune=z196#-march=z9-109 -mtune=z196#' Make.inc + sed -i 's#-march=z10#-march=z9-109 -mtune=z10#' Make.inc + sed -i 's#-DATL_ARCH_IBMz196#-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 + elif [ "$type" = "z10" ]; then + %ifarch s390x + sed -i 's#ARCH =.*#ARCH = IBMz1064#' Make.inc + %endif + %ifarch s390 + sed -i 's#ARCH =.*#ARCH = IBMz1032#' Make.inc + %endif + sed -i 's#-march=z196#-march=z10#' Make.inc + sed -i 's#-march=z10 -mtune=z196#-march=z10#' Make.inc + sed -i 's#-march=z9-109#-march=z10#' Make.inc + sed -i 's#-DATL_ARCH_IBMz196#-DATL_ARCH_IBMz10#' Make.inc + sed -i 's#-DATL_ARCH_IBMz9#-DATL_ARCH_IBMz10#' Make.inc + %define pr_z10 %(echo $((%{__isa_bits}+1))) + elif [ "$type" = "z196" ]; then + %ifarch s390x + sed -i 's#ARCH =.*#ARCH = IBMz19664#' Make.inc + %endif + %ifarch s390 + sed -i 's#ARCH =.*#ARCH = IBMz19632#' Make.inc + %endif + sed -i 's#-mtune=z196#-march=z10 -march=z196#' Make.inc + sed -i 's#-march=z10#-march=z196#' Make.inc + sed -i 's#-march=z9-109#-march=z196#' Make.inc + sed -i 's#-DATL_ARCH_IBMz10#-DATL_ARCH_IBMz196#' Make.inc + sed -i 's#-DATL_ARCH_IBMz9#-DATL_ARCH_IBMz196#' Make.inc + %define pr_z196 %(echo $((%{__isa_bits}+2))) + fi +%endif + +%endif make build cd lib make shared @@ -295,19 +402,19 @@ fi %if "%{?enable_native_atlas}" == "0" %ifarch x86_64 -%post -n atlas-sse2 -p /sbin/ldconfig +%post -n atlas-sse3 -p /sbin/ldconfig -%postun -n atlas-sse2 -p /sbin/ldconfig +%postun -n atlas-sse3 -p /sbin/ldconfig -%posttrans sse2-devel +%posttrans sse3-devel if [ $1 -eq 0 ] ; then /usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ - %{_includedir}/atlas-%{_arch}-sse2 %{pr_sse2} + %{_includedir}/atlas-%{_arch}-sse3 %{pr_sse3} fi -%preun sse2-devel +%preun sse3-devel if [ $1 -ge 0 ] ; then -/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse2 +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-sse3 fi %endif @@ -374,6 +481,40 @@ if [ $1 -ge 0 ] ; then fi %endif + +%ifarch s390 s390x +%post -n atlas-z10 -p /sbin/ldconfig + +%postun -n atlas-z10 -p /sbin/ldconfig + +%posttrans z10-devel +if [ $1 -eq 0 ] ; then +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-z10 %{pr_z10} +fi + +%preun z10-devel +if [ $1 -ge 0 ] ; then +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-z10 +fi + +%post -n atlas-z196 -p /sbin/ldconfig + +%postun -n atlas-z196 -p /sbin/ldconfig + +%posttrans z196-devel +if [ $1 -eq 0 ] ; then +/usr/sbin/alternatives --install %{_includedir}/atlas atlas-inc \ + %{_includedir}/atlas-%{_arch}-z196 %{pr_z196} +fi + +%preun z196-devel +if [ $1 -ge 0 ] ; then +/usr/sbin/alternatives --remove atlas-inc %{_includedir}/atlas-%{_arch}-z196 +fi + +%endif + %endif %files @@ -395,18 +536,18 @@ fi %ifarch x86_64 -%files sse2 +%files sse3 %defattr(-,root,root,-) %doc doc/README.Fedora -%dir %{_libdir}/atlas-sse2 -%{_libdir}/atlas-sse2/*.so.* -%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-sse2.conf +%dir %{_libdir}/atlas-sse3 +%{_libdir}/atlas-sse3/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-sse3.conf -%files sse2-devel +%files sse3-devel %defattr(-,root,root,-) %doc doc -%{_libdir}/atlas-sse2/*.so -%{_includedir}/atlas-%{_arch}-sse2/ +%{_libdir}/atlas-sse3/*.so +%{_includedir}/atlas-%{_arch}-sse3/ %{_includedir}/*.h %ghost %{_includedir}/atlas @@ -475,9 +616,47 @@ fi %ghost %{_includedir}/atlas %endif + +%ifarch s390 s390x +%files z10 +%defattr(-,root,root,-) +%doc doc/README.Fedora +%dir %{_libdir}/atlas-z10 +%{_libdir}/atlas-z10/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-z10.conf + +%files z10-devel +%defattr(-,root,root,-) +%doc doc +%{_libdir}/atlas-z10/*.so +%{_includedir}/atlas-%{_arch}-z10/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas + +%files z196 +%defattr(-,root,root,-) +%doc doc/README.Fedora +%dir %{_libdir}/atlas-z196 +%{_libdir}/atlas-z196/*.so.* +%config(noreplace) /etc/ld.so.conf.d/atlas-%{_arch}-z196.conf + +%files z196-devel +%defattr(-,root,root,-) +%doc doc +%{_libdir}/atlas-z196/*.so +%{_includedir}/atlas-%{_arch}-z196/ +%{_includedir}/*.h +%ghost %{_includedir}/atlas +%endif %endif %changelog +* Tue Jun 14 2011 Deji Akingunola - 3.8.4-1 +- Update to 3.8.4 +- Build the default package for SSE2 and add a SSE3 subpackage on x86_64 +- Apply patch (and arch defs.) to build on s390 and s390x (Dan Horák) +- Fix-up build on s390 and s390x (Christian Bornträger) + * Mon Feb 07 2011 Fedora Release Engineering - Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild diff --git a/sources b/sources index 95752ad..e6a852c 100644 --- a/sources +++ b/sources @@ -1,5 +1,9 @@ -6c13be94a87178e7582111c08e9503bc atlas3.8.3.tar.bz2 -676548252837b1e458181111443f340f PPRO32.tgz +1bb3abde499b492b4be1f1a0759fbfa2 atlas3.8.4.tar.bz2 +9ddf8c76e5e9781c542b712f704460e1 IBMz1032.tgz +ee4cbc1f15cb4cd5f5266969a4bc62a7 IBMz1064.tgz +edd3cb5602c6282e4a30691e728bd064 IBMz19632.tgz +21f630520058859ad0b8b798bd17dc5a IBMz19664.tgz 3f174cdcb4c964843f27dbfc4ad4b1c8 K7323DNow.tgz +676548252837b1e458181111443f340f PPRO32.tgz ebb4732aff468bbc223e7f734252173b USII32.tgz 31f8ae7583d290e5414a1a61ff6e7e39 USII64.tgz