Compare commits

..

3 Commits
master ... f19

Author SHA1 Message Date
Dominik Mierzejewski
c8f4e5ab00 disable tests on i686 with mpich
They don't seem to complete in time.
2014-07-03 19:43:43 +02:00
Dominik 'Rathann' Mierzejewski
3495c34d52 Add rsh BR to fix failing regtests with openmpi 2014-07-02 14:47:56 +02:00
Dominik 'Rathann' Mierzejewski
78a085cd54 initial import on f20 branch 2014-07-01 23:41:50 +02:00
11 changed files with 263 additions and 481 deletions

5
.gitignore vendored
View File

@ -1,6 +1 @@
/ELPA_2013.11.008_20140321.tar.gz /ELPA_2013.11.008_20140321.tar.gz
/elpa-2015.02.002.tar.gz
/elpa-2015.05.001.tar.gz
/elpa-2015.11.001.tar.gz
/elpa-2017.05.003.tar.gz
/elpa-2017.05.003.tar.gz.asc

12
elpa-atlas.patch Normal file
View File

@ -0,0 +1,12 @@
diff -up mpich/configure.ac.blacs mpich/configure.ac
--- mpich/configure.ac.blacs 2014-03-21 12:10:21.000000001 +0100
+++ mpich/configure.ac 2014-06-29 22:47:36.214804126 +0200
@@ -274,7 +274,7 @@ if test "x${can_link_with_mkl}" = "xyes"
else
dnl first check blas
- AC_SEARCH_LIBS([dgemm],[blas],[can_link_with_blas=yes],[can_link_with_blas=no])
+ AC_SEARCH_LIBS([dgemm],[f77blas blas],[can_link_with_blas=yes],[can_link_with_blas=no],[-lf77blas -latlas])
AC_MSG_CHECKING([whether we can link a program with a blas lib])
AC_MSG_RESULT([${can_link_with_blas}])

21
elpa-blacs.patch Normal file
View File

@ -0,0 +1,21 @@
diff -up mpich/configure.ac.blacs mpich/configure.ac
--- mpich/configure.ac.blacs 2014-03-21 12:10:21.000000001 +0100
+++ mpich/configure.ac 2014-06-29 22:47:36.214804126 +0200
@@ -291,7 +291,7 @@ else
fi
dnl now blacs
- AC_SEARCH_LIBS([blacs_gridinit],[mpiblacs],[can_link_with_blacs=yes],[can_link_with_blacs=no])
+ AC_SEARCH_LIBS([blacs_gridinit],[mpiblacs],[can_link_with_blacs=yes],[can_link_with_blacs=no],[-lmpiblacsF77init])
AC_MSG_CHECKING([whether we can link a program with a blacs lib])
AC_MSG_RESULT([${can_link_with_blacs}])
@@ -300,7 +300,7 @@ else
fi
dnl now scalapack
- AC_SEARCH_LIBS([pdtran],[mpiscalapack],[can_link_with_scalapack=yes],[can_link_with_scalapack=no])
+ AC_SEARCH_LIBS([pdtran],[mpiscalapack scalapack],[can_link_with_scalapack=yes],[can_link_with_scalapack=no],[-lmpiblacsF77init])
AC_MSG_CHECKING([whether we can link a program with a scalapack lib])
AC_MSG_RESULT([${can_link_with_scalapack}])

View File

@ -1,36 +0,0 @@
diff -up mpich/configure.ac.onenode mpich/configure.ac
--- mpich/configure.ac.onenode 2017-09-01 08:54:37.000000000 +0200
+++ mpich/configure.ac 2017-10-30 15:23:40.886476457 +0100
@@ -948,19 +948,11 @@ mkdir -p modules private_modules test_mo
# into "postdeps_FC" and causes linking errors later on.
postdeps_FC=$(echo $postdeps_FC | sed 's/-l //g')
-if test x"${with_mpi}" = x"yes"; then
if test x"${enable_openmp}" = x"yes"; then
SUFFIX="_openmp"
else
SUFFIX=""
fi
-else
- if test x"${enable_openmp}" = x"yes"; then
- SUFFIX="_onenode_openmp"
- else
- SUFFIX="_onenode"
- fi
-fi
AC_SUBST([SUFFIX])
AC_SUBST([PKG_CONFIG_FILE],[elpa${SUFFIX}-${PACKAGE_VERSION}.pc])
diff -up mpich/INSTALL.md.onenode mpich/INSTALL.md
--- mpich/INSTALL.md.onenode 2017-09-01 08:54:37.000000000 +0200
+++ mpich/INSTALL.md 2017-10-30 15:23:40.886476457 +0100
@@ -151,9 +151,6 @@ configure FC=gfortran --with-mpi=0
DO NOT specify a MPI compiler here!
-Note, that the the installed *ELPA* library files will be suffixed with
-"_onenode", in order to descriminate this build from possible ones with MPI.
-
Please continue reading at "C) Enabling GPU support"

View File

