Commit 2772c6b5 authored by Andreas Marek's avatar Andreas Marek

Merge branch 'master' into ELPA_GPU

parents a98b83f0 e6ca1d19
......@@ -325,7 +325,10 @@ gfortran-double-precision-mpi-openmp-special-gcov-jobs:
- export OMP_NUM_THREADS=1
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# jobs for intel/gfortran single precision mpi and openmp
......@@ -384,7 +387,6 @@ gfortran-single-precision-mpi-openmp-special-gcov-jobs:
- export OMP_NUM_THREADS=1
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
# jobs for intel/gfortran double precision no mpi and openmp
......@@ -757,7 +759,7 @@ gfortran-double-precision-nompi-openmp-ftimings-special-gcov-jobs:
- cpu
script:
- ./autogen.sh
- ./configure FC=gfortran CFLAGS="--coverage -O3 -mavx" CXXFLAGS="--coverage -O3 -mavx" FCFLAGS="--coverage -O3 -mavx" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP" --with-mpi=no --with-ftimings --enable-openmp
- ./configure FC=gfortran CFLAGS="--coverage -O3 -mavx" CXXFLAGS="--coverage -O3 -mavx" FCFLAGS="--coverage -O3 -mavx" SCALAPACK_LDFLAGS="$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_OMP" --with-mpi=no --enable-timing --enable-openmp
- make -j 8
- export OMP_NUM_THREADS=1
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
......@@ -1006,6 +1008,18 @@ gfortran-double-precision-mpi-noopenmp-ftimings-redirect-assumed-size-jobs:
paths:
- coverage_data
# real generic simple, compex generic simple
intel-double-precision-mpi-openmp-ftimings-redirect-real-generic-simple-complex-generic-simple-kernel-jobs:
tags:
- cpu
script:
- ./autogen.sh
- ./configure CFLAGS="-O3 -mavx" CXXFLAGS="-O3 -mavx" FCFLAGS="-O3 -mavx" SCALAPACK_LDFLAGS="$MKL_INTEL_SCALAPACK_MPI_OMP" SCALAPACK_FCFLAGS="$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_OMP" --enable-openmp --enable-timing --enable-redirect --with-real-generic-kernel-only --with-complex-generic-kernel-only
- make -j 8
- export OMP_NUM_THREADS=2
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
>>>>>>> master
# jobs for intel/gfortran single precision mpi and no openmp ftimings and redirect enabled
......@@ -1290,6 +1304,10 @@ gfortran-double-precision-nompi-noopenmp-ftimings-redirect-jobs:
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# jobs for intel/gfortran single precision nompi and no openmp ftimings and redirect enabled
......@@ -1314,7 +1332,6 @@ gfortran-single-precision-nompi-noopenmp-ftimings-redirect-jobs:
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
# jobs for intel/gfortran double precision mpi and openmp ftimings and redirect enabled
intel-double-precision-mpi-openmp-ftimings-redirect-jobs:
......@@ -1350,7 +1367,10 @@ gfortran-double-precision-mpi-openmp-ftimings-redirect-special-gcov-jobs:
- export OMP_NUM_THREADS=1
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# jobs for intel/gfortran single precision mpi and openmp ftimings and redirect enabled
......@@ -1466,6 +1486,10 @@ gfortran-single-precision-mpi-openmp-ftimings-redirect-real-generic-complex-gene
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# jobs for intel/gfortran double precision mpi and no openmp ftimings and redirect enabled
......@@ -1576,6 +1600,10 @@ gfortran-single-precision-mpi-noopenmp-ftimings-redirect-real-generic-simple-com
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
gfortran-double-precision-mpi-noopenmp-ftimings-redirect-real-generic-simple-complex-generic-simple-kernel-assumed-size-jobs:
tags:
......@@ -1665,7 +1693,6 @@ gfortran-double-precision-mpi-noopenmp-ftimings-redirect-real-sse_assembly-compl
paths:
- coverage_data
# real sse block2, complex sse block 1
intel-single-precision-mpi-openmp-ftimings-redirect-real-sse_block2-complex-sse_block1-kernel-jobs:
tags:
......@@ -1688,6 +1715,10 @@ gfortran-single-precision-mpi-openmp-ftimings-redirect-real-sse_block2-complex-s
- export OMP_NUM_THREADS=2
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
gfortran-single-precision-mpi-openmp-ftimings-redirect-real-sse_block2-complex-sse_block1-kernel-special-gcov-jobs:
tags:
......@@ -1700,6 +1731,10 @@ gfortran-single-precision-mpi-openmp-ftimings-redirect-real-sse_block2-complex-s
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# real sse block2, complex sse block1
......@@ -1761,6 +1796,10 @@ gfortran-single-precision-mpi-openmp-ftimings-redirect-real-sse_block4-complex-s
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# real sse block4, complex sse block 2
intel-single-precision-mpi-noopenmp-ftimings-redirect-real-sse_block4-complex-sse_block2-kernel-jobs:
......@@ -1812,6 +1851,10 @@ intel-single-precision-mpi-openmp-ftimings-redirect-real-sse_block6-complex-avx_
- export OMP_NUM_THREADS=2
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
gfortran-single-precision-mpi-openmp-ftimings-redirect-real-sse_block6-complex-avx_block1-kernel-jobs:
tags:
......@@ -1909,6 +1952,10 @@ gfortran-single-precision-mpi-openmp-ftimings-redirect-real-avx_block2-complex-a
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
#real avx block2, complex avx block2
......@@ -1921,6 +1968,10 @@ intel-single-precision-mpi-noopenmp-ftimings-redirect-real-avx_block2-complex-av
- make -j 8
- export LD_LIBRARY_PATH=$MKL_HOME/lib/intel64:$LD_LIBRARY_PATH
- make check TEST_FLAGS='1500 50 16'
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
gfortran-single-precision-mpi-noopenmp-ftimings-redirect-real-avx_block2-complex-avx_block2-kernel-jobs:
tags:
......@@ -2314,6 +2365,10 @@ gfortran-set-kernel-via-environment-variable-mpi-openmp-special-gcov-job:
- export OMP_NUM_THREADS=1
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
intel-set-kernel-via-environment-variable-mpi-noopenmp-job:
tags:
......@@ -2339,6 +2394,10 @@ gfortran-set-kernel-via-environment-variable-mpi-noopenmp-job:
- export COMPLEX_ELPA_KERNEL=COMPLEX_ELPA_KERNEL_GENERIC
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
intel-set-kernel-via-environment-variable-nompi-openmp-job:
tags:
......@@ -2379,6 +2438,10 @@ gfortran-set-kernel-via-environment-variable-nompi-openmp-special-gcov-job:
- export OMP_NUM_THREADS=1
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
intel-set-kernel-via-environment-variable-nompi-noopenmp-job:
tags:
......@@ -2404,6 +2467,10 @@ gfortran-set-kernel-via-environment-variable-nompi-noopenmp-job:
- export COMPLEX_ELPA_KERNEL=COMPLEX_ELPA_KERNEL_GENERIC
- make check TEST_FLAGS='1500 50 16'
# - ./test_scripts/get_coverage_summary.sh
- ./ci_coverage_collect
artifacts:
paths:
- coverage_data
# test distcheck
distcheck:
......@@ -2412,7 +2479,8 @@ distcheck:
script:
- ./autogen.sh
- ./configure --with-mpi=no
- make distcheck DISTCHECK_CONFIGURE_FLAGS="--with-mpi=no" TEST_FLAGS='1500 50 16'
# stupid 'make distcheck' leaves behind write-protected files that the stupid gitlab runner cannot remove
- make distcheck DISTCHECK_CONFIGURE_FLAGS="--with-mpi=no" TEST_FLAGS='1500 50 16' || { chmod u+rwX -R . ; exit 1 ; }
# test test_project
......@@ -2441,3 +2509,13 @@ test_project:
- rm -rf installdest
- popd
## print coverage results
#total_coverage:
# stage: coverage
# tags:
# - cpu
# script:
# - ./ci_coverage_summary
# artifacts:
# paths:
# - coverage_summary
Changelog for release ELPA 2016.05.001
Changelog for release ELPA 2016.05.003
- fix a problem with the build of SSE kernels
- make some (internal) functions public, such that they
can be used outside of ELPA
- add documentation and interfaces for new public functions
- shorten file namses and directory names for test programs
in under to by pass "make agrument list too long" error
Changelog for release ELPA 2016.05.002
- fix problem with generated *.sh- check scripts
- name library differently if build without MPI support
......
......@@ -854,33 +854,33 @@ EXCLUDE = @top_srcdir@/src/elpa1_compute.F90 \
@top_srcdir@/src/ftimings/resident_set_size.c \
@top_srcdir@/src/ftimings/time.c \
@top_srcdir@/src/ftimings/virtual_memory.c \
@top_srcdir@/test/shared_sources/mod_output_types.F90 \
@top_srcdir@/test/c_test_programs/elpa1_test_complex_c_version.c \
@top_srcdir@/test/c_test_programs/elpa1_test_real_c_version.c \
@top_srcdir@/test/c_test_programs/elpa2_test_complex_c_version.c \
@top_srcdir@/test/c_test_programs/elpa2_test_real_c_version.c \
@top_srcdir@/test/fortran_test_programs/read_real.F90 \
@top_srcdir@/test/fortran_test_programs/test_complex2_choose_kernel_with_api.F90 \
@top_srcdir@/test/fortran_test_programs/test_complex2_default_kernel.F90 \
@top_srcdir@/test/fortran_test_programs/test_complex2.F90 \
@top_srcdir@/test/fortran_test_programs/test_complex.F90 \
@top_srcdir@/test/fortran_test_programs/test_real2_choose_kernel_with_api.F90 \
@top_srcdir@/test/fortran_test_programs/test_real2_default_kernel.F90 \
@top_srcdir@/test/fortran_test_programs/test_real2_default_kernel_qr_decomposition.F90 \
@top_srcdir@/test/fortran_test_programs/test_real2.F90 \
@top_srcdir@/test/fortran_test_programs/test_real.F90 \
@top_srcdir@/test/fortran_test_programs/test_real_with_c.F90 \
@top_srcdir@/test/shared_sources/blacs_infrastructure.F90 \
@top_srcdir@/test/shared_sources/call_elpa1.c \
@top_srcdir@/test/shared_sources/call_elpa2.c \
@top_srcdir@/test/shared_sources/check_correctnes.F90 \
@top_srcdir@/test/shared_sources/mod_from_c.F90 \
@top_srcdir@/test/shared_sources/prepare_matrix.F90 \
@top_srcdir@/test/shared_sources/read_input_parameters.F90 \
@top_srcdir@/test/shared_sources/redir.c \
@top_srcdir@/test/shared_sources/redirect.F90 \
@top_srcdir@/test/shared_sources/setup_mpi.F90 \
@top_srcdir@/test/shared_sources/util.F90
@top_srcdir@/test/shared/mod_output_types.F90 \
@top_srcdir@/test/C/elpa1_test_complex_c_version.c \
@top_srcdir@/test/C/elpa1_test_real_c_version.c \
@top_srcdir@/test/C/elpa2_test_complex_c_version.c \
@top_srcdir@/test/C/elpa2_test_real_c_version.c \
@top_srcdir@/test/Fortran/read_real.F90 \
@top_srcdir@/test/Fortran/test_complex2_choose_kernel_with_api.F90 \
@top_srcdir@/test/Fortran/test_complex2_default_kernel.F90 \
@top_srcdir@/test/Fortran/test_complex2.F90 \
@top_srcdir@/test/Fortran/test_complex.F90 \
@top_srcdir@/test/Fortran/test_real2_choose_kernel_with_api.F90 \
@top_srcdir@/test/Fortran/test_real2_default_kernel.F90 \
@top_srcdir@/test/Fortran/test_real2_default_kernel_qr_decomposition.F90 \
@top_srcdir@/test/Fortran/test_real2.F90 \
@top_srcdir@/test/Fortran/test_real.F90 \
@top_srcdir@/test/Fortran/test_real_with_c.F90 \
@top_srcdir@/test/shared/blacs_infrastructure.F90 \
@top_srcdir@/test/shared/call_elpa1.c \
@top_srcdir@/test/shared/call_elpa2.c \
@top_srcdir@/test/shared/check_correctnes.F90 \
@top_srcdir@/test/shared/mod_from_c.F90 \
@top_srcdir@/test/shared/prepare_matrix.F90 \
@top_srcdir@/test/shared/read_input_parameters.F90 \
@top_srcdir@/test/shared/redir.c \
@top_srcdir@/test/shared/redirect.F90 \
@top_srcdir@/test/shared/setup_mpi.F90 \
@top_srcdir@/test/shared/util.F90
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
# directories that are symbolic links (a Unix file system feature) are excluded
......
......@@ -2,7 +2,7 @@
## Preamle ##
This file provides documentation on how to build the *ELPA* library in **version ELPA-2016.05.002**.
This file provides documentation on how to build the *ELPA* library in **version ELPA-2016.05.003**.
Although most of the documentation is generic to any *ELPA* release, some configure options
described in this document might be specific to the above mentioned version of *ELPA*.
......@@ -33,6 +33,11 @@ for the documentation how to proceed.
Please look at configure --help for all available options.
Please note, that it is necessary to set the **compiler options** like optimisation flags etc.
for the Fortran and C part.
For example sth. like this is a usual way ./configure FCFLAGS="-O2 -mavx" CFLAGS="-O2 -mavx"
For details, please have a look at the documentation for the compilers of your choice.
### Setting of MPI compiler and libraries ###
In the standard case *ELPA* need a MPI compiler and MPI libraries. The configure script
......
......@@ -38,3 +38,9 @@ https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
the naming conventions. The old interface are still available
The states of release 2016.05.001 and 2016.05.002 define this interface
- 6
Compatible API change w.r.t. previous version: Interfaces have been made public.
The state of release 2016.05.003 defines this interface
This diff is collapsed.
......@@ -2,7 +2,7 @@
## Current Release ##
The current release is ELPA 2016.05.002
The current release is ELPA 2016.05.003
## About *ELPA*
......@@ -87,7 +87,7 @@ the possible configure options.
## Using *ELPA*
Please have a look at the "**USERS_GUIDE**" file, to get a documentation or at the [online]
(http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2016.05.002/html/index.html) doygen
(http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2016.05.003/html/index.html) doygen
documentation, where you find the definition of the interfaces.
## Contributing to *ELPA*
......
This file contains the release notes for the ELPA 2016.05.002 version
This file contains the release notes for the ELPA 2016.05.003 version
What is new?
-------------
For changes since release ELPA 2016.05.001 please have a look at the Changelog file
For changes since release ELPA 2016.05.002 please have a look at the Changelog file
a) ABI change
......@@ -15,4 +15,4 @@ Any incompatibilities to previous version?
---------------------------------------
As mentioned before, the ABI of ELPA was not changed; There is no
incompatibility with the previous version ELPA 2016.05.001. and ELPA 2015.11.001 releases. There is, however, an incompatibility with older versions than ELPA 2015.11.001 !
incompatibility with the previous version ELPA 2016.05.002. There is, however, an incompatibility with older versions than ELPA 2015.11.001 !
......@@ -9,7 +9,7 @@ Local documentation (via man pages) should be available (if *ELPA* has been inst
For example "man get_elpa_communicators" should provide the documentation for the *ELPA* function which sets
the necessary communicators.
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2016.05.002/html/index.html)
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2016.05.003/html/index.html)
for each *ELPA* release is available.
### General concept of the *ELPA* library ###
......@@ -20,7 +20,7 @@ The *ELPA* library consists of two main parts:
Both variants of the *ELPA* solvers are available for real or complex valued matrices.
Thus *ELPA* provides the following user functions (see man pages or [online] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2016.05.002/html/index.html) for details):
Thus *ELPA* provides the following user functions (see man pages or [online] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2016.05.003/html/index.html) for details):
- get_elpa_communicators : set the row / column communicators for *ELPA*
- solve_evp_complex_1stage : solve a complex valued eigenvale proplem with the *ELPA 1stage* solver
......
#!/bin/bash
cov_dir=coverage_data
cov_file=$cov_dir/coverage_${CI_BUILD_REF}_${CI_BUILD_NAME}.info
prefix=$cov_dir/coverage_${CI_BUILD_REF}_${CI_BUILD_NAME}
mkdir -p $cov_dir/
lcov --capture \
$(find src/ -name "*.gcn[ao]" | xargs -n 1 dirname | sort -u | grep -v ftimings | xargs -n 1 echo --directory) \
--output-file $cov_file
lcov -r $cov_file "/usr/*" -o $cov_file
lcov -r $cov_file "/afs/*" -o $cov_file
lcov -r $cov_file "src/ftimings" -o $cov_file
for dir in $(find -name "*.gcno" -print0 | xargs -0 -n 1 dirname | sort -u); do
dir=${dir#./};
lcov -c -b $PWD -d $dir --to-package $prefix.${dir//\//_}.package;
done
#!/bin/bash
for p in coverage_data/coverage_${CI_BUILD_REF}*.package ; do
cov_file=${p%.package}.info
lcov -c -b $PWD --from-package $p --output-file $cov_file
lcov -r $cov_file "/usr/*" -o $cov_file
lcov -r $cov_file "/afs/*" -o $cov_file
lcov -r $cov_file "src/ftimings" -o $cov_file
done
lcov $(for i in coverage_data/coverage_${CI_BUILD_REF}_*.info; do echo -a $i; done) -o coverage_data/coverage_${CI_BUILD_REF}.info
lcov --summary coverage_data/coverage_${CI_BUILD_REF}.info 2>&1 | \
awk '/lines|functions/ {
......@@ -11,4 +19,6 @@ lcov --summary coverage_data/coverage_${CI_BUILD_REF}.info 2>&1 | \
print "";
}' | \
sed 's/^/__COVERAGE__:/; s/, $//;'
genhtml coverage_data/coverage_${CI_BUILD_REF}.info -o coverage_data
mkdir coverage_summary
genhtml coverage_data/coverage_${CI_BUILD_REF}.info -o coverage_summary
AC_PREREQ([2.69])
# Remember to change the version also in elpa.spec
AC_INIT([elpa],[2016.05.002], [elpa-library@mpcdf.mpg.de])
# The version is set in elpa.spec, to have a single point of reference
AC_INIT([elpa],m4_esyscmd_s([awk '/^ *Version:/ {print $2;}' elpa.spec]), [elpa-library@mpcdf.mpg.de])
AC_SUBST([PACKAGE_VERSION])
AC_CONFIG_SRCDIR([src/elpa1.F90])
......@@ -34,7 +33,7 @@ AM_SILENT_RULES([yes])
# by the current interface, as they are ABI compatible (e.g. only new symbols
# were added by the new interface)
#
AC_SUBST([ELPA_SO_VERSION], [5:1:1])
AC_SUBST([ELPA_SO_VERSION], [6:0:2])
#
......@@ -95,6 +94,7 @@ fi
AC_PROG_INSTALL
AM_PROG_AR
AM_PROG_AS
AM_PROG_CC_C_O
# Fortran
......@@ -121,6 +121,14 @@ if test x"${enable_openmp}" = x"yes"; then
FCFLAGS="$OPENMP_FCFLAGS $FCFLAGS"
fi
dnl check which MPI binray invokes a MPI job
if test x"$with_mpi" = x"yes"; then
AC_CHECK_PROGS([MPI_BINARY], [mpiexec.hydra mpiexec mpirun], [no])
if test x"$MPI_BINARY" = x"no"; then
AC_MSG_ERROR([Could not find either of the MPI binaries: mpiexec.hydra, mpiexec, mpirun])
fi
fi
## C++
#AC_LANG([C++])
#AC_PROG_CXX
......@@ -158,50 +166,51 @@ install_complex_generic_simple=yes
AC_LANG([C])
dnl build with ftimings support
AC_MSG_CHECKING(whether ELPA should be build with ftimings support)
AC_ARG_WITH([ftimings],
AS_HELP_STRING([--with-ftimings],
[detailed timings, default no.]),
[with_ftimings=yes],
[with_ftimings=no])
AC_MSG_RESULT([${with_ftimings}])
dnl build with the possibilty to redirect stdout and stderr
dnl per MPI task in a file
AC_MSG_CHECKING(whether stdout/stderr file redirect should be enabled)
AC_ARG_WITH([redirect],
AS_HELP_STRING([--with-redirect],
[for test programs, allow redirection of stdout/stderr per MPI taks in a file (useful for ftimings), default no.]),
[with_redirect=yes],
[with_redirect=no])
AC_MSG_RESULT([${with_redirect}])
if test x"${with_redirect}" = x"yes"; then
AC_ARG_ENABLE([redirect],
AS_HELP_STRING([--enable-redirect],
[for test programs, allow redirection of stdout/stderr per MPI taks in a file (useful for timing), default no.]),
[],
[enable_redirect=no])
AC_MSG_RESULT([${enable_redirect}])
dnl redirect
if test x"${enable_redirect}" = x"yes"; then
AC_DEFINE([HAVE_REDIRECT], [1], [Redirect stdout and stderr of test programs per MPI tasks to a file])
fi
AM_CONDITIONAL([HAVE_REDIRECT],[test x"$with_redirect" = x"yes"])
if test x"${with_ftimings}" = x"yes"; then
AC_DEFINE([HAVE_DETAILED_TIMINGS], [1], [Enable more timings])
AC_ARG_ENABLE([papi],
[AS_HELP_STRING([--disable-papi],[Do not use PAPI to also measure flop count, autodetected by default])],
[want_papi=$enableval],[want_papi="auto"])
papi_found=unknown
if test x"$want_papi" != x"no" ; then
AC_CHECK_LIB([papi],[PAPI_library_init],[papi_found="yes"],[papi_found="no"])
if test x"$want_papi" = x"yes" ; then
AM_CONDITIONAL([HAVE_REDIRECT],[test x"$enable_redirect" = x"yes"])
dnl build with ftimings support
AC_MSG_CHECKING(whether ELPA should be build with more detailed timing support)
AC_ARG_ENABLE([timing],
AS_HELP_STRING([--enable-timing],
[more detailed timing, default no.]),
[],
[enable_timings=no])
AC_MSG_RESULT([${enable_timings}])
if test x"${enable_timings}" = x"yes"; then
AC_DEFINE([HAVE_DETAILED_TIMINGS], [1], [Enable more timing])
fi
AM_CONDITIONAL([HAVE_DETAILED_TIMINGS],[test x"$enable_timings" = x"yes"])
dnl PAPI for ftimings
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])],
[],
[with_papi="no"])
if test x"${enable_timings}" = x"yes"; then
if test x"$with_papi" = x"yes" ; then
AC_SEARCH_LIBS([PAPI_library_init],[papi],
[papi_found=yes],[papi_found=no])
if test x"$papi_found" = x"no" ; then
AC_MSG_ERROR(["Could not find usable PAPI installation, please adjust CFLAGS, LDFLAGS"])
fi
fi
AC_MSG_ERROR(["Could not find usable PAPI installation, please install or adjust CFLAGS, LDFLAGS"])
fi
if test x"$papi_found" = x"yes"; then
AC_DEFINE([HAVE_LIBPAPI], [1], [Use the PAPI library])
LIBS="-lpapi $LIBS"
fi
fi
AM_CONDITIONAL([HAVE_DETAILED_TIMINGS],[test x"$with_ftimings" = x"yes"])
AC_MSG_CHECKING(whether double-precision SSE assembly kernel can be compiled)
......@@ -943,6 +952,7 @@ fi
AM_CONDITIONAL([WANT_SINGLE_PRECISION_REAL],[test x"$want_single_precision" = x"yes"])
AM_CONDITIONAL([WANT_SINGLE_PRECISION_COMPLEX],[test x"$want_single_precision" = x"yes"])
AC_SUBST([MPI_BINARY])
AC_SUBST([WITH_MKL])
AC_SUBST([WITH_BLACS])
AC_SUBST([with_amd_bulldozer_kernel])
......
......@@ -19,8 +19,20 @@
# Set to 0 to disable
%define with_openmp 1
# Logic to figure out if we are on SLES-11-SP4, which need special
# treatment (custom compiler package name, old RPM macros)
%if 0%{suse_version} > 0
%if 0%{suse_version} <= 1110
%define sle_11_sp4 1
%else
%define sle_11_sp4 0
%endif
%else
%define sle_11_sp4 0
%endif
Name: elpa
Version: 2016.05.002
Version: 2016.05.003
Release: 2
Summary: A massively parallel eigenvector solver
License: LGPL-3.0
......@@ -28,19 +40,25 @@ Group: System/Libraries
Url: https://elpa.rzg.mpg.de/
Source0: https://elpa.mpcdf.mpg.de/html/Releases/%{version}/%{name}-%{version}.tar.gz
Requires: openmpi
BuildRequires: gcc-c++
BuildRequires: gcc-fortran
# For SLE_11_SP4:
%if %{sle_11_sp4} == 1
BuildRequires: gcc48-c++
BuildRequires: gcc48-fortran
%else
BuildRequires: gcc-c++ >= 4.8
BuildRequires: gcc-fortran >= 4.8
%endif
BuildRequires: strace
BuildRequires: openmpi-devel
BuildRequires: blas
BuildRequires: blas-devel
BuildRequires: lapack
BuildRequires: lapack-devel
BuildRequires: pkg-config
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: libtool
%if %{defined fedora}
BuildRequires: scalapack-openmpi
BuildRequires: scalapack-openmpi-devel
BuildRequires: blacs-openmpi
BuildRequires: blacs-openmpi-devel
BuildRequires: environment-modules
%endif
......@@ -51,6 +69,7 @@ BuildRequires: libscalapack2-openmpi-devel
# For make check, mpirun of openmpi needs an installed openssh
BuildRequires: openssh
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
A new efficient distributed parallel direct eigenvalue solver for
......@@ -176,16 +195,56 @@ that use %{name}_openmp.
%if %{defined fedora}
module load mpi/openmpi-%{_arch}
%endif
if [ ! -e configure ] ; then
# It is possible to use the Open Build Server to automatically
# checkout from git directly, extract this spec file and set the
# version of the extracted spec file to some autogenerated
# string based on the date and git hash of the checkout commit.
# This line ensures that the spec file in the tar-ball has
# that same version, so that autogen will insert that version
# in the configure script
perl -pi -e "s/^Version:.*/Version: %{version}/" elpa.spec
./autogen.sh
fi
# Set-up compilers for SLE_11_SP4
%if %{sle_11_sp4} == 1
mkdir compilers
pushd compilers
ln -s /usr/bin/gfortran-4.8 gfortran
ln -s /usr/bin/gcc-4.8 gcc
export PATH=$PWD:$PATH
pushd