The package rpms/elpa.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/elpa.git/commit/?id=c30e951a488a3...
https://src.fedoraproject.org/cgit/rpms/elpa.git/commit/?id=628963a739bf4...
https://src.fedoraproject.org/cgit/rpms/elpa.git/commit/?id=4a8eeb5c40304....
Change:
+%ifnarch i686
-%ifnarch %{arm}
-%ifnarch i686 x86_64
Thanks.
Full change:
============
commit c30e951a488a3dc1ca01a64b6e1c91e3cbb393c9
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Sat Jan 6 17:45:39 2018 +0100
re-enable running testsuite in %check
- reduce testsuite runtime per upstream recommendation
- disable testing under OpenMPI for now (rhbz#1512229)
diff --git a/elpa.spec b/elpa.spec
index 8747b57..357e107 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -8,7 +8,7 @@
%global with_papi 1
%endif
-%bcond_with check
+%bcond_without check
%global sover 8
@@ -246,23 +246,28 @@ done
echo ".so elpa2_print_kernels.1" >
%{buildroot}%{_mandir}/man1/elpa2_print_kernels_openmp.1
# testsuite takes:
-# 30 hours on aarch64 (all PASS)
-# 44 hours on armv7hl (all PASS)
-# 30 hours on i686 (serial/mpich PASS, openmpi hang)
-# 6 hours on ppc64le (18/50 FAIL for serial+openmp, 25/73 FAIL for mpich+openmp)
-# 8 hours on ppc64 (all PASS)
-# 11 hours on s390x (25/50 FAIL for serial, 39/73 FAIL for mpi)
-# 16 hours on x86_64 (all PASS)
+# 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
. /etc/profile.d/modules.sh
for s in '' _openmp ; do
+# openmpi tests get randomly stuck on i686
https://bugzilla.redhat.com/show_bug.cgi?id=1512229
+%ifnarch i686
for mpi in '' mpich openmpi ; do
+%else
+ for mpi in '' mpich ; do
+%endif
pushd ${s:-.}/${mpi:-serial}
if [ -n "$mpi" ]; then
module load mpi/${mpi}-%{_arch}
fi
- make check V=1 || cat ./test-suite.log
+ make check V=1 TEST_FLAGS="500 150 16" || cat ./test-suite.log
if [ -n "$mpi" ]; then
module unload mpi/${mpi}-%{_arch}
fi
@@ -352,9 +357,11 @@ done
- 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 disable by default as they take too long
+- 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(a)fedoraproject.org> -
2015.11.001-8
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
commit 4a8eeb5c403049cdfd8874f79ea1f61db1b9ee4d
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Sat Jan 6 17:19:07 2018 +0100
disable all non-generic kernels on non-x86_64 for now
diff --git a/elpa.spec b/elpa.spec
index c4b03c4..8747b57 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -197,10 +197,8 @@ for mpi in '' mpich openmpi ; do
%ifnarch x86_64
--disable-sse-assembly \
--disable-sse \
- --disable-avx2 \
-%endif
-%ifnarch i686 x86_64
--disable-avx \
+ --disable-avx2 \
%endif
${s:+--enable-openmp} \
%if %{with papi}
@@ -356,6 +354,7 @@ done
- include and verify GPG signature
- conditionalize running tests and disable by default as they take too long
- split out API documentation and headers into -common-devel subpackage
+- disable all non-generic kernels on non-x86_64 for now
* Wed Aug 02 2017 Fedora Release Engineering <releng(a)fedoraproject.org> -
2015.11.001-8
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
commit c223fc96a1d6aad8fd68d283ec5d7402eaf4242e
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Sat Jan 6 17:17:01 2018 +0100
split out API documentation and headers into -common-devel subpackage
diff --git a/elpa.spec b/elpa.spec
index fb820a5..c4b03c4 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -66,9 +66,21 @@ eigenvalue problems.
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
@@ -95,7 +107,7 @@ This package contains ELPA built against MPICH.
Summary: Development files for ELPA (MPICH version)
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran%{?_isa}
-Requires: %{name}-devel = %{version}-%{release}
+Requires: %{name}-common-devel = %{version}-%{release}
Provides: %{name}-mpi-devel = %{version}-%{release}
%description mpich-devel
@@ -127,7 +139,7 @@ This package contains ELPA built against OpenMPI.
Summary: Development files for ELPA (OpenMPI version)
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
Requires: gcc-gfortran%{?_isa}
-Requires: %{name}-devel = %{version}-%{release}
+Requires: %{name}-common-devel = %{version}-%{release}
Provides: %{name}-mpi-devel = %{version}-%{release}
%description openmpi-devel
@@ -288,7 +300,7 @@ done
%{_mandir}/man1/elpa2_print_kernels.1*
%{_mandir}/man1/elpa2_print_kernels_openmp.1*
-%files devel
+%files common-devel
%{_includedir}/elpa-%{version}
%{_includedir}/elpa_openmp-%{version}
%{_pkgdocdir}/Changelog
@@ -298,6 +310,8 @@ done
%{_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
@@ -341,6 +355,7 @@ done
- execstack is now available everywhere
- include and verify GPG signature
- conditionalize running tests and disable by default as they take too long
+- split out API documentation and headers into -common-devel subpackage
* Wed Aug 02 2017 Fedora Release Engineering <releng(a)fedoraproject.org> -
2015.11.001-8
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
commit c31644c052768b702833ad3220fd8b80e28490f4
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Tue Nov 14 12:34:45 2017 +0100
update testsuite runtimes and results in comment
diff --git a/elpa.spec b/elpa.spec
index 1b976f1..fb820a5 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -236,9 +236,9 @@ done
echo ".so elpa2_print_kernels.1" >
%{buildroot}%{_mandir}/man1/elpa2_print_kernels_openmp.1
# testsuite takes:
-# 24 hours on aarch64 (all PASS)
-# 36 hours on armv7hl (all PASS)
-# 30 hours on i686 (openmpi hang)
+# 30 hours on aarch64 (all PASS)
+# 44 hours on armv7hl (all PASS)
+# 30 hours on i686 (serial/mpich PASS, openmpi hang)
# 6 hours on ppc64le (18/50 FAIL for serial+openmp, 25/73 FAIL for mpich+openmp)
# 8 hours on ppc64 (all PASS)
# 11 hours on s390x (25/50 FAIL for serial, 39/73 FAIL for mpi)
commit 1dfc029b598719f26aea242b00c5200e9dd0751e
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Tue Nov 14 10:18:00 2017 +0100
cosmetics: adjust identation after previous commit
diff --git a/elpa.spec b/elpa.spec
index 434f403..1b976f1 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -200,7 +200,7 @@ for mpi in '' mpich openmpi ; do
popd
done
if [ -n "$mpi" ]; then
- module unload mpi/${mpi}-%{_arch}
+ module unload mpi/${mpi}-%{_arch}
fi
done
@@ -215,8 +215,8 @@ for s in '' _openmp ; do
module load mpi/${mpi}-%{_arch}
libdir=%{_libdir}/${mpi}/lib
fmoddir=$MPI_FORTRAN_MOD_DIR
- mkdir -p %{buildroot}$MPI_BIN
- mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}$MPI_BIN
+ mkdir -p %{buildroot}$MPI_BIN
+ mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}$MPI_BIN
module unload mpi/${mpi}-%{_arch}
else
libdir=%{_libdir}
@@ -252,11 +252,11 @@ for s in '' _openmp ; do
if [ -n "$mpi" ]; then
module load mpi/${mpi}-%{_arch}
fi
-make check V=1 || cat ./test-suite.log
+ make check V=1 || cat ./test-suite.log
if [ -n "$mpi" ]; then
module unload mpi/${mpi}-%{_arch}
fi
-popd
+ popd
done
done
%endif
commit 628963a739bf45dc366a3a34c8cf2bb3ae991b1b
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Tue Nov 14 10:16:56 2017 +0100
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 disable by default as they take too long
diff --git a/.gitignore b/.gitignore
index fc43a0a..aa35092 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,5 @@
/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
diff --git a/elpa-blas.patch b/elpa-blas.patch
deleted file mode 100644
index a9a0c5d..0000000
--- a/elpa-blas.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up mpich/configure.ac.atlas mpich/configure.ac
---- mpich/configure.ac.atlas 2015-03-19 12:45:07.946282074 +0100
-+++ mpich/configure.ac 2015-03-19 12:45:07.955282120 +0100
-@@ -335,7 +335,7 @@ if test x"${have_mkl}" = x"yes" ; then
- else
-
- dnl first check blas
-- AC_SEARCH_LIBS([dgemm],[blas],[have_blas=yes],[have_blas=no])
-+ AC_SEARCH_LIBS([dgemm],[openblas satlas blas],[have_blas=yes],[have_blas=no])
- AC_MSG_CHECKING([whether we can link a program with a blas lib])
- AC_MSG_RESULT([${have_blas}])
-
diff --git a/elpa-onenode.patch b/elpa-onenode.patch
new file mode 100644
index 0000000..d4a6b04
--- /dev/null
+++ b/elpa-onenode.patch
@@ -0,0 +1,36 @@
+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"
+
diff --git a/elpa-papi.patch b/elpa-papi.patch
new file mode 100644
index 0000000..0d3a846
--- /dev/null
+++ b/elpa-papi.patch
@@ -0,0 +1,19 @@
+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
diff --git a/elpa-simd.patch b/elpa-simd.patch
index 18a2102..9e78b89 100644
--- a/elpa-simd.patch
+++ b/elpa-simd.patch
@@ -1,85 +1,77 @@
diff -up mpich/configure.ac.simd mpich/configure.ac
---- mpich/configure.ac.simd 2017-06-12 15:45:53.001455666 +0200
-+++ mpich/configure.ac 2017-06-12 15:46:18.131946972 +0200
-@@ -196,6 +196,10 @@ AC_MSG_RESULT([${can_compile_sse}])
+--- 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
- dnl check whether one can compile with avx - gcc intrinsics
+ AC_LANG_PUSH([C])
+save_CFLAGS="$CFLAGS"
-+save_CXXFLAGS="$CXXFLAGS"
-+CFLAGS="$CFLAGS -mavx"
-+
- dnl first pass: try with specified CFLAGS and CXXFLAGS
- AC_MSG_CHECKING([whether we can compile AVX intrinsics in C])
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([
-@@ -211,6 +215,8 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
- )
- AC_MSG_RESULT([${can_compile_avx}])
- if test "${can_compile_avx}" = "yes" ; then
-+ AVXCFLAGS="-mavx"
-+ CXXFLAGS="$CXXFLAGS -mavx"
- AC_MSG_CHECKING([whether we can compile AVX intrinsics in C++])
- AC_LANG_PUSH([C++])
++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([
-@@ -228,9 +234,15 @@ if test "${can_compile_avx}" = "yes" ; t
- AC_MSG_RESULT([${can_compile_avx}])
- if test "${can_compile_avx}" = "no" ; then
- AC_MSG_WARN([Cannot compile C++ with AVX: disabling AVX alltogether])
-+ else
-+ AVXCXXFLAGS="-mavx"
+@@ -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"
-+CFLAGS=$save_CFLAGS
-+CXXFLAGS=$save_CXXFLAGS
-+CFLAGS="$CFLAGS -mavx2 -mfma"
-+
- AC_MSG_CHECKING([whether we can compile AVX2 intrinsics in C])
- AC_COMPILE_IFELSE([AC_LANG_SOURCE([
- #include <x86intrin.h>
-@@ -246,6 +258,8 @@ AC_COMPILE_IFELSE([AC_LANG_SOURCE([
- )
- AC_MSG_RESULT([${can_compile_avx2}])
- if test "${can_compile_avx2}" = "yes" ; then
-+ AVX2CFLAGS="-mavx2 -mfma"
-+ CXXFLAGS="$CXXFLAGS -mavx2 -mfma"
- AC_MSG_CHECKING([whether we can compile AVX2 intrinsics in C++])
- AC_LANG_PUSH([C++])
+
+ 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([
-@@ -264,9 +278,13 @@ if test "${can_compile_avx2}" = "yes" ;
- AC_MSG_RESULT([${can_compile_avx2}])
- if test "${can_compile_avx2}" = "no" ; then
- AC_MSG_WARN([Cannot compile C++ with AVX2!])
-+ else
-+ AVX2CXXFLAGS="-mavx2 -mfma"
+ #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
-+CFLAGS=$save_CFLAGS
-+CXXFLAGS=$save_CXXFLAGS
- if test "${can_compile_avx}" = "yes" ; then
- install_real_avx_block2=yes
-@@ -669,6 +687,10 @@ AC_SUBST([OPENMP_CFLAGS])
- AC_SUBST([OPENMP_FCFLAGS])
- AC_SUBST([OPENMP_LDFLAGS])
- #AC_SUBST(OPT_FCFLAGS)
+ 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([AVXCXXFLAGS])
+AC_SUBST([AVX2CFLAGS])
-+AC_SUBST([AVX2CXXFLAGS])
-
- rm -rf modules/ .fortran_dependencies/
- mkdir modules
+ 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 2015-11-22 20:05:49.000000000 +0100
-+++ mpich/Makefile.am 2017-06-12 15:45:53.002455686 +0200
-@@ -8,6 +8,8 @@ AM_LDFLAGS = $(SCALAPACK_LDFLAGS)
- # libelpa
- lib_LTLIBRARIES = libelpa@SUFFIX@.la
- libelpa@SUFFIX@_la_LINK = $(FCLINK) $(AM_LDFLAGS) -version-info $(ELPA_SO_VERSION)
-lstdc++
-+libelpa@SUFFIX@_la_CFLAGS = $(AVXCFLAGS) $(AVX2CFLAGS) $(AM_CFLAGS)
-+libelpa@SUFFIX@_la_CXXFLAGS = $(AVXCXXFLAGS) $(AVX2CXXFLAGS) $(AM_CFLAGS)
-
- libelpa@SUFFIX@_la_SOURCES = src/elpa_utilities.F90 \
- src/elpa1.F90 \
+--- 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(a)_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 \
diff --git a/elpa.spec b/elpa.spec
index 9f96be3..434f403 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -1,33 +1,29 @@
-%if 0%{?fedora} >= 26
-%ifnarch x86_64 %{ix86} armv7hl %{power64} aarch64
+%{!?openblas_arches:%global openblas_arches x86_64 %{ix86} armv7hl %{power64} aarch64
s390x}
+%ifnarch %{openblas_arches}
# matches openblas/scalapack ExclusiveArch
%global with_atlas 1
%endif
-%else
-%global with_atlas 1
-%endif
-%if 0%{?rhel}
-# execstack (prelink) is built only for x86_64 and ppc64 on RHEL
-%ifarch x86_64 ppc64
-%global with_execstack 1
-%endif
-%else
-%global with_execstack 1
+%ifnarch s390 s390x
+%global with_papi 1
%endif
-%global sover 4
+%bcond_with check
+
+%global sover 8
Summary: High-performance library for parallel solution of eigenvalue problems
Name: elpa
-Version: 2015.11.001
-Release: 8%{?dist}
+Version: 2017.05.003
+Release: 1%{?dist}
URL:
https://elpa.mpcdf.mpg.de/software
Source0:
https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz
-# fix pkgconfig file
-Patch1: elpa-pc.patch
-# build against atlas instead of reference blas
-Patch2: elpa-blas.patch
+Source1:
https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz...
+Source2: gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg
+# drop _onenode suffix from non-MPI builds
+Patch1: elpa-onenode.patch
+# fix detection of papi
+Patch2: elpa-papi.patch
# fix detection of AVX(2) compiler support and use them only in the library
Patch3: elpa-simd.patch
License: LGPLv3+
@@ -37,10 +33,13 @@ BuildRequires: atlas-devel
BuildRequires: openblas-devel
%endif
BuildRequires: gcc-gfortran
+BuildRequires: gnupg2
BuildRequires: libtool
-%if %{with execstack}
BuildRequires: /usr/bin/execstack
+%if %{with papi}
+BuildRequires: papi-devel
%endif
+Requires: %{name}-common = %{version}-%{release}
%description
ELPA is a Fortran-based high-performance computational library for the
@@ -68,16 +67,15 @@ eigenvalue problems.
This package contains common files for ELPA.
%package devel
-Summary: C header files for ELPA
-BuildArch: noarch
-Requires: %{name}-mpi-devel = %{version}-%{release}
+Summary: Development files for ELPA (non-MPI version)
+Requires: %{name}%{?_isa} = %{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 C header files for ELPA.
+This package contains the development files for ELPA (non-MPI version).
%package mpich
Summary: Fast library for parallel solution of eigenvalue problems (MPICH version)
@@ -110,7 +108,9 @@ This package contains the development files for ELPA (MPICH version).
%package openmpi
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: blacs-openmpi-devel
BuildRequires: scalapack-openmpi-devel
@@ -138,17 +138,19 @@ eigenvalue problems.
This package contains the development files for ELPA (OpenMPI version).
%prep
+gpgv2 --keyring %{S:2} %{S:1} %{S:0}
%setup -q -c -T -a 0
mv elpa-%{version} mpich
pushd mpich
-%patch1 -p1 -b .r
-%patch2 -p1 -b .blas
+%patch1 -p1 -b .onenode
+%patch2 -p1 -b .papi
%patch3 -p1 -b .simd
autoreconf -vifs
popd
cp -pr mpich openmpi
+cp -pr mpich serial
mkdir _openmp
-cp -pr mpich openmpi _openmp/
+cp -pr mpich openmpi serial _openmp/
%build
%global defopts --disable-silent-rules --disable-static --docdir=%{_pkgdocdir}
@@ -160,71 +162,109 @@ cp -pr mpich openmpi _openmp/
. /etc/profile.d/modules.sh
-for mpi in mpich openmpi ; do
- module load mpi/${mpi}-%{_arch}
+for mpi in '' mpich openmpi ; do
export CFLAGS="%{optflags}"
- export LDFLAGS="%{ldflags} -L$MPI_LIB"
- export FCFLAGS="%{fcflags} -I$MPI_FORTRAN_MOD_DIR"
+ export LDFLAGS="%{ldflags}"
+ export FCFLAGS="%{fcflags}"
+ if [ -n "$mpi" ]; then
+ 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}
- sed -i -e "s,@MPI_FORTRAN_MOD_DIR@,$MPI_FORTRAN_MOD_DIR," elpa.pc.in
+ 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-avx2 \
+%endif
+%ifnarch i686 x86_64
+ --disable-avx \
+%endif
${s:+--enable-openmp} \
- --libdir=$MPI_LIB
+%if %{with papi}
+ --with-papi \
+%endif
+ $mpiflag || cat config.log
make %{?_smp_mflags} V=1
popd
done
+ if [ -n "$mpi" ]; then
module unload mpi/${mpi}-%{_arch}
+ fi
done
%install
. /etc/profile.d/modules.sh
for s in '' _openmp ; do
- for mpi in mpich openmpi ; do
- module load mpi/${mpi}-%{_arch}
- pushd ${s:-.}/${mpi}
+# install serial last to avoid overwriting non-MPI binaries in _bindir
+ for mpi in mpich openmpi '' ; do
+ pushd ${s:-.}/${mpi:-serial}
make DESTDIR=%{buildroot} install
- rm %{buildroot}%{_bindir}/elpa?_test_*
+ if [ -n "$mpi" ]; then
+ module load mpi/${mpi}-%{_arch}
+ libdir=%{_libdir}/${mpi}/lib
+ fmoddir=$MPI_FORTRAN_MOD_DIR
mkdir -p %{buildroot}$MPI_BIN
mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}$MPI_BIN
-%if %{with execstack}
- execstack -c .libs/libelpa${s}.so.%{sover}.*
%{buildroot}%{_libdir}/${mpi}/lib/libelpa${s}.so.%{sover}.*
-%endif
- mkdir -p %{buildroot}$MPI_FORTRAN_MOD_DIR
+ module unload mpi/${mpi}-%{_arch}
+ 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}$MPI_FORTRAN_MOD_DIR/${m}${s}.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}/${mpi}/lib/libelpa${s}.la
+ rm %{buildroot}${libdir}/libelpa${s}.la
popd
- module unload mpi/${mpi}-%{_arch}
done
done
-
-# testsuite takes 6.5 hours on ARMv7
-%ifnarch %{arm}
-%if 1
+echo ".so elpa2_print_kernels.1" >
%{buildroot}%{_mandir}/man1/elpa2_print_kernels_openmp.1
+
+# testsuite takes:
+# 24 hours on aarch64 (all PASS)
+# 36 hours on armv7hl (all PASS)
+# 30 hours on i686 (openmpi hang)
+# 6 hours on ppc64le (18/50 FAIL for serial+openmp, 25/73 FAIL for mpich+openmp)
+# 8 hours on ppc64 (all PASS)
+# 11 hours on s390x (25/50 FAIL for serial, 39/73 FAIL for mpi)
+# 16 hours on x86_64 (all PASS)
+%if %{with check}
%check
-%{_mpich_load}
-pushd mpich
-make check V=1 || cat ./test-suite.log
-popd
-pushd _openmp/mpich
-make check V=1 || cat ./test-suite.log
-popd
-%{_mpich_unload}
-
-# only non-mt openmpi build can be tested, see bug #1105902
-%{_openmpi_load}
-pushd openmpi
+. /etc/profile.d/modules.sh
+for s in '' _openmp ; do
+ for mpi in '' mpich openmpi ; do
+ pushd ${s:-.}/${mpi:-serial}
+ if [ -n "$mpi" ]; then
+ module load mpi/${mpi}-%{_arch}
+ fi
make check V=1 || cat ./test-suite.log
+ if [ -n "$mpi" ]; then
+ module unload mpi/${mpi}-%{_arch}
+ fi
popd
-%{_openmpi_unload}
-%endif
+ done
+done
%endif
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
%post mpich -p /sbin/ldconfig
%postun mpich -p /sbin/ldconfig
@@ -233,16 +273,36 @@ popd
%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
%license %{_pkgdocdir}/COPYING
+%license %{_pkgdocdir}/LICENSE
%license %{_pkgdocdir}/gpl.txt
%license %{_pkgdocdir}/lgpl.txt
-%{_pkgdocdir}/README
+%{_pkgdocdir}/README.md
+%{_mandir}/man1/elpa2_print_kernels.1*
+%{_mandir}/man1/elpa2_print_kernels_openmp.1*
%files devel
%{_includedir}/elpa-%{version}
%{_includedir}/elpa_openmp-%{version}
-%{_pkgdocdir}/examples
+%{_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*
+%{_libdir}/libelpa.so
+%{_libdir}/libelpa_openmp.so
+%{_libdir}/pkgconfig/elpa-%{version}.pc
+%{_libdir}/pkgconfig/elpa_openmp-%{version}.pc
+%{_fmoddir}/*.mod
%files mpich
%{_libdir}/mpich/bin/elpa2_print_kernels
@@ -257,22 +317,31 @@ popd
%{_libdir}/mpich/lib/pkgconfig/elpa_openmp-%{version}.pc
%{_fmoddir}/mpich*/*.mod
-# only non-mt openmpi build, see bug #1105902
%files openmpi
%{_libdir}/openmpi/bin/elpa2_print_kernels
-%exclude %{_libdir}/openmpi/bin/elpa2_print_kernels_openmp
+%{_libdir}/openmpi/bin/elpa2_print_kernels_openmp
%{_libdir}/openmpi/lib/libelpa.so.%{sover}*
-%exclude %{_libdir}/openmpi/lib/libelpa_openmp.so.%{sover}*
+%{_libdir}/openmpi/lib/libelpa_openmp.so.%{sover}*
%files openmpi-devel
%{_libdir}/openmpi/lib/libelpa.so
-%exclude %{_libdir}/openmpi/lib/libelpa_openmp.so
+%{_libdir}/openmpi/lib/libelpa_openmp.so
%{_libdir}/openmpi/lib/pkgconfig/elpa-%{version}.pc
-%exclude %{_libdir}/openmpi/lib/pkgconfig/elpa_openmp-%{version}.pc
+%{_libdir}/openmpi/lib/pkgconfig/elpa_openmp-%{version}.pc
%{_fmoddir}/openmpi*/*.mod
-%exclude %{_fmoddir}/openmpi*/*_openmp.mod
%changelog
+* Fri Nov 10 2017 Dominik Mierzejewski <rpm(a)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 disable by default as they take too long
+
* Wed Aug 02 2017 Fedora Release Engineering <releng(a)fedoraproject.org> -
2015.11.001-8
- Rebuilt for
https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
diff --git a/gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg
b/gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg
new file mode 100644
index 0000000..5adb4f8
Binary files /dev/null and b/gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg
differ
diff --git a/sources b/sources
index 8ab1086..e59075b 100644
--- a/sources
+++ b/sources
@@ -1 +1,2 @@
-de0f35b7ee7c971fd0dca35c900b87e6 elpa-2015.11.001.tar.gz
+SHA512 (elpa-2017.05.003.tar.gz) =
0d8876af09e45050319a047989ae5312859ec5d0cc09cdf349737235a9d9b815a46774a192cdd3bb2d87e223733c60fc196b21f8671c6cc56666ad9ef3d72676
+SHA512 (elpa-2017.05.003.tar.gz.asc) =
b3e62fe83ea31885ab9396e3d072abe07b4fc0ed7729261d6b1a8a868113e935a33734591b80af841b392657b33a702028d67278803691e43641bb2d4202c57a
commit 7a75eac0947d6c384e43a950dea141d71a3d44c6
Author: Dominik 'Rathann' Mierzejewski <dominik(a)greysector.net>
Date: Mon Oct 30 15:27:10 2017 +0100
factorize so version handling
diff --git a/elpa.spec b/elpa.spec
index 8c47006..9f96be3 100644
--- a/elpa.spec
+++ b/elpa.spec
@@ -16,6 +16,8 @@
%global with_execstack 1
%endif
+%global sover 4
+
Summary: High-performance library for parallel solution of eigenvalue problems
Name: elpa
Version: 2015.11.001
@@ -187,7 +189,7 @@ for s in '' _openmp ; do
mkdir -p %{buildroot}$MPI_BIN
mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}$MPI_BIN
%if %{with execstack}
- execstack -c .libs/libelpa${s}.so.?.*
%{buildroot}%{_libdir}/${mpi}/lib/libelpa${s}.so.?.*
+ execstack -c .libs/libelpa${s}.so.%{sover}.*
%{buildroot}%{_libdir}/${mpi}/lib/libelpa${s}.so.%{sover}.*
%endif
mkdir -p %{buildroot}$MPI_FORTRAN_MOD_DIR
for f in $(ls -1 %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/*.mod) ; do
@@ -245,8 +247,8 @@ popd
%files mpich
%{_libdir}/mpich/bin/elpa2_print_kernels
%{_libdir}/mpich/bin/elpa2_print_kernels_openmp
-%{_libdir}/mpich/lib/libelpa.so.4*
-%{_libdir}/mpich/lib/libelpa_openmp.so.4*
+%{_libdir}/mpich/lib/libelpa.so.%{sover}*
+%{_libdir}/mpich/lib/libelpa_openmp.so.%{sover}*
%files mpich-devel
%{_libdir}/mpich/lib/libelpa.so
@@ -259,8 +261,8 @@ popd
%files openmpi
%{_libdir}/openmpi/bin/elpa2_print_kernels
%exclude %{_libdir}/openmpi/bin/elpa2_print_kernels_openmp
-%{_libdir}/openmpi/lib/libelpa.so.4*
-%exclude %{_libdir}/openmpi/lib/libelpa_openmp.so.4*
+%{_libdir}/openmpi/lib/libelpa.so.%{sover}*
+%exclude %{_libdir}/openmpi/lib/libelpa_openmp.so.%{sover}*
%files openmpi-devel
%{_libdir}/openmpi/lib/libelpa.so