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.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
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@
|
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@
|
||||||
|
@ -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
338
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
|
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
|
||||||
|
Binary file not shown.
3
sources
3
sources
@ -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
|
|
||||||
|
Loading…
Reference in New Issue
Block a user