@ -1,19 +0,0 @@
diff -up mpich/configure.ac.papi mpich/configure.ac
--- mpich/configure.ac.papi 2017-09-01 08:54:37.000000000 +0200
+++ mpich/configure.ac 2017-10-18 00:25:55.531438089 +0200
@@ -188,6 +188,7 @@ fi
AM_CONDITIONAL([HAVE_DETAILED_TIMINGS], [test x"$enable_timings" = x"yes"])
dnl PAPI for ftimings
+AC_LANG_PUSH([C])
AC_ARG_WITH([papi],
[AS_HELP_STRING([--with-papi],
[Use PAPI to also measure flop count in the detailed timing (--enable-timing), disabled by default])],
@@ -202,6 +203,7 @@ if test x"${enable_timings}" = x"yes"; t
AC_DEFINE([HAVE_LIBPAPI], [1], [Use the PAPI library])
fi
fi
+AC_LANG_POP([C])
save_FCFLAGS=$FCFLAGS
save_LDFLAGS=$LDFLAGS

View File

@ -1,9 +0,0 @@
diff -up mpich/elpa.pc.in.r mpich/elpa.pc.in
--- mpich/elpa.pc.in.r 2015-03-16 11:39:51.000000000 +0100
+++ mpich/elpa.pc.in 2015-03-20 10:59:37.966517510 +0100
@@ -9,4 +9,4 @@ Version: @PACKAGE_VERSION@
URL: @PACKAGE_URL@
Libs: -L${libdir} -lelpa@SUFFIX@ @LIBS@ @OPENMP_FCFLAGS@
Cflags: -I${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@ @OPENMP_CFLAGS@
-fcflags= -I${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@/modules @OPENMP_FCFLAGS@
+fcflags= -I@MPI_FORTRAN_MOD_DIR@ @OPENMP_FCFLAGS@

92
elpa-rpm.patch Normal file
View File

@ -0,0 +1,92 @@
diff -up mpich/configure.ac.r mpich/configure.ac
--- mpich/configure.ac.r 2014-06-26 12:57:49.488978955 +0200
+++ mpich/configure.ac 2014-06-26 12:57:49.489978947 +0200
@@ -374,6 +374,7 @@ mkdir modules
AC_CONFIG_FILES([
Makefile
elpa.pc:elpa.pc.in
+ elpa_mt.pc:elpa_mt.pc.in
])
AC_OUTPUT
grep "^#define" config.h > config-f90.h
diff -up mpich/elpa_mt.pc.in.r mpich/elpa_mt.pc.in
--- mpich/elpa_mt.pc.in.r 2014-06-26 12:57:49.489978947 +0200
+++ mpich/elpa_mt.pc.in 2014-06-26 12:57:49.489978947 +0200
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: @PACKAGE_NAME@
+Description: ELPA is a Fortran-based high-performance computational library for the (massively) parallel solution of symmetric or Hermitian, standard or generalized eigenvalue problems.
+Version: @PACKAGE_VERSION@
+URL: @PACKAGE_URL@
+Libs: -L${libdir} -lelpa_mt
+fcflags= -I${libdir}/gfortran/modules
diff -up mpich/elpa.pc.in.r mpich/elpa.pc.in
--- mpich/elpa.pc.in.r 2013-10-28 15:48:06.000000001 +0100
+++ mpich/elpa.pc.in 2014-06-26 12:57:49.489978947 +0200
@@ -7,6 +7,5 @@ Name: @PACKAGE_NAME@
Description: ELPA is a Fortran-based high-performance computational library for the (massively) parallel solution of symmetric or Hermitian, standard or generalized eigenvalue problems.
Version: @PACKAGE_VERSION@
URL: @PACKAGE_URL@
-Libs: -L${libdir} -lelpa-@ELPA_LIB_VERSION@
-Cflags: -I${includedir}/elpa-@ELPA_LIB_VERSION@
-fcflags= -I${includedir}/elpa-@ELPA_LIB_VERSION@/modules
+Libs: -L${libdir} -lelpa
+fcflags= -I${libdir}/gfortran/modules
diff -up mpich/Makefile.am.r mpich/Makefile.am
--- mpich/Makefile.am.r 2014-02-27 14:47:20.000000001 +0100
+++ mpich/Makefile.am 2014-06-26 13:05:18.698163114 +0200
@@ -19,8 +19,14 @@ endif
if WITH_OPENMP
libelpa_mt_la_SOURCES = src/elpa1.F90 src/elpa2.F90
+libelpa_mt_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(FC) $(AM_FCLAGS) \
+ $(FCFLAGS) $(libelpa_la_LDFLAGS) $(LDFLAGS) -o $@
else
libelpa_la_SOURCES = src/elpa1.F90 src/elpa2.F90
+libelpa_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=FC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(FC) $(AM_FCLAGS) \
+ $(FCFLAGS) $(libelpa_la_LDFLAGS) $(LDFLAGS) -o $@
endif
if WITH_GENERIC_SIMPLE
@@ -164,7 +170,11 @@ files_DATA = \
# pkg-config stuff
pkgconfigdir = $(libdir)/pkgconfig
+if WITH_OPENMP
+pkgconfig_DATA = elpa_mt.pc
+else
pkgconfig_DATA = elpa.pc
+endif
# test programs
if WITH_OPENMP
@@ -193,19 +203,19 @@ check_SCRIPTS = test_real.sh test_real2.
TESTS = $(check_SCRIPTS)
test_real.sh:
- echo "mpiexec -n 2 ./test_real > /dev/null 2>&1" > test_real.sh
+ echo "mpiexec -n `getconf _NPROCESSORS_ONLN` ./test_real > /dev/null 2>&1" > test_real.sh
chmod +x test_real.sh
test_real2.sh:
- echo "mpiexec -n 2 ./test_real2 > /dev/null 2>&1" > test_real2.sh
+ echo "mpiexec -n `getconf _NPROCESSORS_ONLN` ./test_real2 > /dev/null 2>&1" > test_real2.sh
chmod +x test_real2.sh
test_complex.sh:
- echo "mpiexec -n 2 ./test_complex > /dev/null 2>&1" > test_complex.sh
+ echo "mpiexec -n `getconf _NPROCESSORS_ONLN` ./test_complex > /dev/null 2>&1" > test_complex.sh
chmod +x test_complex.sh
test_complex2.sh:
- echo "mpiexec -n 2 ./test_complex2 > /dev/null 2>&1" > test_complex2.sh
+ echo "mpiexec -n `getconf _NPROCESSORS_ONLN` ./test_complex2 > /dev/null 2>&1" > test_complex2.sh
chmod +x test_complex2.sh

View File

@ -1,77 +0,0 @@
diff -up mpich/configure.ac.simd mpich/configure.ac
--- mpich/configure.ac.simd 2017-10-30 14:41:22.320909606 +0100
+++ mpich/configure.ac 2017-10-30 14:41:22.322909621 +0100
@@ -668,6 +668,8 @@ m4_foreach_w([elpa_m4_kind],[real comple
AC_LANG_PUSH([C])
+save_CFLAGS="$CFLAGS"
+CFLAGS="$CFLAGS -msse3"
if test x"${need_sse}" = x"yes"; then
AC_MSG_CHECKING(whether we can compile SSE3 with gcc intrinsics in C)
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
@@ -686,7 +688,9 @@ int main(int argc, char **argv) {
AC_MSG_ERROR([Could not compile test program, try with --disable-sse, or adjust the C compiler or CFLAGS])
fi
AC_DEFINE([HAVE_SSE_INTRINSICS],[1],[gcc intrinsics SSE is supported on this CPU])
+ SSE3CFLAGS="-msse3"
fi
+CFLAGS="$save_CFLAGS"
if test x"${need_sse_assembly}" = x"yes"; then
@@ -728,6 +732,8 @@ fi
if test x"${need_avx}" = x"yes"; then
dnl check whether one can compile AVX gcc intrinsics
AC_MSG_CHECKING([whether we can compile AVX gcc intrinsics in C])
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -mavx"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
int main(int argc, char **argv){
@@ -744,11 +750,15 @@ if test x"${need_avx}" = x"yes"; then
AC_MSG_ERROR([Could not compile a test program with AVX, try with --disable-avx, or adjust the C compiler or CFLAGS])
fi
AC_DEFINE([HAVE_AVX],[1],[AVX is supported on this CPU])
+ AVXCFLAGS="-mavx"
+ CFLAGS="$save_CFLAGS"
fi
if test x"${need_avx2}" = x"yes"; then
AC_MSG_CHECKING([whether we can compile AVX2 gcc intrinsics in C])
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -mavx2 -mfma"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
int main(int argc, char **argv){
@@ -766,6 +776,8 @@ if test x"${need_avx2}" = x"yes"; then
AC_MSG_ERROR([Could not compile a test program with AVX2, try with --disable-avx2, or adjust the C compiler or CFLAGS])
fi
AC_DEFINE([HAVE_AVX2],[1],[AVX2 is supported on this CPU])
+ AVX2CFLAGS="-mavx2 -mfma"
+ CFLAGS="$save_CFLAGS"
fi
@@ -923,6 +935,9 @@ AC_SUBST([WITH_MKL])
AC_SUBST([WITH_BLACS])
AC_SUBST([FC_MODINC])
AC_SUBST([FC_MODOUT])
+AC_SUBST([SSE3CFLAGS])
+AC_SUBST([AVXCFLAGS])
+AC_SUBST([AVX2CFLAGS])
AC_SUBST([OPENMP_CFLAGS])
AC_SUBST([OPENMP_FCFLAGS])
AC_SUBST([OPENMP_LDFLAGS])
diff -up mpich/Makefile.am.simd mpich/Makefile.am
--- mpich/Makefile.am.simd 2017-09-01 08:54:37.000000000 +0200
+++ mpich/Makefile.am 2017-10-30 14:41:22.322909621 +0100
@@ -33,6 +33,7 @@ endif
# internal parts
noinst_LTLIBRARIES += libelpa@SUFFIX@_private.la
libelpa@SUFFIX@_private_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
+libelpa@SUFFIX@_private_la_CFLAGS = $(SSE3CFLAGS) $(AVXCFLAGS) $(AVX2CFLAGS) $(AM_CFLAGS)
libelpa@SUFFIX@_private_la_SOURCES = \
src/elpa_impl.F90 \
src/elpa_abstract_impl.F90 \

470
elpa.spec
View File

@ -1,45 +1,24 @@
%{!?openblas_arches:%global openblas_arches x86_64 %{ix86} armv7hl %{power64} aarch64 s390x} %global rel 008
%ifnarch %{openblas_arches} %global snap 20140321
# matches openblas/scalapack ExclusiveArch
%global with_atlas 1
%endif
%ifnarch s390 s390x
%global with_papi 1
%endif
%bcond_without check
%global sover 8
Summary: High-performance library for parallel solution of eigenvalue problems Summary: High-performance library for parallel solution of eigenvalue problems
Name: elpa Name: elpa
Version: 2017.05.003 Version: 2013.11
Release: 3%{?dist} Release: 3.%{rel}%{?dist}
URL: https://elpa.mpcdf.mpg.de/software URL: http://elpa.rzg.mpg.de/
Source0: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz # http://elpa.rzg.mpg.de/elpa-tar-archive/elpa-2013-11.006/at_download/file
Source1: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz.asc Source0: ELPA_%{version}.%{rel}_%{snap}.tar.gz
Source2: gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg # fix blacs/scalapack detection on <F21
# drop _onenode suffix from non-MPI builds Patch0: elpa-blacs.patch
Patch1: elpa-onenode.patch # fix pkgconfig files and linking against mpi libraries
# fix detection of papi Patch1: elpa-rpm.patch
Patch2: elpa-papi.patch # build against atlas instead of reference blas
# fix detection of AVX(2) compiler support and use them only in the library Patch2: elpa-atlas.patch
Patch3: elpa-simd.patch
License: LGPLv3+ License: LGPLv3+
%if %{with atlas}
BuildRequires: atlas-devel BuildRequires: atlas-devel
%else
BuildRequires: openblas-devel
%endif
BuildRequires: gcc-gfortran BuildRequires: gcc-gfortran
BuildRequires: gnupg2
BuildRequires: libtool BuildRequires: libtool
BuildRequires: /usr/bin/execstack BuildRequires: prelink
%if %{with papi}
BuildRequires: papi-devel
%endif
Requires: %{name}-common = %{version}-%{release}
%description %description
ELPA is a Fortran-based high-performance computational library for the ELPA is a Fortran-based high-performance computational library for the
@ -66,34 +45,13 @@ eigenvalue problems.
This package contains common files for ELPA. This package contains common files for ELPA.
%package common-devel
Summary: Common development files for ELPA (non-MPI version)
Requires: %{name}-common = %{version}-%{release}
%description common-devel
ELPA is a Fortran-based high-performance computational library for the
(massively) parallel solution of symmetric or Hermitian, standard or generalized
eigenvalue problems.
This package contains the common development files for ELPA (non-MPI version).
%package devel
Summary: Development files for ELPA (non-MPI version)
Requires: %{name}%{?_isa} = %{version}-%{release}
Requires: %{name}-common-devel = %{version}-%{release}
%description devel
ELPA is a Fortran-based high-performance computational library for the
(massively) parallel solution of symmetric or Hermitian, standard or generalized
eigenvalue problems.
This package contains the development files for ELPA (non-MPI version).
%package mpich %package mpich
Summary: Fast library for parallel solution of eigenvalue problems (MPICH version) Summary: Fast library for parallel solution of eigenvalue problems (MPICH version)
BuildRequires: mpich-devel BuildRequires: mpich-devel
BuildRequires: blacs-mpich-devel BuildRequires: blacs-mpich-devel
BuildRequires: scalapack-mpich-devel BuildRequires: scalapack-mpich-devel
Requires: blacs-mpich
Requires: scalapack-mpich
Requires: %{name}-common = %{version}-%{release} Requires: %{name}-common = %{version}-%{release}
%description mpich %description mpich
@ -106,9 +64,7 @@ This package contains ELPA built against MPICH.
%package mpich-devel %package mpich-devel
Summary: Development files for ELPA (MPICH version) Summary: Development files for ELPA (MPICH version)
Requires: %{name}-mpich%{?_isa} = %{version}-%{release} Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran%{?_isa} Requires: gcc-gfortran%{_isa}
Requires: %{name}-common-devel = %{version}-%{release}
Provides: %{name}-mpi-devel = %{version}-%{release}
%description mpich-devel %description mpich-devel
ELPA is a Fortran-based high-performance computational library for the ELPA is a Fortran-based high-performance computational library for the
@ -119,13 +75,13 @@ This package contains the development files for ELPA (MPICH version).
%package openmpi %package openmpi
Summary: Fast library for parallel solution of eigenvalue problems (OpenMPI version) Summary: Fast library for parallel solution of eigenvalue problems (OpenMPI version)
# required for running the testsuite
%if %{with check}
BuildRequires: rsh
%endif
BuildRequires: openmpi-devel BuildRequires: openmpi-devel
BuildRequires: blacs-openmpi-devel BuildRequires: blacs-openmpi-devel
BuildRequires: scalapack-openmpi-devel BuildRequires: scalapack-openmpi-devel
# for regression tests using openmpi
BuildRequires: rsh
Requires: blacs-openmpi
Requires: scalapack-openmpi
Requires: %{name}-common = %{version}-%{release} Requires: %{name}-common = %{version}-%{release}
%description openmpi %description openmpi
@ -138,9 +94,7 @@ This package contains ELPA built against OpenMPI.
%package openmpi-devel %package openmpi-devel
Summary: Development files for ELPA (OpenMPI version) Summary: Development files for ELPA (OpenMPI version)
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release} Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran%{?_isa} Requires: gcc-gfortran%{_isa}
Requires: %{name}-common-devel = %{version}-%{release}
Provides: %{name}-mpi-devel = %{version}-%{release}
%description openmpi-devel %description openmpi-devel
ELPA is a Fortran-based high-performance computational library for the ELPA is a Fortran-based high-performance computational library for the
@ -149,136 +103,121 @@ eigenvalue problems.
This package contains the development files for ELPA (OpenMPI version). This package contains the development files for ELPA (OpenMPI version).
%global configure_in \\\
%configure \\\
--disable-silent-rules \\\
--disable-static \\\
%ifarch x86_64 \
--with-sse-assembler \\\
%else \
--with-generic \\\
%endif \
%prep %prep
gpgv2 --keyring %{S:2} %{S:1} %{S:0}
%setup -q -c -T -a 0 %setup -q -c -T -a 0
mv elpa-%{version} mpich mv ELPA_%{version} mpich
pushd mpich pushd mpich
%patch1 -p1 -b .onenode %patch0 -p1 -b .blacs
%patch2 -p1 -b .papi %patch1 -p1 -b .r
%patch3 -p1 -b .simd %patch2 -p1 -b .atlas
autoreconf -vifs autoreconf -vifs
popd popd
cp -pr mpich openmpi cp -pr mpich openmpi
cp -pr mpich serial mkdir _mt
mkdir _openmp cp -pr mpich openmpi _mt/
cp -pr mpich openmpi serial _openmp/
%build %build
%global defopts --disable-silent-rules --disable-static --docdir=%{_pkgdocdir} export LDFLAGS="-L%{_libdir}/atlas"
%global ldflags %{__global_ldflags} export BLACS_LDFLAGS="-lmpiblacs -lmpiblacsF77init"
%if %{with atlas} export FCFLAGS=-ffree-line-length-none
%global ldflags %{ldflags} -L%{_libdir}/atlas
%endif
%global fcflags %{optflags} -I%{_fmoddir} -ffree-line-length-none
. /etc/profile.d/modules.sh %{_mpich_load}
export LDFLAGS="$LDFLAGS -L$MPI_LIB"
pushd mpich
%configure_in \
--libdir=%{_libdir}/mpich%{?_opt_cc_suffix}/lib
for mpi in '' mpich openmpi ; do # work around libtool bug
export CFLAGS="%{optflags}" sed -i -e 's/-l -l //' libtool
export LDFLAGS="%{ldflags}" make
export FCFLAGS="%{fcflags}" # %{?_smp_mflags}
if [ -n "$mpi" ]; then popd
module load mpi/${mpi}-%{_arch}
export LDFLAGS="${LDFLAGS} -L$MPI_LIB"
export FCFLAGS="${FCFLAGS} -I$MPI_FORTRAN_MOD_DIR"
fi
for s in '' _openmp ; do
pushd ${s:-.}/${mpi:-serial}
if [ -n "$mpi" ]; then
fmoddir="$MPI_FORTRAN_MOD_DIR"
mpiflag="--libdir=$MPI_LIB"
else
fmoddir="%{_fmoddir}"
mpiflag="--with-mpi=no"
fi
sed -i -e "s,\${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@/modules,${fmoddir}," elpa.pc.in
%configure %{defopts} \
%ifnarch x86_64
--disable-sse-assembly \
--disable-sse \
--disable-avx \
--disable-avx2 \
%endif
${s:+--enable-openmp} \
%if %{with papi}
--with-papi \
%endif
$mpiflag || cat config.log
make %{?_smp_mflags} V=1 pushd _mt/mpich
popd %configure_in \
done --with-openmp \
if [ -n "$mpi" ]; then --libdir=%{_libdir}/mpich%{?_opt_cc_suffix}/lib
module unload mpi/${mpi}-%{_arch}
fi # work around libtool bug
done sed -i -e 's/-l -l //' libtool
make
# %{?_smp_mflags}
popd
%{_mpich_unload}
%{_openmpi_load}
export LDFLAGS="$LDFLAGS -L$MPI_LIB"
pushd openmpi
%configure_in \
--libdir=%{_libdir}/openmpi%{?_opt_cc_suffix}/lib
# work around libtool bug
sed -i -e 's/-l -l //' libtool
make
# %{?_smp_mflags}
popd
pushd _mt/openmpi
%configure_in \
--with-openmp \
--libdir=%{_libdir}/openmpi%{?_opt_cc_suffix}/lib
# work around libtool bug
sed -i -e 's/-l -l //' libtool
make
# %{?_smp_mflags}
popd
%{_openmpi_unload}
%install %install
. /etc/profile.d/modules.sh for s in '' _mt ; do
for s in '' _openmp ; do for mpi in mpich openmpi ; do
# install serial last to avoid overwriting non-MPI binaries in _bindir pushd ${s:-.}/${mpi}
for mpi in mpich openmpi '' ; do
pushd ${s:-.}/${mpi:-serial}
make DESTDIR=%{buildroot} install make DESTDIR=%{buildroot} install
if [ -n "$mpi" ]; then execstack -c .libs/libelpa${s}.so.0.* %{buildroot}%{_libdir}/${mpi}%{?_opt_cc_suffix}/lib/libelpa${s}.so.0.*
module load mpi/${mpi}-%{_arch} mkdir -p %{buildroot}%{_fmoddir}/${mpi}%{?_opt_cc_suffix}
libdir=%{_libdir}/${mpi}/lib mv %{buildroot}%{_includedir}/elpa/modules/elpa1.mod %{buildroot}%{_fmoddir}/${mpi}%{?_cc_name_suffix}/elpa1${s}.mod
fmoddir=$MPI_FORTRAN_MOD_DIR mv %{buildroot}%{_includedir}/elpa/modules/elpa2.mod %{buildroot}%{_fmoddir}/${mpi}%{?_cc_name_suffix}/elpa2${s}.mod
mkdir -p %{buildroot}$MPI_BIN rm %{buildroot}%{_libdir}/${mpi}%{?_opt_cc_suffix}/lib/libelpa${s}.la
mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}$MPI_BIN # fix-up fcflags include path per mpi implementation
module unload mpi/${mpi}-%{_arch} sed -i -e "/^fcflags.*modules/s,$,/${mpi}," %{buildroot}%{_libdir}/${mpi}/lib/pkgconfig/elpa${s}.pc
else
libdir=%{_libdir}
fmoddir=%{_fmoddir}
fi
execstack -c .libs/libelpa${s}.so.%{sover}.* %{buildroot}${libdir}/libelpa${s}.so.%{sover}.*
mkdir -p %{buildroot}${fmoddir}
for f in $(ls -1 %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/*.mod) ; do
m=$(basename ${f} .mod)
mv %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/${m}.mod %{buildroot}${fmoddir}/${m}${s}.mod
done
rmdir %{buildroot}%{_includedir}/elpa${s}-%{version}/modules
rm %{buildroot}${libdir}/libelpa${s}.la
popd popd
done done
done done
echo ".so elpa2_print_kernels.1" > %{buildroot}%{_mandir}/man1/elpa2_print_kernels_openmp.1 rm %{buildroot}%{_datadir}/*.F90
rm %{buildroot}%{_bindir}/test*
# testsuite takes: %if 1
# 1 hour on aarch64 (all PASS)
# 1 hour on armv7hl (all PASS)
# 1 hour on i686 (serial/mpich PASS, OpenMPI disabled)
# 1 hour on ppc64le ( 9/50 FAIL for serial+openmp, 4/73 FAIL for mpich+openmp)
# 1 hour on ppc64 ( 1/50 FAIL for serial+openmp)
# 1 hour on s390x (25/50 FAIL for serial, 39/73 FAIL for mpi)
# 3 hours on x86_64 (all PASS)
%if %{with check}
%check %check
. /etc/profile.d/modules.sh # tests on i686 with mpich never complete, disable for now
for s in '' _openmp ; do
# openmpi tests get randomly stuck on i686 https://bugzilla.redhat.com/show_bug.cgi?id=1512229
%ifnarch i686 %ifnarch i686
for mpi in '' mpich openmpi ; do %{_mpich_load}
%else pushd mpich
for mpi in '' mpich ; do make check
%endif popd
pushd ${s:-.}/${mpi:-serial} pushd _mt/mpich
if [ -n "$mpi" ]; then make check
module load mpi/${mpi}-%{_arch} popd
fi %{_mpich_unload}
make check V=1 TEST_FLAGS="500 150 16" || cat ./test-suite.log
if [ -n "$mpi" ]; then
module unload mpi/${mpi}-%{_arch}
fi
popd
done
done
%endif %endif
%post -p /sbin/ldconfig # only non-mt openmpi build can be tested, see bug #1105902
%{_openmpi_load}
%postun -p /sbin/ldconfig pushd openmpi
make check
popd
%{_openmpi_unload}
%endif
%post mpich -p /sbin/ldconfig %post mpich -p /sbin/ldconfig
@ -288,174 +227,39 @@ done
%postun openmpi -p /sbin/ldconfig %postun openmpi -p /sbin/ldconfig
%files
%{_bindir}/elpa2_print_kernels
%{_bindir}/elpa2_print_kernels_openmp
%{_libdir}/libelpa.so.%{sover}*
%{_libdir}/libelpa_openmp.so.%{sover}*
%files common %files common
%license %{_pkgdocdir}/COPYING %doc mpich/COPYING/* mpich/README
%license %{_pkgdocdir}/LICENSE
%license %{_pkgdocdir}/gpl.txt
%license %{_pkgdocdir}/lgpl.txt
%{_pkgdocdir}/README.md
%{_mandir}/man1/elpa2_print_kernels.1*
%{_mandir}/man1/elpa2_print_kernels_openmp.1*
%files common-devel
%{_includedir}/elpa-%{version}
%{_includedir}/elpa_openmp-%{version}
%{_pkgdocdir}/Changelog
%{_pkgdocdir}/CONTRIBUTING.md
%exclude %{_pkgdocdir}/INSTALL.md
%{_pkgdocdir}/USERS_GUIDE.md
%{_mandir}/man3/elpa_*.3*
%{_mandir}/man3/get_elpa_*.3*
%{_mandir}/man3/solve_evp_*.3*
%files devel
%{_libdir}/libelpa.so
%{_libdir}/libelpa_openmp.so
%{_libdir}/pkgconfig/elpa-%{version}.pc
%{_libdir}/pkgconfig/elpa_openmp-%{version}.pc
%{_fmoddir}/*.mod
%files mpich %files mpich
%{_libdir}/mpich/bin/elpa2_print_kernels %{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa.so.0*
%{_libdir}/mpich/bin/elpa2_print_kernels_openmp %{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa_mt.so.0*
%{_libdir}/mpich/lib/libelpa.so.%{sover}*
%{_libdir}/mpich/lib/libelpa_openmp.so.%{sover}*
%files mpich-devel %files mpich-devel
%{_libdir}/mpich/lib/libelpa.so %{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa.so
%{_libdir}/mpich/lib/libelpa_openmp.so %{_libdir}/mpich%{?_opt_cc_suffix}/lib/libelpa_mt.so
%{_libdir}/mpich/lib/pkgconfig/elpa-%{version}.pc %{_libdir}/mpich%{?_opt_cc_suffix}/lib/pkgconfig/elpa.pc
%{_libdir}/mpich/lib/pkgconfig/elpa_openmp-%{version}.pc %{_libdir}/mpich%{?_opt_cc_suffix}/lib/pkgconfig/elpa_mt.pc
%{_fmoddir}/mpich*/*.mod %{_fmoddir}/mpich%{?_cc_name_suffix}/elpa1.mod
%{_fmoddir}/mpich%{?_cc_name_suffix}/elpa2.mod
%{_fmoddir}/mpich%{?_cc_name_suffix}/elpa1_mt.mod
%{_fmoddir}/mpich%{?_cc_name_suffix}/elpa2_mt.mod
# only non-mt openmpi build, see bug #1105902
%files openmpi %files openmpi
%{_libdir}/openmpi/bin/elpa2_print_kernels %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa.so.0*
%{_libdir}/openmpi/bin/elpa2_print_kernels_openmp %exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa_mt.so.0*
%{_libdir}/openmpi/lib/libelpa.so.%{sover}*
%{_libdir}/openmpi/lib/libelpa_openmp.so.%{sover}*
%files openmpi-devel %files openmpi-devel
%{_libdir}/openmpi/lib/libelpa.so %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa.so
%{_libdir}/openmpi/lib/libelpa_openmp.so %exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/libelpa_mt.so
%{_libdir}/openmpi/lib/pkgconfig/elpa-%{version}.pc %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/pkgconfig/elpa.pc
%{_libdir}/openmpi/lib/pkgconfig/elpa_openmp-%{version}.pc %exclude %{_libdir}/openmpi%{?_opt_cc_suffix}/lib/pkgconfig/elpa_mt.pc
%{_fmoddir}/openmpi*/*.mod %{_fmoddir}/openmpi%{?_cc_name_suffix}/elpa1.mod
%{_fmoddir}/openmpi%{?_cc_name_suffix}/elpa2.mod
%exclude %{_fmoddir}/openmpi%{?_cc_name_suffix}/elpa1_mt.mod
%exclude %{_fmoddir}/openmpi%{?_cc_name_suffix}/elpa2_mt.mod
%changelog %changelog
* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2017.05.003-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2017.05.003-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Fri Nov 10 2017 Dominik Mierzejewski <rpm@greysector.net> 2017.05.003-1
- update to 2017.05.003 (ABI and API break)
- drop obsolete openblas patch
- re-enable OpenMPI OpenMP builds
- enable papi on supported arches
- build and ship non-MPI version (without _onenode suffix)
- provide a man-link for openmp version of elpa2_print_kernels
- execstack is now available everywhere
- include and verify GPG signature
- conditionalize running tests and reduce testsuite runtime per upstream
recommendation
- split out API documentation and headers into -common-devel subpackage
- disable all non-generic kernels on non-x86_64 for now
- disable testing under OpenMPI for now (rhbz#1512229)
* Wed Aug 02 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2015.11.001-8
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
* Wed Jul 26 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2015.11.001-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
* Mon Jun 12 2017 Dominik Mierzejewski <rpm@greysector.net> 2015.11.001-6
- fix AVX2 instructions usage enablement (#1383412)
* Sun Jun 11 2017 Dominik Mierzejewski <rpm@greysector.net> 2015.11.001-5
- update URL and Source URL, switch to https
- factorize build process
- fix Fortran mods path (#1409235)
- build against openblas on supported arches to match scalapack
- don't run the testsuite on ARM 32bit (takes 6.5 hours)
- execstack is not available on some arches for EPEL (#1460531)
* Fri Feb 10 2017 Fedora Release Engineering <releng@fedoraproject.org> - 2015.11.001-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Sun Nov 13 2016 Peter Robinson <pbrobinson@fedoraproject.org> 2015.11.001-3
- Rebuild (Power64)
* Fri Oct 21 2016 Orion Poplawski <orion@cora.nwra.com> - 2015.11.001-2
- Rebuild for openmpi 2.0
* Sun Apr 03 2016 Dominik Mierzejewski <rpm@greysector.net> 2015.11.001-1
- update to 2015.11.001 release
- update URL and Source URL
- fix AVX(2) support detection and usage
- drop condition around execstack usage, it's available everywhere now
- drop _opt_cc_suffix usage and factor out more stuff into common macros
* Wed Feb 03 2016 Fedora Release Engineering <releng@fedoraproject.org> - 2015.05.001-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
* Tue Sep 15 2015 Orion Poplawski <orion@cora.nwra.com> - 2015.05.001-3
- Rebuild for openmpi 1.10.0
* Mon Aug 10 2015 Sandro Mani <manisandro@gmail.com> - 2015.05.001-2
- Rebuild for RPM MPI Requires Provides Change
* Thu Aug 06 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.05.001-1
- update to 2015.05.001 release
- don't use all available cores for the testsuite (interferes with OpenMP)
(work around #1220161)
- drop obsolete comments and rename patch0 appropriately
- fix AVX support detection
* Tue Aug 04 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2015.02.002-6
- Use new execstack (#1247795)
* Wed Jun 17 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2015.02.002-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
* Mon May 04 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.02.002-4
- fix build on EPEL7 (missing _pkgdocdir macro and BR: rsh for openmpi)
- move examples to -devel subpackage
- print whole testsuite log in case of test failure
- re-enable openmpi tests on i686 and armv7hl
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 2015.02.002-3
- Rebuilt for GCC 5 C++11 ABI change
* Mon Mar 23 2015 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 2015.02.002-2
- Rebuild for fortran update (#1204420)
* Thu Mar 19 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.02.002-1
- update to 2015.02.002 release (ABI change)
- drop libtool bug workaround
- make builds more verbose
- take advantage of upstream build system improvements
- ship C headers in -devel subpackage
* Mon Mar 16 2015 Thomas Spura <tomspur@fedoraproject.org> - 2013.11-6.008
- Rebuild for changed mpich libraries
* Tue Sep 16 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-5.008
- fix release string broken by previous bump by releng script
- disable openmpi tests on armv7hl (bug #1144408)
* Sat Aug 16 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2013.11-4.9
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
* Thu Jul 3 2014 Peter Robinson <pbrobinson@fedoraproject.org> 2013.11-4.008
- aarch64/ppc64le don't have prelink
* Sun Jun 29 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-3.008 * Sun Jun 29 2014 Dominik Mierzejewski <rpm@greysector.net> 2013.11-3.008
- fix typo in execstack -c call - fix typo in execstack -c call
- link against atlas - link against atlas

View File

@ -1,2 +1 @@
SHA512 (elpa-2017.05.003.tar.gz) = 0d8876af09e45050319a047989ae5312859ec5d0cc09cdf349737235a9d9b815a46774a192cdd3bb2d87e223733c60fc196b21f8671c6cc56666ad9ef3d72676 3252a6b370239a27afec8c6c47360442 ELPA_2013.11.008_20140321.tar.gz
SHA512 (elpa-2017.05.003.tar.gz.asc) = b3e62fe83ea31885ab9396e3d072abe07b4fc0ed7729261d6b1a8a868113e935a33734591b80af841b392657b33a702028d67278803691e43641bb2d4202c57a