Compare commits
No commits in common. "master" and "f24" have entirely different histories.
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,5 +2,3 @@
|
||||
/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
12
elpa-atlas.patch
Normal 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
86
elpa-avx.patch
Normal 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 \
|
@ -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"
|
||||
|
@ -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
|
@ -6,4 +6,4 @@ diff -up mpich/elpa.pc.in.r mpich/elpa.pc.in
|
||||
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@
|
||||
+fcflags= -I${libdir}/gfortran/modules @OPENMP_FCFLAGS@
|
||||
|
@ -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 \
|
332
elpa.spec
332
elpa.spec
@ -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
|
||||
Name: elpa
|
||||
Version: 2017.05.003
|
||||
Release: 3%{?dist}
|
||||
URL: https://elpa.mpcdf.mpg.de/software
|
||||
Source0: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz
|
||||
Source1: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/elpa-%{version}.tar.gz.asc
|
||||
Source2: gpg-keyring-05288C27E0CF6B3D7F4FEF6A52C18F6F0A355F25.gpg
|
||||
# drop _onenode suffix from non-MPI builds
|
||||
Patch1: elpa-onenode.patch
|
||||
# fix detection of papi
|
||||
Patch2: elpa-papi.patch
|
||||
Version: 2015.11.001
|
||||
Release: 1%{?dist}
|
||||
URL: http://elpa.mpcdf.mpg.de/software
|
||||
Source0: http://elpa.mpcdf.mpg.de/elpa-%{version}.tar.gz
|
||||
# fix pkgconfig file
|
||||
Patch1: elpa-pc.patch
|
||||
# build against atlas instead of reference blas
|
||||
Patch2: elpa-atlas.patch
|
||||
# fix detection of AVX(2) compiler support and use them only in the library
|
||||
Patch3: elpa-simd.patch
|
||||
Patch3: elpa-avx.patch
|
||||
License: LGPLv3+
|
||||
%if %{with atlas}
|
||||
BuildRequires: atlas-devel
|
||||
%else
|
||||
BuildRequires: openblas-devel
|
||||
%endif
|
||||
BuildRequires: gcc-gfortran
|
||||
BuildRequires: gnupg2
|
||||
BuildRequires: libtool
|
||||
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
|
||||
@ -66,28 +41,17 @@ 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}
|
||||
Summary: C header files for ELPA
|
||||
BuildArch: noarch
|
||||
Requires: %{name}-mpi-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).
|
||||
This package contains the C header files for ELPA.
|
||||
|
||||
%package mpich
|
||||
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)
|
||||
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
|
||||
Requires: gcc-gfortran%{?_isa}
|
||||
Requires: %{name}-common-devel = %{version}-%{release}
|
||||
Requires: %{name}-devel = %{version}-%{release}
|
||||
Provides: %{name}-mpi-devel = %{version}-%{release}
|
||||
|
||||
%description mpich-devel
|
||||
@ -120,9 +84,7 @@ 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
|
||||
@ -139,7 +101,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}-common-devel = %{version}-%{release}
|
||||
Requires: %{name}-devel = %{version}-%{release}
|
||||
Provides: %{name}-mpi-devel = %{version}-%{release}
|
||||
|
||||
%description openmpi-devel
|
||||
@ -150,136 +112,101 @@ 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 .onenode
|
||||
%patch2 -p1 -b .papi
|
||||
%patch3 -p1 -b .simd
|
||||
%patch1 -p1 -b .r
|
||||
%patch2 -p1 -b .atlas
|
||||
%patch3 -p1 -b .avx
|
||||
autoreconf -vifs
|
||||
popd
|
||||
cp -pr mpich openmpi
|
||||
cp -pr mpich serial
|
||||
mkdir _openmp
|
||||
cp -pr mpich openmpi serial _openmp/
|
||||
cp -pr mpich openmpi _openmp/
|
||||
|
||||
%build
|
||||
%global defopts --disable-silent-rules --disable-static --docdir=%{_pkgdocdir}
|
||||
%global ldflags %{__global_ldflags}
|
||||
%if %{with atlas}
|
||||
%global ldflags %{ldflags} -L%{_libdir}/atlas
|
||||
%endif
|
||||
%global fcflags %{optflags} -I%{_fmoddir} -ffree-line-length-none
|
||||
%global defopts --disable-silent-rules --disable-static
|
||||
%global ldflags -L%{_libdir}/atlas
|
||||
%global fcflags -ffree-line-length-none
|
||||
|
||||
. /etc/profile.d/modules.sh
|
||||
|
||||
for mpi in '' mpich openmpi ; do
|
||||
export CFLAGS="%{optflags}"
|
||||
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
|
||||
%{_mpich_load}
|
||||
export LDFLAGS="%{ldflags} -L$MPI_LIB"
|
||||
export FCFLAGS="%{fcflags} -I$MPI_FORTRAN_MOD_DIR"
|
||||
pushd mpich
|
||||
%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
|
||||
--libdir=$MPI_LIB
|
||||
|
||||
make %{?_smp_mflags} V=1
|
||||
popd
|
||||
done
|
||||
if [ -n "$mpi" ]; then
|
||||
module unload mpi/${mpi}-%{_arch}
|
||||
fi
|
||||
done
|
||||
|
||||
pushd _openmp/mpich
|
||||
%configure %{defopts} \
|
||||
--enable-openmp \
|
||||
--libdir=$MPI_LIB
|
||||
|
||||
make %{?_smp_mflags} V=1
|
||||
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
|
||||
. /etc/profile.d/modules.sh
|
||||
for s in '' _openmp ; do
|
||||
# install serial last to avoid overwriting non-MPI binaries in _bindir
|
||||
for mpi in mpich openmpi '' ; do
|
||||
pushd ${s:-.}/${mpi:-serial}
|
||||
for mpi in mpich openmpi ; do
|
||||
pushd ${s:-.}/${mpi}
|
||||
make DESTDIR=%{buildroot} install
|
||||
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
|
||||
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}
|
||||
rm %{buildroot}%{_bindir}/elpa?_test_*
|
||||
mkdir -p %{buildroot}%{_libdir}/${mpi}/bin
|
||||
mv %{buildroot}%{_bindir}/elpa2_print_kernels${s} %{buildroot}%{_libdir}/${mpi}/bin/
|
||||
execstack -c .libs/libelpa${s}.so.?.* %{buildroot}%{_libdir}/${mpi}/lib/libelpa${s}.so.?.*
|
||||
mkdir -p %{buildroot}%{_fmoddir}/${mpi}
|
||||
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
|
||||
mv %{buildroot}%{_includedir}/elpa${s}-%{version}/modules/${m}.mod %{buildroot}%{_fmoddir}/${mpi}/${m}${s}.mod
|
||||
done
|
||||
rmdir %{buildroot}%{_includedir}/elpa${s}-%{version}/modules
|
||||
rm %{buildroot}${libdir}/libelpa${s}.la
|
||||
rm %{buildroot}%{_libdir}/${mpi}/lib/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
|
||||
done
|
||||
done
|
||||
echo ".so elpa2_print_kernels.1" > %{buildroot}%{_mandir}/man1/elpa2_print_kernels_openmp.1
|
||||
|
||||
# testsuite takes:
|
||||
# 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}
|
||||
%if 1
|
||||
%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 TEST_FLAGS="500 150 16" || cat ./test-suite.log
|
||||
if [ -n "$mpi" ]; then
|
||||
module unload mpi/${mpi}-%{_arch}
|
||||
fi
|
||||
%{_mpich_load}
|
||||
pushd mpich
|
||||
make check V=1 || cat ./test-suite.log
|
||||
popd
|
||||
done
|
||||
done
|
||||
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
|
||||
make check V=1 || cat ./test-suite.log
|
||||
popd
|
||||
%{_openmpi_unload}
|
||||
%endif
|
||||
|
||||
%post -p /sbin/ldconfig
|
||||
|
||||
%postun -p /sbin/ldconfig
|
||||
|
||||
%post mpich -p /sbin/ldconfig
|
||||
|
||||
%postun mpich -p /sbin/ldconfig
|
||||
@ -288,113 +215,46 @@ done
|
||||
|
||||
%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.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*
|
||||
%{_pkgdocdir}/README
|
||||
|
||||
%files devel
|
||||
%{_libdir}/libelpa.so
|
||||
%{_libdir}/libelpa_openmp.so
|
||||
%{_libdir}/pkgconfig/elpa-%{version}.pc
|
||||
%{_libdir}/pkgconfig/elpa_openmp-%{version}.pc
|
||||
%{_fmoddir}/*.mod
|
||||
%{_includedir}/elpa-%{version}
|
||||
%{_includedir}/elpa_openmp-%{version}
|
||||
%{_pkgdocdir}/examples
|
||||
|
||||
%files mpich
|
||||
%{_libdir}/mpich/bin/elpa2_print_kernels
|
||||
%{_libdir}/mpich/bin/elpa2_print_kernels_openmp
|
||||
%{_libdir}/mpich/lib/libelpa.so.%{sover}*
|
||||
%{_libdir}/mpich/lib/libelpa_openmp.so.%{sover}*
|
||||
%{_libdir}/mpich/lib/libelpa.so.4*
|
||||
%{_libdir}/mpich/lib/libelpa_openmp.so.4*
|
||||
|
||||
%files mpich-devel
|
||||
%{_libdir}/mpich/lib/libelpa.so
|
||||
%{_libdir}/mpich/lib/libelpa_openmp.so
|
||||
%{_libdir}/mpich/lib/pkgconfig/elpa-%{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
|
||||
%{_libdir}/openmpi/bin/elpa2_print_kernels
|
||||
%{_libdir}/openmpi/bin/elpa2_print_kernels_openmp
|
||||
%{_libdir}/openmpi/lib/libelpa.so.%{sover}*
|
||||
%{_libdir}/openmpi/lib/libelpa_openmp.so.%{sover}*
|
||||
%exclude %{_libdir}/openmpi/bin/elpa2_print_kernels_openmp
|
||||
%{_libdir}/openmpi/lib/libelpa.so.4*
|
||||
%exclude %{_libdir}/openmpi/lib/libelpa_openmp.so.4*
|
||||
|
||||
%files openmpi-devel
|
||||
%{_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_openmp-%{version}.pc
|
||||
%{_fmoddir}/openmpi*/*.mod
|
||||
%exclude %{_libdir}/openmpi/lib/pkgconfig/elpa_openmp-%{version}.pc
|
||||
%{_fmoddir}/openmpi/*.mod
|
||||
%exclude %{_fmoddir}/openmpi/*_openmp.mod
|
||||
|
||||
%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
|
||||
|
Binary file not shown.
3
sources
3
sources
@ -1,2 +1 @@
|
||||
SHA512 (elpa-2017.05.003.tar.gz) = 0d8876af09e45050319a047989ae5312859ec5d0cc09cdf349737235a9d9b815a46774a192cdd3bb2d87e223733c60fc196b21f8671c6cc56666ad9ef3d72676
|
||||
SHA512 (elpa-2017.05.003.tar.gz.asc) = b3e62fe83ea31885ab9396e3d072abe07b4fc0ed7729261d6b1a8a868113e935a33734591b80af841b392657b33a702028d67278803691e43641bb2d4202c57a
|
||||
de0f35b7ee7c971fd0dca35c900b87e6 elpa-2015.11.001.tar.gz
|
||||
|
Loading…
Reference in New Issue
Block a user