Compare commits
4 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
cfb0fd3990 | ||
|
224ac504c0 | ||
|
81a8f43742 | ||
|
cdfc38ca53 |
@ -6,7 +6,19 @@ diff -up mpich/configure.ac.atlas mpich/configure.ac
|
||||
|
||||
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_SEARCH_LIBS([dgemm],[[f77blas atlas] 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 -up mpich/configure.atlas mpich/configure
|
||||
--- mpich/configure.atlas 2015-03-18 10:49:42.000000000 +0100
|
||||
+++ mpich/configure 2015-05-04 12:03:18.861651356 +0200
|
||||
@@ -6507,7 +6401,7 @@
|
||||
call dgemm
|
||||
end
|
||||
_ACEOF
|
||||
-for ac_lib in '' blas; do
|
||||
+for ac_lib in '' 'f77blas -latlas' blas; do
|
||||
if test -z "$ac_lib"; then
|
||||
ac_res="none required"
|
||||
else
|
||||
|
147
elpa-missing-intrinsics.patch
Normal file
147
elpa-missing-intrinsics.patch
Normal file
@ -0,0 +1,147 @@
|
||||
diff -up mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp.intrinsics mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp
|
||||
--- mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp.intrinsics 2015-03-16 11:39:58.000000000 +0100
|
||||
+++ mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_1hv.cpp 2015-05-04 13:36:14.915917441 +0200
|
||||
@@ -604,6 +604,35 @@ static __forceinline void hh_trafo_compl
|
||||
}
|
||||
|
||||
#else
|
||||
+#ifndef _mm_loaddup_pd
|
||||
+static __forceinline __m128d _mm_loaddup_pd(double const * dp)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } a;
|
||||
+ a.f64[0] = *dp;
|
||||
+ a.f64[1] = *dp;
|
||||
+ return a.d;
|
||||
+}
|
||||
+#endif
|
||||
+#ifndef _mm_addsub_pd
|
||||
+static __forceinline __m128d _mm_addsub_pd(__m128d a, __m128d b)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } A, B;
|
||||
+ A.d = a;
|
||||
+ B.d = b;
|
||||
+
|
||||
+ A.f64[0] -= B.f64[0];
|
||||
+ A.f64[1] += B.f64[1];
|
||||
+ return A.d;
|
||||
+}
|
||||
+#endif
|
||||
static __forceinline void hh_trafo_complex_kernel_6_SSE_1hv(std::complex<double>* q, std::complex<double>* hh, int nb, int ldq)
|
||||
{
|
||||
double* q_dbl = (double*)q;
|
||||
diff -up mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_2hv.cpp.intrinsics mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_2hv.cpp
|
||||
--- mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_2hv.cpp.intrinsics 2015-03-16 11:39:58.000000000 +0100
|
||||
+++ mpich/src/elpa2_kernels/elpa2_kernels_complex_sse-avx_2hv.cpp 2015-05-04 13:37:31.900484062 +0200
|
||||
@@ -1493,6 +1493,35 @@ static __forceinline void hh_trafo_compl
|
||||
_mm256_store_pd(&q_dbl[(2*nb*ldq)+0], q1);
|
||||
}
|
||||
#else
|
||||
+#ifndef _mm_loaddup_pd
|
||||
+static __forceinline __m128d _mm_loaddup_pd(double const * dp)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } a;
|
||||
+ a.f64[0] = *dp;
|
||||
+ a.f64[1] = *dp;
|
||||
+ return a.d;
|
||||
+}
|
||||
+#endif
|
||||
+#ifndef _mm_addsub_pd
|
||||
+static __forceinline __m128d _mm_addsub_pd(__m128d a, __m128d b)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } A, B;
|
||||
+ A.d = a;
|
||||
+ B.d = b;
|
||||
+
|
||||
+ A.f64[0] -= B.f64[0];
|
||||
+ A.f64[1] += B.f64[1];
|
||||
+ return A.d;
|
||||
+}
|
||||
+#endif
|
||||
static __forceinline void hh_trafo_complex_kernel_4_SSE_2hv(std::complex<double>* q, std::complex<double>* hh, int nb, int ldq, int ldh, std::complex<double> s)
|
||||
{
|
||||
double* q_dbl = (double*)q;
|
||||
diff -up mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c.intrinsics mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c
|
||||
--- mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c.intrinsics 2015-03-16 11:39:58.000000000 +0100
|
||||
+++ mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_2hv.c 2015-05-04 13:30:17.618286220 +0200
|
||||
@@ -1001,6 +1001,19 @@ void double_hh_trafo_fast_(double* q, do
|
||||
* matrix vector product with two householder
|
||||
* vectors + a rank 2 update is performed
|
||||
*/
|
||||
+#ifndef _mm_loaddup_pd
|
||||
+ __forceinline __m128d _mm_loaddup_pd(double const * dp)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } a;
|
||||
+ a.f64[0] = *dp;
|
||||
+ a.f64[1] = *dp;
|
||||
+ return a.d;
|
||||
+}
|
||||
+#endif
|
||||
__forceinline void hh_trafo_kernel_12_SSE_2hv(double* q, double* hh, int nb, int ldq, int ldh, double s)
|
||||
{
|
||||
/////////////////////////////////////////////////////
|
||||
diff -up mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c.intrinsics mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c
|
||||
--- mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c.intrinsics 2015-03-16 11:39:58.000000000 +0100
|
||||
+++ mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_4hv.c 2015-05-04 13:30:12.830250942 +0200
|
||||
@@ -1334,6 +1334,19 @@ __forceinline void hh_trafo_kernel_4_AVX
|
||||
* matrix vector product with two householder
|
||||
* vectors + a rank 1 update is performed
|
||||
*/
|
||||
+#ifndef _mm_loaddup_pd
|
||||
+ __forceinline __m128d _mm_loaddup_pd(double const * dp)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } a;
|
||||
+ a.f64[0] = *dp;
|
||||
+ a.f64[1] = *dp;
|
||||
+ return a.d;
|
||||
+}
|
||||
+#endif
|
||||
__forceinline void hh_trafo_kernel_6_SSE_4hv(double* q, double* hh, int nb, int ldq, int ldh, double s_1_2, double s_1_3, double s_2_3, double s_1_4, double s_2_4, double s_3_4)
|
||||
{
|
||||
/////////////////////////////////////////////////////
|
||||
diff -up mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_6hv.c.intrinsics mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_6hv.c
|
||||
--- mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_6hv.c.intrinsics 2015-03-16 11:39:58.000000000 +0100
|
||||
+++ mpich/src/elpa2_kernels/elpa2_kernels_real_sse-avx_6hv.c 2015-05-04 13:30:06.741206082 +0200
|
||||
@@ -1744,6 +1744,19 @@ __forceinline void hh_trafo_kernel_4_AVX
|
||||
_mm256_store_pd(&q[(nb+4)*ldq],q1);
|
||||
}
|
||||
#else
|
||||
+#ifndef _mm_loaddup_pd
|
||||
+ __forceinline __m128d _mm_loaddup_pd(double const * dp)
|
||||
+{
|
||||
+ union
|
||||
+ {
|
||||
+ __m128d d;
|
||||
+ double f64[2];
|
||||
+ } a;
|
||||
+ a.f64[0] = *dp;
|
||||
+ a.f64[1] = *dp;
|
||||
+ return a.d;
|
||||
+}
|
||||
+#endif
|
||||
/**
|
||||
* Unrolled kernel that computes
|
||||
* 4 rows of Q simultaneously, a
|
@ -1,6 +1,6 @@
|
||||
diff -up mpich/configure.ac.avx mpich/configure.ac
|
||||
--- mpich/configure.ac.avx 2015-03-20 15:26:06.535080683 +0100
|
||||
+++ mpich/configure.ac 2015-03-20 15:26:06.536080688 +0100
|
||||
--- mpich/configure.ac.avx 2015-05-05 11:06:33.132304515 +0200
|
||||
+++ mpich/configure.ac 2015-05-05 11:06:33.137304689 +0200
|
||||
@@ -213,6 +213,11 @@ dnl first test failed: try again after u
|
||||
[can_compile_avx=yes],
|
||||
[can_compile_avx=no]
|
||||
@ -21,9 +21,49 @@ diff -up mpich/configure.ac.avx mpich/configure.ac
|
||||
|
||||
rm -rf modules/ .fortran_dependencies/
|
||||
mkdir modules
|
||||
diff -up mpich/configure.avx mpich/configure
|
||||
--- mpich/configure.avx 2015-05-05 11:06:33.136304654 +0200
|
||||
+++ mpich/configure 2015-05-05 11:20:57.544768442 +0200
|
||||
@@ -638,6 +638,7 @@ LTLIBOBJS
|
||||
LIBOBJS
|
||||
PKG_CONFIG_FILE
|
||||
SUFFIX
|
||||
+AVXCFLAGS
|
||||
OPENMP_LDFLAGS
|
||||
OPENMP_CFLAGS
|
||||
with_amd_bulldozer_kernel
|
||||
@@ -6049,14 +6050,14 @@ $as_echo_n "checking whether we can comp
|
||||
}
|
||||
|
||||
_ACEOF
|
||||
-if ac_fn_c_try_compile "$LINENO"; then :
|
||||
+if test x"${can_compile_sse}" = x"yes" && ac_fn_c_try_compile "$LINENO" ; then
|
||||
can_compile_avx=yes
|
||||
else
|
||||
can_compile_avx=no
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
- if test x"${can_compile_avx}" = x"no"; then
|
||||
+ if test x"${can_compile_sse}" = x"yes" && test x"${can_compile_avx}" = x"no"; then
|
||||
CFLAGS="$CFLAGS -mavx"
|
||||
CXXFLAGS="$CXXFLAGS -mavx"
|
||||
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
|
||||
@@ -6076,6 +6077,11 @@ else
|
||||
|
||||
fi
|
||||
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
|
||||
+ if test x"${can_compile_avx}" = x"yes" ; then
|
||||
+ AVXCFLAGS="-mavx"
|
||||
+ fi
|
||||
+ CFLAGS=$save_CFLAGS
|
||||
+ CXXFLAGS=$save_CXXFLAGS
|
||||
fi
|
||||
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${can_compile_avx}" >&5
|
||||
$as_echo "${can_compile_avx}" >&6; }
|
||||
diff -up mpich/Makefile.am.avx mpich/Makefile.am
|
||||
--- mpich/Makefile.am.avx 2015-03-20 15:26:06.534080677 +0100
|
||||
+++ mpich/Makefile.am 2015-03-20 15:31:55.590089898 +0100
|
||||
--- mpich/Makefile.am.avx 2015-05-05 11:06:33.131304480 +0200
|
||||
+++ mpich/Makefile.am 2015-05-05 11:06:33.141304828 +0200
|
||||
@@ -8,6 +8,8 @@ AM_LDFLAGS = $(SCALAPACK_LDFLAGS)
|
||||
# libelpa
|
||||
lib_LTLIBRARIES = libelpa@SUFFIX@.la
|
||||
@ -33,3 +73,23 @@ diff -up mpich/Makefile.am.avx mpich/Makefile.am
|
||||
|
||||
libelpa@SUFFIX@_la_SOURCES = src/elpa_utilities.F90 \
|
||||
src/elpa1.F90 \
|
||||
diff -up mpich/Makefile.in.avx mpich/Makefile.in
|
||||
--- mpich/Makefile.in.avx 2015-05-05 11:06:33.131304480 +0200
|
||||
+++ mpich/Makefile.in 2015-05-05 11:06:33.141304828 +0200
|
||||
@@ -774,6 +774,7 @@ AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
+AVXCFLAGS = @AVXCFLAGS@
|
||||
AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCAS = @CCAS@
|
||||
@@ -918,6 +919,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) $(AM_CFLAGS)
|
||||
+libelpa@SUFFIX@_la_CXXFLAGS = $(AVXCFLAGS) $(AM_CXXFLAGS)
|
||||
libelpa@SUFFIX@_la_SOURCES = src/elpa_utilities.F90 src/elpa1.F90 \
|
||||
src/elpa2_utilities.F90 src/elpa2.F90 src/elpa_c_interface.F90 \
|
||||
src/elpa_qr/qr_utils.f90 src/elpa_qr/elpa_qrkernels.f90 \
|
||||
|
@ -1,6 +1,6 @@
|
||||
diff -up mpich/elpa.pc.in.r mpich/elpa.pc.in
|
||||
--- mpich/elpa.pc.in.r 2015-03-16 11:39:51.000000000 +0100
|
||||
+++ mpich/elpa.pc.in 2015-03-20 10:59:37.966517510 +0100
|
||||
+++ mpich/elpa.pc.in 2015-03-24 14:46:15.776044997 +0100
|
||||
@@ -9,4 +9,4 @@ Version: @PACKAGE_VERSION@
|
||||
URL: @PACKAGE_URL@
|
||||
Libs: -L${libdir} -lelpa@SUFFIX@ @LIBS@ @OPENMP_FCFLAGS@
|
||||
@ -69,3 +69,65 @@ diff -up mpich/Makefile.am.r mpich/Makefile.am
|
||||
chmod +x elpa2_test_complex_choose_kernel_with_api.sh
|
||||
|
||||
elpa2_utilities.i: $(top_srcdir)/src/elpa2_utilities.F90
|
||||
diff -up mpich/Makefile.in.r mpich/Makefile.in
|
||||
--- mpich/Makefile.in.avx 2015-03-18 10:49:43.000000000 +0100
|
||||
+++ mpich/Makefile.in 2015-05-04 12:03:19.989659664 +0200
|
||||
@@ -2202,47 +2262,47 @@
|
||||
.PRECIOUS: Makefile
|
||||
|
||||
elpa1_test_real.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa1_test_real@SUFFIX@ $$TEST_FLAGS' > elpa1_test_real.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa1_test_real@SUFFIX@ $$TEST_FLAGS' > elpa1_test_real.sh
|
||||
chmod +x elpa1_test_real.sh
|
||||
|
||||
elpa1_test_real_with_c.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa1_test_real_with_c@SUFFIX@ $$TEST_FLAGS' > elpa1_test_real_with_c.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa1_test_real_with_c@SUFFIX@ $$TEST_FLAGS' > elpa1_test_real_with_c.sh
|
||||
chmod +x elpa1_test_real_with_c.sh
|
||||
|
||||
elpa1_test_real_c_version.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa1_test_real_c_version@SUFFIX@ $$TEST_FLAGS' > elpa1_test_real_c_version.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa1_test_real_c_version@SUFFIX@ $$TEST_FLAGS' > elpa1_test_real_c_version.sh
|
||||
chmod +x elpa1_test_real_c_version.sh
|
||||
|
||||
elpa2_test_real.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_real@SUFFIX@ $$TEST_FLAGS' > elpa2_test_real.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_real@SUFFIX@ $$TEST_FLAGS' > elpa2_test_real.sh
|
||||
chmod +x elpa2_test_real.sh
|
||||
|
||||
elpa2_test_real_default_kernel.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_real_default_kernel@SUFFIX@ $$TEST_FLAGS' > elpa2_test_real_default_kernel.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_real_default_kernel@SUFFIX@ $$TEST_FLAGS' > elpa2_test_real_default_kernel.sh
|
||||
chmod +x elpa2_test_real_default_kernel.sh
|
||||
|
||||
elpa2_test_real_default_kernel_qr_decomposition.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@' > elpa2_test_real_default_kernel_qr_decomposition.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_real_default_kernel_qr_decomposition@SUFFIX@' > elpa2_test_real_default_kernel_qr_decomposition.sh
|
||||
chmod +x elpa2_test_real_default_kernel_qr_decomposition.sh
|
||||
|
||||
elpa2_test_real_choose_kernel_with_api.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_real_choose_kernel_with_api@SUFFIX@ $$TEST_FLAGS' > elpa2_test_real_choose_kernel_with_api.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_real_choose_kernel_with_api@SUFFIX@ $$TEST_FLAGS' > elpa2_test_real_choose_kernel_with_api.sh
|
||||
chmod +x elpa2_test_real_choose_kernel_with_api.sh
|
||||
|
||||
elpa1_test_complex.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa1_test_complex@SUFFIX@ $$TEST_FLAGS' > elpa1_test_complex.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa1_test_complex@SUFFIX@ $$TEST_FLAGS' > elpa1_test_complex.sh
|
||||
chmod +x elpa1_test_complex.sh
|
||||
|
||||
elpa2_test_complex.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_complex@SUFFIX@ $$TEST_FLAGS' > elpa2_test_complex.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_complex@SUFFIX@ $$TEST_FLAGS' > elpa2_test_complex.sh
|
||||
chmod +x elpa2_test_complex.sh
|
||||
|
||||
elpa2_test_complex_default_kernel.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_complex_default_kernel@SUFFIX@ $$TEST_FLAGS' > elpa2_test_complex_default_kernel.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_complex_default_kernel@SUFFIX@ $$TEST_FLAGS' > elpa2_test_complex_default_kernel.sh
|
||||
chmod +x elpa2_test_complex_default_kernel.sh
|
||||
|
||||
elpa2_test_complex_choose_kernel_with_api.sh:
|
||||
- echo 'mpiexec -n 2 ./elpa2_test_complex_choose_kernel_with_api@SUFFIX@ $$TEST_FLAGS' > elpa2_test_complex_choose_kernel_with_api.sh
|
||||
+ echo 'mpiexec -n `getconf _NPROCESSORS_ONLN` ./elpa2_test_complex_choose_kernel_with_api@SUFFIX@ $$TEST_FLAGS' > elpa2_test_complex_choose_kernel_with_api.sh
|
||||
chmod +x elpa2_test_complex_choose_kernel_with_api.sh
|
||||
|
||||
elpa2_utilities.i: $(top_srcdir)/src/elpa2_utilities.F90
|
||||
|
40
elpa.spec
40
elpa.spec
@ -3,7 +3,7 @@
|
||||
Summary: High-performance library for parallel solution of eigenvalue problems
|
||||
Name: elpa
|
||||
Version: 2015.02.002
|
||||
Release: 4%{?dist}
|
||||
Release: 4%{?dist}.1
|
||||
URL: http://elpa.rzg.mpg.de/
|
||||
Source0: http://elpa.rzg.mpg.de/elpa-%{version}.tar.gz
|
||||
# fix pkgconfig file
|
||||
@ -14,10 +14,11 @@ Patch1: elpa-rpm.patch
|
||||
Patch2: elpa-atlas.patch
|
||||
# don't use AVX instructions in test binaries
|
||||
Patch3: elpa-no-avx.patch
|
||||
# emulate missing intrinsics
|
||||
Patch4: elpa-missing-intrinsics.patch
|
||||
License: LGPLv3+
|
||||
BuildRequires: atlas-devel
|
||||
BuildRequires: gcc-gfortran
|
||||
BuildRequires: libtool
|
||||
%ifnarch aarch64 ppc64le
|
||||
BuildRequires: prelink
|
||||
%endif
|
||||
@ -59,6 +60,8 @@ eigenvalue problems.
|
||||
|
||||
This package contains the C header files for ELPA.
|
||||
|
||||
# mpich seems to be unavailable on ppc64 - bug #1218579
|
||||
%ifnarch ppc64
|
||||
%package mpich
|
||||
Summary: Fast library for parallel solution of eigenvalue problems (MPICH version)
|
||||
BuildRequires: mpich-devel
|
||||
@ -78,7 +81,7 @@ This package contains ELPA built against MPICH.
|
||||
%package mpich-devel
|
||||
Summary: Development files for ELPA (MPICH version)
|
||||
Requires: %{name}-mpich%{?_isa} = %{version}-%{release}
|
||||
Requires: gcc-gfortran%{?_isa}
|
||||
Requires: gcc-gfortran
|
||||
Requires: %{name}-devel = %{version}-%{release}
|
||||
Provides: %{name}-mpi-devel = %{version}-%{release}
|
||||
|
||||
@ -88,6 +91,7 @@ ELPA is a Fortran-based high-performance computational library for the
|
||||
eigenvalue problems.
|
||||
|
||||
This package contains the development files for ELPA (MPICH version).
|
||||
%endif
|
||||
|
||||
%package openmpi
|
||||
Summary: Fast library for parallel solution of eigenvalue problems (OpenMPI version)
|
||||
@ -110,7 +114,7 @@ This package contains ELPA built against OpenMPI.
|
||||
%package openmpi-devel
|
||||
Summary: Development files for ELPA (OpenMPI version)
|
||||
Requires: %{name}-openmpi%{?_isa} = %{version}-%{release}
|
||||
Requires: gcc-gfortran%{?_isa}
|
||||
Requires: gcc-gfortran
|
||||
Requires: %{name}-devel = %{version}-%{release}
|
||||
Provides: %{name}-mpi-devel = %{version}-%{release}
|
||||
|
||||
@ -128,7 +132,7 @@ pushd mpich
|
||||
%patch1 -p1 -b .r
|
||||
%patch2 -p1 -b .atlas
|
||||
%patch3 -p1 -b .avx
|
||||
autoreconf -vifs
|
||||
%patch4 -p1 -b .intrinsics
|
||||
popd
|
||||
cp -pr mpich openmpi
|
||||
mkdir _openmp
|
||||
@ -137,6 +141,7 @@ cp -pr mpich openmpi _openmp/
|
||||
%build
|
||||
export FCFLAGS=-ffree-line-length-none
|
||||
|
||||
%ifnarch ppc64
|
||||
%{_mpich_load}
|
||||
export LDFLAGS="-L%{_libdir}/atlas -L$MPI_LIB"
|
||||
pushd mpich
|
||||
@ -154,6 +159,7 @@ pushd _openmp/mpich
|
||||
make %{?_smp_mflags} V=1
|
||||
popd
|
||||
%{_mpich_unload}
|
||||
%endif
|
||||
|
||||
%{_openmpi_load}
|
||||
export LDFLAGS="-L%{_libdir}/atlas -L$MPI_LIB"
|
||||
@ -174,8 +180,12 @@ popd
|
||||
%{_openmpi_unload}
|
||||
|
||||
%install
|
||||
mpis=openmpi
|
||||
%ifnarch ppc64
|
||||
mpis="mpich $mpis"
|
||||
%endif
|
||||
for s in '' _openmp ; do
|
||||
for mpi in mpich openmpi ; do
|
||||
for mpi in $mpis ; do
|
||||
pushd ${s:-.}/${mpi}
|
||||
make DESTDIR=%{buildroot} install
|
||||
rm %{buildroot}%{_bindir}/elpa?_test_*
|
||||
@ -198,6 +208,7 @@ done
|
||||
|
||||
%if 1
|
||||
%check
|
||||
%ifnarch ppc64
|
||||
%{_mpich_load}
|
||||
pushd mpich
|
||||
make check V=1 || cat ./test-suite.log
|
||||
@ -206,6 +217,7 @@ pushd _openmp/mpich
|
||||
make check V=1 || cat ./test-suite.log
|
||||
popd
|
||||
%{_mpich_unload}
|
||||
%endif
|
||||
|
||||
# only non-mt openmpi build can be tested, see bug #1105902
|
||||
%{_openmpi_load}
|
||||
@ -215,18 +227,20 @@ popd
|
||||
%{_openmpi_unload}
|
||||
%endif
|
||||
|
||||
%ifnarch ppc64
|
||||
%post mpich -p /sbin/ldconfig
|
||||
|
||||
%postun mpich -p /sbin/ldconfig
|
||||
%endif
|
||||
|
||||
%post openmpi -p /sbin/ldconfig
|
||||
|
||||
%postun openmpi -p /sbin/ldconfig
|
||||
|
||||
%files common
|
||||
%license %{_pkgdocdir}/COPYING
|
||||
%license %{_pkgdocdir}/gpl.txt
|
||||
%license %{_pkgdocdir}/lgpl.txt
|
||||
%{_pkgdocdir}/COPYING
|
||||
%{_pkgdocdir}/gpl.txt
|
||||
%{_pkgdocdir}/lgpl.txt
|
||||
%{_pkgdocdir}/README
|
||||
|
||||
%files devel
|
||||
@ -234,6 +248,7 @@ popd
|
||||
%{_includedir}/elpa_openmp-%{version}
|
||||
%{_pkgdocdir}/examples
|
||||
|
||||
%ifnarch ppc64
|
||||
%files mpich
|
||||
%{_libdir}/mpich%{?_opt_cc_suffix}/bin/elpa2_print_kernels
|
||||
%{_libdir}/mpich%{?_opt_cc_suffix}/bin/elpa2_print_kernels_openmp
|
||||
@ -246,6 +261,7 @@ popd
|
||||
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/pkgconfig/elpa-%{version}.pc
|
||||
%{_libdir}/mpich%{?_opt_cc_suffix}/lib/pkgconfig/elpa_openmp-%{version}.pc
|
||||
%{_fmoddir}/mpich%{?_cc_name_suffix}/*.mod
|
||||
%endif
|
||||
|
||||
# only non-mt openmpi build, see bug #1105902
|
||||
%files openmpi
|
||||
@ -263,11 +279,17 @@ popd
|
||||
%exclude %{_fmoddir}/openmpi%{?_cc_name_suffix}/*_openmp.mod
|
||||
|
||||
%changelog
|
||||
* Sun May 17 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.02.002-4.1
|
||||
- drop _isa from Requires: gcc-gfortran, i686 package is missing from x86_64 repo
|
||||
|
||||
* Mon May 04 2015 Dominik Mierzejewski <rpm@greysector.net> 2015.02.002-4
|
||||
- fix build on EPEL7 (missing _pkgdocdir macro and BR: rsh for openmpi)
|
||||
- move examples to -devel subpackage
|
||||
- print whole testsuite log in case of test failure
|
||||
- re-enable openmpi tests on i686 and armv7hl
|
||||
- fix build on EL6 (autoconf too old, missing gcc intrinsics)
|
||||
- disable mpich subpackage on ppc64 (bug #1218579)
|
||||
- drop %%license macro which doesn't exist on EL6
|
||||
|
||||
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 2015.02.002-3
|
||||
- Rebuilt for GCC 5 C++11 ABI change
|
||||
|
Loading…
Reference in New Issue
Block a user