Compare commits

..

No commits in common. "master" and "f24" have entirely different histories.
master ... f24

10 changed files with 199 additions and 376 deletions

2
.gitignore vendored
View File

@ -2,5 +2,3 @@
/elpa-2015.02.002.tar.gz /elpa-2015.02.002.tar.gz
/elpa-2015.05.001.tar.gz /elpa-2015.05.001.tar.gz
/elpa-2015.11.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.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],[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}])

86
elpa-avx.patch Normal file
View File

@ -0,0 +1,86 @@
diff -up mpich/configure.ac.avx mpich/configure.ac
--- mpich/configure.ac.avx 2016-04-03 16:02:10.334634259 +0200
+++ mpich/configure.ac 2016-04-03 16:03:45.419882924 +0200
@@ -196,8 +196,12 @@ AC_MSG_RESULT([${can_compile_sse}])
dnl check whether one can compile with avx - gcc intrinsics
+save_CFLAGS="$CFLAGS"
+save_CXXFLAGS="$CXXFLAGS"
+
dnl first pass: try with specified CFLAGS and CXXFLAGS
AC_MSG_CHECKING([whether we can compile AVX intrinsics in C])
+CFLAGS="$CFLAGS -mavx"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
int main(int argc, char **argv){
@@ -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++])
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
@@ -228,10 +234,16 @@ 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"
fi
fi
+CFLAGS=$save_CFLAGS
+CXXFLAGS=$save_CXXFLAGS
+
AC_MSG_CHECKING([whether we can compile AVX2 intrinsics in C])
+CFLAGS="$CFLAGS -mavx2 -mfma"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([
#include <x86intrin.h>
int main(int argc, char **argv){
@@ -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++])
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"
fi
fi
+CFLAGS=$save_CFLAGS
+CXXFLAGS=$save_CXXFLAGS
if test "${can_compile_avx}" = "yes" ; then
install_real_avx_block2=yes
@@ -669,6 +687,8 @@ AC_SUBST([OPENMP_CFLAGS])
AC_SUBST([OPENMP_FCFLAGS])
AC_SUBST([OPENMP_LDFLAGS])
#AC_SUBST(OPT_FCFLAGS)
+AC_SUBST([AVXCFLAGS])
+AC_SUBST([AVXCXXFLAGS])
rm -rf modules/ .fortran_dependencies/
mkdir modules
diff -up mpich/Makefile.am.avx mpich/Makefile.am
--- mpich/Makefile.am.avx 2015-11-22 20:05:49.000000000 +0100
+++ mpich/Makefile.am 2016-04-03 16:02:10.336634243 +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 \

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

@ -6,4 +6,4 @@ diff -up mpich/elpa.pc.in.r mpich/elpa.pc.in
Libs: -L${libdir} -lelpa@SUFFIX@ @LIBS@ @OPENMP_FCFLAGS@ Libs: -L${libdir} -lelpa@SUFFIX@ @LIBS@ @OPENMP_FCFLAGS@
Cflags: -I${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@ @OPENMP_CFLAGS@ Cflags: -I${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@ @OPENMP_CFLAGS@
-fcflags= -I${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@/modules @OPENMP_FCFLAGS@ -fcflags= -I${includedir}/elpa@SUFFIX@-@PACKAGE_VERSION@/modules @OPENMP_FCFLAGS@
+fcflags= -I@MPI_FORTRAN_MOD_DIR@ @OPENMP_FCFLAGS@ +fcflags= -I${libdir}/gfortran/modules @OPENMP_FCFLAGS@

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 \

338
elpa.spec
View File

@ -1,45 +1,20 @@
%{!?openblas_arches:%global openblas_arches x86_64 %{ix86} armv7hl %{power64} aarch64 s390x}
%ifnarch %{openblas_arches}
# 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: 2015.11.001
Release: 3%{?dist} Release: 1%{?dist}
URL: https://elpa.mpcdf.mpg.de/software URL: http://elpa.mpcdf.mpg.de/software
Source0: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz Source0: http://elpa.mpcdf.mpg.de/elpa-%{version}.tar.gz
Source1: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz.asc # fix pkgconfig file
Source2: gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg Patch1: elpa-pc.patch
# drop _onenode suffix from non-MPI builds # build against atlas instead of reference blas
Patch1: elpa-onenode.patch Patch2: elpa-atlas.patch
# fix detection of papi
Patch2: elpa-papi.patch
# fix detection of AVX(2) compiler support and use them only in the library # fix detection of AVX(2) compiler support and use them only in the library
Patch3: elpa-simd.patch Patch3: elpa-avx.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: /usr/bin/execstack
%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,28 +41,17 @@ 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 %package devel
Summary: Development files for ELPA (non-MPI version) Summary: C header files for ELPA
Requires: %{name}%{?_isa} = %{version}-%{release} BuildArch: noarch
Requires: %{name}-common-devel = %{version}-%{release} Requires: %{name}-mpi-devel = %{version}-%{release}
%description devel %description devel
ELPA is a Fortran-based high-performance computational library for the ELPA is a Fortran-based high-performance computational library for the
(massively) parallel solution of symmetric or Hermitian, standard or generalized (massively) parallel solution of symmetric or Hermitian, standard or generalized
eigenvalue problems. eigenvalue problems.
This package contains the development files for ELPA (non-MPI version). This package contains the C header files for ELPA.
%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)
@ -107,7 +71,7 @@ This package contains ELPA built against MPICH.
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} Requires: %{name}-devel = %{version}-%{release}
Provides: %{name}-mpi-devel = %{version}-%{release} Provides: %{name}-mpi-devel = %{version}-%{release}
%description mpich-devel %description mpich-devel
@ -120,9 +84,7 @@ 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 # required for running the testsuite
%if %{with check}
BuildRequires: rsh 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
@ -139,7 +101,7 @@ This package contains ELPA built against OpenMPI.
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} Requires: %{name}-devel = %{version}-%{release}
Provides: %{name}-mpi-devel = %{version}-%{release} Provides: %{name}-mpi-devel = %{version}-%{release}
%description openmpi-devel %description openmpi-devel
@ -150,135 +112,100 @@ eigenvalue problems.
This package contains the development files for ELPA (OpenMPI version). This package contains the development files for ELPA (OpenMPI version).
%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 %patch1 -p1 -b .r
%patch2 -p1 -b .papi %patch2 -p1 -b .atlas
%patch3 -p1 -b .simd %patch3 -p1 -b .avx
autoreconf -vifs autoreconf -vifs
popd popd
cp -pr mpich openmpi cp -pr mpich openmpi
cp -pr mpich serial
mkdir _openmp mkdir _openmp
cp -pr mpich openmpi serial _openmp/ cp -pr mpich openmpi _openmp/
%build %build
%global defopts --disable-silent-rules --disable-static --docdir=%{_pkgdocdir} %global defopts --disable-silent-rules --disable-static
%global ldflags %{__global_ldflags} %global ldflags -L%{_libdir}/atlas
%if %{with atlas} %global 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"
export FCFLAGS="%{fcflags} -I$MPI_FORTRAN_MOD_DIR"
pushd mpich
%configure %{defopts} \
--libdir=$MPI_LIB
for mpi in '' mpich openmpi ; do make %{?_smp_mflags} V=1
export CFLAGS="%{optflags}" popd
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:-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 _openmp/mpich
popd %configure %{defopts} \
done --enable-openmp \
if [ -n "$mpi" ]; then --libdir=$MPI_LIB
module unload mpi/${mpi}-%{_arch}
fi make %{?_smp_mflags} V=1
done popd
%{_mpich_unload}
%{_openmpi_load}
export LDFLAGS="%{ldflags} -L$MPI_LIB"
export FCFLAGS="%{fcflags} -I$MPI_FORTRAN_MOD_DIR"
pushd openmpi
%configure %{defopts} \
--libdir=$MPI_LIB
make %{?_smp_mflags} V=1
popd
pushd _openmp/openmpi
%configure %{defopts} \
--enable-openmp \
--libdir=$MPI_LIB
make %{?_smp_mflags} V=1
popd
%{_openmpi_unload}
%install %install
. /etc/profile.d/modules.sh
for s in '' _openmp ; do for s in '' _openmp ; do
# install serial last to avoid overwriting non-MPI binaries in _bindir for mpi in mpich openmpi ; do
for mpi in mpich openmpi '' ; do pushd ${s:-.}/${mpi}
pushd ${s:-.}/${mpi:-serial}
make DESTDIR=%{buildroot} install make DESTDIR=%{buildroot} install
if [ -n "$mpi" ]; then rm %{buildroot}%{_bindir}/elpa?_test_*
module load mpi/${mpi}-%{_arch} mkdir -p %{buildroot}%{_libdir}/${mpi}/bin
libdir=%{_libdir}/${mpi}/lib mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}%{_libdir}/${mpi}/bin/
fmoddir=$MPI_FORTRAN_MOD_DIR execstack -c .libs/libelpa${s}.so.?.* %{buildroot}%{_libdir}/${mpi}/lib/libelpa${s}.so.?.*
mkdir -p %{buildroot}$MPI_BIN mkdir -p %{buildroot}%{_fmoddir}/${mpi}
mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}$MPI_BIN
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 for f in $(ls -1 %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/*.mod) ; do
m=$(basename ${f} .mod) m=$(basename ${f} .mod)
mv %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/${m}.mod %{buildroot}${fmoddir}/${m}${s}.mod mv %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/${m}.mod %{buildroot}%{_fmoddir}/${mpi}/${m}${s}.mod
done done
rmdir %{buildroot}%{_includedir}/elpa${s}-%{version}/modules rm %{buildroot}%{_libdir}/${mpi}/lib/libelpa${s}.la
rm %{buildroot}${libdir}/libelpa${s}.la # fix-up fcflags include path per mpi implementation
sed -i -e "/^fcflags.*modules/s,/modules,/modules/${mpi}," %{buildroot}%{_libdir}/${mpi}/lib/pkgconfig/elpa${s}-%{version}.pc
popd popd
done done
done done
echo ".so elpa2_print_kernels.1" > %{buildroot}%{_mandir}/man1/elpa2_print_kernels_openmp.1
# 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 %{_mpich_load}
for s in '' _openmp ; do pushd mpich
# openmpi tests get randomly stuck on i686 https://bugzilla.redhat.com/show_bug.cgi?id=1512229 make check V=1 || cat ./test-suite.log
%ifnarch i686 popd
for mpi in '' mpich openmpi ; do pushd _openmp/mpich
%else make check V=1 || cat ./test-suite.log
for mpi in '' mpich ; do popd
%endif %{_mpich_unload}
pushd ${s:-.}/${mpi:-serial}
if [ -n "$mpi" ]; then
module load mpi/${mpi}-%{_arch}
fi
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
%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 V=1 || cat ./test-suite.log
popd
%{_openmpi_unload}
%endif
%post mpich -p /sbin/ldconfig %post mpich -p /sbin/ldconfig
@ -288,113 +215,46 @@ 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 %license %{_pkgdocdir}/COPYING
%license %{_pkgdocdir}/LICENSE
%license %{_pkgdocdir}/gpl.txt %license %{_pkgdocdir}/gpl.txt
%license %{_pkgdocdir}/lgpl.txt %license %{_pkgdocdir}/lgpl.txt
%{_pkgdocdir}/README.md %{_pkgdocdir}/README
%{_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 %files devel
%{_libdir}/libelpa.so %{_includedir}/elpa-%{version}
%{_libdir}/libelpa_openmp.so %{_includedir}/elpa_openmp-%{version}
%{_libdir}/pkgconfig/elpa-%{version}.pc %{_pkgdocdir}/examples
%{_libdir}/pkgconfig/elpa_openmp-%{version}.pc
%{_fmoddir}/*.mod
%files mpich %files mpich
%{_libdir}/mpich/bin/elpa2_print_kernels %{_libdir}/mpich/bin/elpa2_print_kernels
%{_libdir}/mpich/bin/elpa2_print_kernels_openmp %{_libdir}/mpich/bin/elpa2_print_kernels_openmp
%{_libdir}/mpich/lib/libelpa.so.%{sover}* %{_libdir}/mpich/lib/libelpa.so.4*
%{_libdir}/mpich/lib/libelpa_openmp.so.%{sover}* %{_libdir}/mpich/lib/libelpa_openmp.so.4*
%files mpich-devel %files mpich-devel
%{_libdir}/mpich/lib/libelpa.so %{_libdir}/mpich/lib/libelpa.so
%{_libdir}/mpich/lib/libelpa_openmp.so %{_libdir}/mpich/lib/libelpa_openmp.so
%{_libdir}/mpich/lib/pkgconfig/elpa-%{version}.pc %{_libdir}/mpich/lib/pkgconfig/elpa-%{version}.pc
%{_libdir}/mpich/lib/pkgconfig/elpa_openmp-%{version}.pc %{_libdir}/mpich/lib/pkgconfig/elpa_openmp-%{version}.pc
%{_fmoddir}/mpich*/*.mod %{_fmoddir}/mpich/*.mod
# only non-mt openmpi build, see bug #1105902
%files openmpi %files openmpi
%{_libdir}/openmpi/bin/elpa2_print_kernels %{_libdir}/openmpi/bin/elpa2_print_kernels
%{_libdir}/openmpi/bin/elpa2_print_kernels_openmp %exclude %{_libdir}/openmpi/bin/elpa2_print_kernels_openmp
%{_libdir}/openmpi/lib/libelpa.so.%{sover}* %{_libdir}/openmpi/lib/libelpa.so.4*
%{_libdir}/openmpi/lib/libelpa_openmp.so.%{sover}* %exclude %{_libdir}/openmpi/lib/libelpa_openmp.so.4*
%files openmpi-devel %files openmpi-devel
%{_libdir}/openmpi/lib/libelpa.so %{_libdir}/openmpi/lib/libelpa.so
%{_libdir}/openmpi/lib/libelpa_openmp.so %exclude %{_libdir}/openmpi/lib/libelpa_openmp.so
%{_libdir}/openmpi/lib/pkgconfig/elpa-%{version}.pc %{_libdir}/openmpi/lib/pkgconfig/elpa-%{version}.pc
%{_libdir}/openmpi/lib/pkgconfig/elpa_openmp-%{version}.pc %exclude %{_libdir}/openmpi/lib/pkgconfig/elpa_openmp-%{version}.pc
%{_fmoddir}/openmpi*/*.mod %{_fmoddir}/openmpi/*.mod
%exclude %{_fmoddir}/openmpi/*_openmp.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 * Sun Apr 03 2016 Dominik Mierzejewski <rpm@greysector.net> 2015.11.001-1
- update to 2015.11.001 release - update to 2015.11.001 release
- update URL and Source URL - update URL and Source URL

View File

@ -1,2 +1 @@
SHA512 (elpa-2017.05.003.tar.gz) = 0d8876af09e45050319a047989ae5312859ec5d0cc09cdf349737235a9d9b815a46774a192cdd3bb2d87e223733c60fc196b21f8671c6cc56666ad9ef3d72676 de0f35b7ee7c971fd0dca35c900b87e6 elpa-2015.11.001.tar.gz
SHA512 (elpa-2017.05.003.tar.gz.asc) = b3e62fe83ea31885ab9396e3d072abe07b4fc0ed7729261d6b1a8a868113e935a33734591b80af841b392657b33a702028d67278803691e43641bb2d4202c57a