Commit 7097a246 authored by Andreas Marek's avatar Andreas Marek
Browse files

Merge branch 'master_pre_stage' into ELPA2_GPU

parents 1fb3347b 919e9ba0
This diff is collapsed.
......@@ -2,6 +2,20 @@ Changelog for upcoming release
- not yet decided
Changelog for ELPA 2019.11.001
- solve a bug when using parallel make builds
- check the cpuid set during build time
- add experimental feature "heterogenous-cluster-support"
- add experimental feature for 64bit integer LAS/LAPACK/SCALAPACK support
- add experimental feature for 64bit integer MPI support
- support of ELPA for real valued skew-symmetric matrices, please cite:
https://arxiv.org/abs/1912.04062
- cleanup of the GPU version
- bugfix in the OpenMP version
- bugfix on the Power8/9 kernels
- bugfix on ARM aarch64 FMA kernels
Changelog for ELPA 2019.05.002
......
......@@ -8,37 +8,9 @@ in the (near) future from the *ELPA* library.
With the release of ELPA 2017.05.001 a new, more general API for the library has
been published. All new features of ELPA will only be accesible via this new interface.
For ease of transion, the API as defined in release ELPA 2016.11.001 has been frozen in
and will be still supported for some time, albeit without any new features.
The old, legacy API will be deprecated with the release ELPA 2019.11.001 !
Independent of the freezing in of the old, legacy API from the release 2016.11.001 the
following listed interfaces will be removed at some time.
In order to unfiy the namespace of the *ELPA* public interfaces, several interfaces
have been replaced by new names. The old interfaces will be removed
| Deprecated interface | Replacement | Comment |
|:------------------------ |:------------------------------------- |:----------------------------- |
| get_elpa_row_col_coms | elpa_get_communicators | (removed since 2017.11.001) |
| get_elpa_communicators | elpa_get_communicators | (removed since 2017.11.001) |
| solve_evp_real | elpa_solve_evp_real_1stage_double | (removed since 2017.11.001) |
| solve_evp_complex | elpa_solve_evp_complex_1stage_double | (removed since 2017.11.001) |
| solve_evp_real_1stage | elpa_solve_evp_real_1stage_double | (removed since 2019.05.001) |
| solve_evp_complex_1stage | elpa_solve_evp_complex_1stage_double | (removed since 2019.05.001) |
| solve_evp_real_2stage | elpa_solve_evp_real_2stage_double | (removed since 2019.05.001) |
| solve_evp_complex_2stage | elpa_solve_evp_complex_2stage_double | (removed since 2019.05.001) |
| mult_at_b_real | elpa_mult_at_b_real_double | (removed since 2019.05.001) |
| mult_ah_b_complex | elpa_mult_ah_b_complex_double | (removed since 2019.05.001) |
| invert_trm_real | elpa_invert_trm_real_double | (removed since 2019.05.001) |
| invert_trm_complex | elpa_invert_trm_complex_double | (removed since 2019.05.001) |
| cholesky_real | elpa_cholesky_real_double | (removed since 2019.05.001) |
| cholesky_complex | elpa_cholesky_complex_double | (removed since 2019.05.001) |
| solve_tridi | elpa_solve_tridi_double | (removed since 2019.05.001) |
For all symbols also the corresponding "_single" routines are available
For ease of transion, the old API as defined in release ELPA 2016.11.001 has been frozen in
and will be still supported for some time, albeit without any new features. This old API has been
deprecated in release ELPA 2019.11.001 and has been removed.
......
......@@ -885,6 +885,7 @@ EXCLUDE = @top_srcdir@/src/GPU/check_for_gpu.F90 \
@top_srcdir@/src/elpa_c_interface.c \
@top_srcdir@/src/elpa2/mod_pack_unpack_cpu.F90 \
@top_srcdir@/src/elpa2/elpa2_symm_matrix_allreduce_real_template.F90 \
@top_srcdir@/src/elpa2/elpa2_ssymm_matrix_allreduce_real_template.F90 \
@top_srcdir@/src/elpa2/elpa2_tridiag_band_template.F90 \
@top_srcdir@/src/elpa2/mod_redist_band.F90 \
@top_srcdir@/src/elpa2/pack_unpack_cpu.F90 \
......@@ -1001,6 +1002,7 @@ EXCLUDE = @top_srcdir@/src/GPU/check_for_gpu.F90 \
@top_srcdir@/src/elpa1/elpa_solve_tridi_impl_public.F90 \
@top_srcdir@/src/elpa1/elpa1_trans_ev_template.F90 \
@top_srcdir@/src/elpa1/elpa_transpose_vectors.F90 \
@top_srcdir@/src/elpa1/elpa_transpose_vectors_ss.F90 \
@top_srcdir@/src/elpa1/elpa1_auxiliary.F90 \
@top_srcdir@/src/elpa1/elpa1_tridiag_template.F90 \
@top_srcdir@/src/elpa1/elpa1_tools_template.F90 \
......
......@@ -2,7 +2,7 @@
## Preamble ##
This file provides documentation on how to build the *ELPA* library in **version ELPA-2019.05.002**.
This file provides documentation on how to build the *ELPA* library in **version ELPA-2019.11.001**.
With release of **version ELPA-2017.05.001** the build process has been significantly simplified,
which makes it easier to install the *ELPA* library.
......@@ -14,9 +14,11 @@ The release ELPA 2018.11.001 was the last release, where the legacy API has been
enabled by default (and can be disabled at build time).
With release ELPA 2019.05.001 the legacy API is disabled by default, however,
can be still switched on at build time.
Most likely with the release ELPA 2019.11.001 the legacy API will be deprecated and not supported anymore.
With this release ELPA 2019.11.001, the legacy API will be deprecated and not supported anymore.
The release of ELPA 2019.11.001 does change the API and ABI compared to the release 2019.05.002, since
the legacy API has been droped.
The release of ELPA 2019.05.002 does not change the API and ABI compared to the release 2019.05.001
## How to install *ELPA* ##
First of all, if you do not want to build *ELPA* yourself, and you run Linux,
......@@ -84,7 +86,11 @@ An excerpt of the most important (*ELPA* specific) options reads as follows:
| --disable-Fortran2008-features | disable Fortran 2008 if compiler does not support it |
| --enable-pyhton | build and install python wrapper, default no |
| --enable-python-tests | enable python tests, default no. |
| --enable-skew-symmetric-support | enable support for real valued skew-symmetric matrices |
| --enable-store-build-config | stores the build config in the library object |
| --64bit-integer-math-support | assumes that BLAS/LAPACK/SCALAPACK use 64bit integers (experimentatl) |
| --64bit-integer-mpi-support | assumes that MPI uses 64bit integers (experimental) |
| --heterogenous-cluster-support | allows ELPA to run on clusters of nodes with different Intel CPUs (experimental) |
We recommend that you do not build ELPA in its main directory but that you use it
in a sub-directory:
......
......@@ -4,13 +4,21 @@ For more details and recent updates please visit the online [issue system] (http
Issues which are not mentioned in a newer release are (considered as) solved.
### ELPA 2019.11.001 release ###
- same issues as in ELPA 2017.11.001
- memory leak in in GPU version has been fixed
- no other issues currently known
### ELPA 2019.05.002 release ###
- memory leak in GPU version
### ELPA 2019.05.001 release ###
- memory leak in GPU version
### ELPA 2018.11.001 release ###
- same issues as in ELPA 2017.11.001
- on (officially not supported) 32bit systems hangs in MPI can occur
### ELPA 2018.05.001 release ###
- same issues as in ELPA 2017.11.001
- on (officially not supported) 32bit systems hangs in MPI can occur
- printing of autotune has been implemented
### ELPA 2017.11.001 release ###
- the elpa autotune print functions cannot print at the moment
......
......@@ -21,15 +21,6 @@ libelpa@SUFFIX@_public_la_SOURCES = \
src/elpa_api.F90 \
src/elpa_constants.F90
if ENABLE_LEGACY
libelpa@SUFFIX@_public_la_SOURCES += \
src/elpa_driver/legacy_interface/elpa.F90 \
src/elpa1/legacy_interface/elpa1.F90 \
src/elpa2/legacy_interface/elpa2.F90 \
src/elpa2/legacy_interface/elpa2_utilities.F90 \
src/elpa1/legacy_interface/elpa1_auxiliary.F90
endif
# internal parts
noinst_LTLIBRARIES += libelpa@SUFFIX@_private.la
libelpa@SUFFIX@_private_la_FCFLAGS = $(AM_FCFLAGS) $(FC_MODOUT)private_modules $(FC_MODINC)private_modules
......@@ -64,29 +55,15 @@ libelpa@SUFFIX@_private_la_SOURCES = \
src/elpa1/elpa1.F90 \
src/elpa2/elpa2.F90 \
src/elpa_generalized/cannon.c \
#src/elpa_generalized/test_c_bindings.c \
src/helpers/matrix_plot.F90 \
src/general/mod_elpa_skewsymmetric_blas.F90 \
src/elpa_index.c
libelpa@SUFFIX@_private_la_SOURCES += src/elpa_c_interface.c
# elpa_utilities.F90 is private in new API, public in legacy
if ENABLE_LEGACY
libelpa@SUFFIX@_public_la_SOURCES += \
src/general/elpa_utilities.F90
else
libelpa@SUFFIX@_private_la_SOURCES += \
src/general/elpa_utilities.F90
endif
if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
src/elpa_driver/legacy_interface/elpa_driver_c_interface.F90 \
src/elpa1/legacy_interface/elpa_1stage_c_interface.F90 \
src/elpa2/legacy_interface/elpa_2stage_c_interface.F90
endif
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
src/elpa1/elpa_reduce_add_vectors.F90 \
......@@ -122,28 +99,12 @@ EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES = \
src/elpa1/elpa_invert_trm.F90 \
src/elpa1/elpa_multiply_a_b.F90 \
src/elpa1/elpa_solve_tridi_impl_public.F90 \
src/general/elpa_ssr2_template.F90 \
src/general/elpa_ssmv_template.F90 \
src/general/precision_macros.h \
src/general/precision_typedefs.h \
src/general/precision_kinds.F90
if ENABLE_LEGACY
EXTRA_libelpa@SUFFIX@_private_la_DEPENDENCIES += \
src/elpa1/legacy_interface/elpa1_template.F90 \
src/elpa2/legacy_interface/elpa2_template.F90 \
src/elpa1/legacy_interface/elpa1_c_interface_template.F90 \
src/elpa2/legacy_interface/elpa2_c_interface_template.F90 \
src/elpa_driver/legacy_interface/elpa_driver_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_solve_tridi_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_mult_at_b_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_mult_ah_b_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_invert_trm_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_cholesky_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_cholesky_template.F90 \
src/elpa1/legacy_interface/elpa_invert_trm.F90 \
src/elpa1/legacy_interface/elpa_multiply_a_b.F90 \
src/elpa1/legacy_interface/elpa_solve_tridi.F90
endif
if HAVE_DETAILED_TIMINGS
libelpa@SUFFIX@_private_la_SOURCES += \
src/ftimings/ftimings.F90 \
......@@ -155,11 +116,6 @@ libelpa@SUFFIX@_private_la_SOURCES += \
src/ftimings/virtual_memory.c \
src/ftimings/papi.c
if ENABLE_LEGACY
libelpa@SUFFIX@_private_la_SOURCES += \
src/helpers/timer.F90
endif
else
libelpa@SUFFIX@_private_la_SOURCES += \
src/helpers/timer_dummy.F90
......@@ -176,6 +132,11 @@ if !HAVE_DETAILED_TIMINGS
endif
endif
if HAVE_HETEROGENOUS_CLUSTER_SUPPORT
libelpa@SUFFIX@_private_la_SOURCES += src/helpers/get_cpuid_set.c src/helpers/mod_simd_kernel.F90
endif
if WITH_REAL_GENERIC_KERNEL
libelpa@SUFFIX@_private_la_SOURCES += src/elpa2/kernels/real.F90
endif
......@@ -479,16 +440,15 @@ nobase_elpa_include_HEADERS = \
$(wildcard modules/*) \
src/helpers/lapack_interfaces.h \
src/helpers/scalapack_interfaces.h \
elpa/elpa_simd_constants.h \
elpa/elpa.h \
elpa/elpa_generic.h \
elpa/elpa_legacy.h
elpa/elpa_generic.h
nobase_nodist_elpa_include_HEADERS = \
elpa/elpa_version.h \
elpa/elpa_constants.h \
elpa/elpa_generated.h \
elpa/elpa_generated_c_api.h \
elpa/elpa_generated_legacy.h
elpa/elpa_generated_c_api.h
dist_man_MANS = \
man/elpa2_print_kernels.1 \
......@@ -498,6 +458,8 @@ dist_man_MANS = \
man/elpa_setup.3 \
man/elpa_eigenvalues.3 \
man/elpa_eigenvectors.3 \
man/elpa_skew_eigenvalues.3 \
man/elpa_skew_eigenvectors.3 \
man/elpa_generalized_eigenvectors.3 \
man/elpa_generalized_eigenvalues.3 \
man/elpa_cholesky.3 \
......@@ -511,57 +473,11 @@ dist_man_MANS = \
man/elpa_autotune_save_state.3 \
man/elpa_autotune_load_state.3 \
man/elpa_autotune_print_state.3 \
man/elpa_uninit.3
if ENABLE_LEGACY
dist_man_MANS += \
man/solve_evp_real_1stage_double.3 \
man/solve_evp_complex_1stage_double.3 \
man/solve_evp_real_2stage_double.3 \
man/solve_evp_complex_2stage_double.3 \
man/elpa_solve_evp_real_1stage_double.3 \
man/elpa_solve_evp_complex_1stage_double.3 \
man/elpa_solve_evp_real_2stage_double.3 \
man/elpa_solve_evp_complex_2stage_double.3 \
man/elpa_get_communicators.3 \
man/elpa_mult_at_b_real_double.3 \
man/elpa_mult_at_b_real_single.3 \
man/elpa_mult_ah_b_complex_double.3 \
man/elpa_mult_ah_b_complex_single.3 \
man/elpa_invert_trm_real_double.3 \
man/elpa_invert_trm_real_single.3 \
man/elpa_invert_trm_complex_double.3 \
man/elpa_invert_trm_complex_single.3 \
man/elpa_solve_evp_real_double.3 \
man/elpa_solve_evp_real_single.3 \
man/elpa_solve_evp_complex_double.3 \
man/elpa_solve_evp_complex_single.3 \
man/elpa_autotune_setup.3 \
man/elpa_autotune_step.3 \
man/elpa_autotune_set_best.3 \
man/elpa_autotune_deallocate.3
endif
if WANT_SINGLE_PRECISION_REAL
if ENABLE_LEGACY
dist_man_MANS += \
man/solve_evp_real_1stage_single.3 \
man/elpa_solve_evp_real_1stage_single.3 \
man/elpa_solve_evp_real_2stage_single.3 \
man/solve_evp_real_2stage_single.3
endif
endif
if WANT_SINGLE_PRECISION_COMPLEX
if ENABLE_LEGACY
dist_man_MANS += \
man/solve_evp_complex_1stage_single.3 \
man/elpa_solve_evp_complex_1stage_single.3 \
man/elpa_solve_evp_complex_2stage_single.3 \
man/solve_evp_complex_2stage_single.3
endif
endif
man/elpa_autotune_deallocate.3 \
man/elpa_uninit.3
dist_doc_DATA = README.md USERS_GUIDE.md USERS_GUIDE_DEPRECATED_LEGACY_API.md INSTALL.md CONTRIBUTING.md LICENSE Changelog COPYING/COPYING COPYING/gpl.txt COPYING/lgpl.txt
......@@ -583,6 +499,9 @@ test_program_fcflags = $(AM_FCFLAGS) $(FC_MODOUT)test_modules $(FC_MODINC)test_m
noinst_LTLIBRARIES += libelpatest@SUFFIX@.la
libelpatest@SUFFIX@_la_FCFLAGS = $(test_program_fcflags)
libelpatest@SUFFIX@_la_SOURCES = \
test/shared/tests_variable_definitions.F90 \
test/shared/mod_tests_scalapack_interfaces.F90 \
test/shared/mod_tests_blas_interfaces.F90 \
test/shared/test_util.F90 \
test/shared/test_read_input_parameters.F90 \
test/shared/test_check_correctness.F90 \
......@@ -610,10 +529,6 @@ elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)modules
include test_programs.am
if ENABLE_LEGACY
include legacy_test_programs.am
endif
#include test_programs_manual.am
noinst_PROGRAMS += validate_double_instance@SUFFIX@
......@@ -714,10 +629,6 @@ CLEANFILES = \
elpa1_real* \
elpa*.sh \
test*.sh \
legacy_real* \
legacy_complex* \
legacy_single_real* \
legacy_single_complex* \
single_real* \
single_complex* \
real* \
......@@ -730,7 +641,6 @@ CLEANFILES = \
clean-local:
-rm -rf modules/* private_modules/* test_modules/* .fortran_dependencies/*
-rm -rf validate_*.sh
-rm -rf legacy_*.sh
-rm -rf real_2stage*.sh
-rm -rf complex_2stage*.sh
-rm -rf single_complex_2stage*.sh
......@@ -752,12 +662,13 @@ EXTRA_DIST = \
elpa.spec \
elpa/elpa.h \
elpa/elpa_generic.h \
elpa/elpa_legacy.h \
fdep/fortran_dependencies.mk \
fdep/fortran_dependencies.pl \
manual_cpp \
nvcc_wrap \
remove_xcompiler \
src/helpers/fortran_blas_interfaces.F90 \
src/helpers/fortran_scalapack_interfaces.F90 \
src/GPU/cuUtils_template.cu \
src/elpa_api_math_template.F90 \
src/elpa_impl_math_template.F90 \
......@@ -807,8 +718,11 @@ EXTRA_DIST = \
src/general/precision_macros.h \
src/general/precision_typedefs.h \
src/general/precision_kinds.F90 \
test/shared/test_precision_kinds.F90 \
src/general/prow_pcol.F90 \
src/general/sanity.F90 \
src/general/elpa_ssr2_template.F90 \
src/general/elpa_ssmv_template.F90 \
test/Fortran/assert.h \
test/Fortran/elpa_print_headers.F90 \
test/shared/test_check_correctness_template.F90 \
......@@ -832,38 +746,7 @@ EXTRA_DIST = \
test_project_C/fdep \
test_project_C/m4 \
test_project_C/src/test_real.c \
test_project_C/src/test_blacs_infrastructure.F90\
test_project_1stage_legacy_api/Makefile.am \
test_project_1stage_legacy_api/autogen.sh \
test_project_1stage_legacy_api/configure.ac \
test_project_1stage_legacy_api/fdep \
test_project_1stage_legacy_api/m4 \
test_project_1stage_legacy_api/src/test_real.F90 \
test_project_2stage_legacy_api/Makefile.am \
test_project_2stage_legacy_api/autogen.sh \
test_project_2stage_legacy_api/configure.ac \
test_project_2stage_legacy_api/fdep \
test_project_2stage_legacy_api/m4 \
test_project_2stage_legacy_api/src/test_real2.F90
if ENABLE_LEGACY
EXTRA_DIST += \
src/elpa1/elpa1_solve_tridi_real_template.F90 \
src/elpa1/legacy_interface/elpa1_template.F90 \
src/elpa2/legacy_interface/elpa2_template.F90 \
src/elpa1/legacy_interface/elpa1_c_interface_template.F90 \
src/elpa2/legacy_interface/elpa2_c_interface_template.F90 \
src/elpa_driver/legacy_interface/elpa_driver_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_solve_tridi_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_mult_at_b_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_mult_ah_b_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_invert_trm_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_cholesky_c_interface_template.F90 \
src/elpa1/legacy_interface/elpa_cholesky_template.F90 \
src/elpa1/legacy_interface/elpa_invert_trm.F90 \
src/elpa1/legacy_interface/elpa_multiply_a_b.F90 \
src/elpa1/legacy_interface/elpa_solve_tridi.F90
endif
test_project_C/src/test_blacs_infrastructure.F90
if WITH_SCALAPACK_TESTS
EXTRA_DIST += \
......
......@@ -2,7 +2,7 @@
## Current Release ##
The current release is ELPA 2019.05.002 The current supported API version
The current release is ELPA 2019.11.001 The current supported API version
is 20190501. This release supports the earliest API version 20170403.
The old, obsolete legacy API will be deprecated in the future !
......@@ -13,7 +13,7 @@ The release ELPA 2018.11.001 was the last release, where the legacy API has been
enabled by default (and can be disabled at build time).
With release ELPA 2019.05.001 the legacy API is disabled by default, however,
can be still switched on at build time.
Most likely with the release ELPA 2019.11.001 the legacy API will be deprecated and
With the release ELPA 2019.11.001 the legacy API will be deprecated and
not supported anymore.
[![Build
......@@ -104,9 +104,14 @@ Nonetheless, we are grateful if you cite the following publications:
If you use the new API and/or autotuning:
Kus; P.; Marek, A.; Koecher, S. S.; Kowalski H.-H.; Carbogno, Ch.; Scheurer, Ch.; Reuter, K.; Scheffler, M.; Lederer, H.
Kus, P.; Marek, A.; Koecher, S. S.; Kowalski H.-H.; Carbogno, Ch.; Scheurer, Ch.; Reuter, K.; Scheffler, M.; Lederer, H.
"Optimizations of the Eigenvaluesolvers in the ELPA Library",
Parallel Computing 85, 167-177 (2019)
If you use the new support for skew-symmetric matrices:
Benner, P.; Draxl, C.; Marek, A.; Penke C.; Vorwerk, C.;
"High Performance Solution of Skew-symmetric Eigenvalue Problems with Applications in Solving the Bethe-Salpeter Eigenvalue Problem",
https://arxiv.org/abs/1912.04062, submitted to Parallel Computing
## Installation of the *ELPA* library
......@@ -126,7 +131,7 @@ the possible configure options.
## Using *ELPA*
Please have a look at the [USERS_GUIDE](USERS_GUIDE.md) file, to get a documentation or at the [online](http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.05.002/html/index.html) doxygen
Please have a look at the [USERS_GUIDE](USERS_GUIDE.md) file, to get a documentation or at the [online](http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.11.001/html/index.html) doxygen
documentation, where you find the definition of the interfaces.
## Contributing to *ELPA*
......
This file contains the release notes for the ELPA 2019.05.002 version
This file contains the release notes for the ELPA 2019.11.001 version
What is new?
-------------
For detailed information about changes since release ELPA 2018.11 please have a look at the Changelog file
For detailed information about changes since release ELPA 2019.05.002 please have a look at the Changelog file
- repackaging of src files, to include forgotten files of the legacy interface
- several new features have been implemented
- the old, legacy interface has been removed
ABI change
---------------------
Since release 2019.05.001 the ABI has not changed.
Since release 2019.05.002 the ABI has changed, since the legacy interface cannot be activated anymore
Any incompatibilities to previous version?
---------------------------------------
no
yes, if the previous builds had the legacy interface activated
## Documentation how to switch from the legacy API to the new API of the *ELPA* library ##
This document gives some hints how one can switch from the **deprecated** legacy API to new, long-term supported API of the *ELPA* library.
**We strongly recommend users to switch as soon as possible, since the deprecated API will be removed at some point!**
**At latest with the release ELPA 2019.11.001 you have to use the new API, since the old API has been removed**
### Using *ELPA* from a Fortran code ###
......@@ -146,7 +146,7 @@ Local documentation (via man pages) should be available (if *ELPA* has been inst
For example "man elpa2_print_kernels" should provide the documentation for the *ELPA* program which prints all
the available kernels.
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.05.002/html/index.html)
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.11.001/html/index.html)
for each *ELPA* release is available.
## Users guide for the *ELPA* library ##
This document provides the guide for using the *ELPA* library with the new API (API version 20170403 or higher).
If you want to use the deprecated legacy API (we strongly recommend against this), please refer to the document
[USERS_GUIDE_DEPRECATED_LEGACY_API.md] (USERS_GUIDE_DEPRECATED_LEGACY_API.md).
Please do understand that this release deprecated the old, legacy interface API!
If you want to use the deprecated legacy API (we strongly recommend against this), please use the ELPA release
2019.05.002 or older.
If you need instructions on how to build *ELPA*, please look at [INSTALL.md] (INSTALL.md).
......@@ -13,7 +14,7 @@ Local documentation (via man pages) should be available (if *ELPA* has been inst
For example "man elpa2_print_kernels" should provide the documentation for the *ELPA* program, which prints all
the available kernels.
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.05.002/html/index.html)
Also a [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.11.001/html/index.html)
for each *ELPA* release is available.
......@@ -22,26 +23,11 @@ for each *ELPA* release is available.
With release 2017.05.001 of the *ELPA* library the interface has been rewritten substantially, in order to have a more generic
interface and to avoid future interface changes.
For compatibility reasons the interface defined in the previous release 2016.11.001 is also still available
**IF AND ONLY IF** *ELPA* has been build with support of this legacy interface.
The legacy API defines all the functionality as it has been defined in *ELPA* release 2016.11.011. Note, however,
that all future features of *ELPA* will only be accessible via the new API defined in release 2017.05.001 or later.
As mentioned, we advise against it, but if you want to use the legacy API please look at the document
[USERS_GUIDE_DEPRECATED_LEGACY_API.md] (USERS_GUIDE_DEPRECATED_LEGACY_API.md).
The old, obsolete legacy API will be deprecated in the future !
Allready now, all new features of ELPA are only available with the new API. Thus, there
is no reason to keep the legacy API arround for too long.
The release ELPA 2018.11.001 was the last release, where the legacy API has been
enabled by default (and can be disabled at build time).
With release ELPA 2019.05.001 the legacy API is disabled by default, however,
can be still switched on at build time.
Most likely with the release ELPA 2019.11.001 the legacy API will be deprecated and
not supported anymore.
With the release ELPA 2019.11.001 the legacy API will has been deprecated and has been removed.
### Table of Contents: ###
......@@ -201,7 +187,7 @@ The following table gives a list of all supported parameters which can be used t
## III) List of computational routines ##
The following compute routines are available in *ELPA*: Please have a look at the man pages or [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.05.002/html/index.html) for details.
The following compute routines are available in *ELPA*: Please have a look at the man pages or [online doxygen documentation] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.11.001/html/index.html) for details.
| Name | Purpose | since API version |
......
......@@ -22,7 +22,7 @@ The *ELPA* library consists of two main parts:
Both variants of the *ELPA* solvers are available for real or complex singe and double precision valued matrices.
Thus *ELPA* provides the following user functions (see man pages or [online] (http://elpa.mpcdf.mpg.de/html/Documentation/ELPA-2019.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-2019.11.001/html/index.html) for details):
- elpa_get_communicators : set the row / column communicators for *ELPA*
- elpa_solve_evp_complex_1stage_{single|double} : solve a {single|double} precision complex eigenvalue proplem with the *ELPA 1stage* solver
......
......@@ -59,6 +59,26 @@ export MKL_ANACONDA_INTEL_SCALAPACK_MPI_OMP_BASELINE="-L$ANACONDA_HOME/lib -lmkl
export MKL_ANACONDA_INTEL_SCALAPACK_FCFLAGS_MPI_OMP="-I$MKL_HOME/include/intel64/lp64"
export MKL_ANACONDA_INTEL_SCALAPACK_LDFLAGS_MPI_OMP="$MKL_ANACONDA_INTEL_SCALAPACK_MPI_OMP_BASELINE -Wl,-rpath,$ANACONDA_HOME/lib"
export MKL_GFORTRAN_SCALAPACK_NOMPI_NOOMP_ILP64_BASELINE="-L$MKL_HOME/lib/intel64 -lmkl_gf_ilp64 -lmkl_sequential -lmkl_core -lpthread"
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_NOMPI_NOOMP_ILP64="-I$MKL_HOME/include/intel64/ilp64"
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_NOMPI_NOOMP_ILP64="$MKL_GFORTRAN_SCALAPACK_NOMPI_NOOMP_ILP64_BASELINE -Wl,-rpath,$MKL_HOME/lib/intel64"
export MKL_GFORTRAN_SCALAPACK_NOMPI_OMP_ILP64_BASELINE="-L$MKL_HOME/lib/intel64 -lmkl_gf_ilp64 -lmkl_sequential -lmkl_core -lpthread"
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_NOMPI_OMP_ILP64="-I$MKL_HOME/include/intel64/ilp64"
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_NOMPI_OMP_ILP64="$MKL_GFORTRAN_SCALAPACK_NOMPI_OMP_ILP64_BASELINE -Wl,-rpath,$MKL_HOME/lib/intel64"
export MKL_GFORTRAN_SCALAPACK_MPI_NOOMP_ILP64_BASELINE="-L$MKL_HOME/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_gf_ilp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lpthread"
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NOOMP_ILP64="-I$MKL_HOME/include/intel64/ilp64"
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NOOMP_ILP64="$MKL_GFORTRAN_SCALAPACK_MPI_NOOMP_ILP64_BASELINE -Wl,-rpath,$MKL_HOME/lib/intel64"
export MKL_GFORTRAN_SCALAPACK_MPI_OMP_ILP64_BASELINE="-L$MKL_HOME/lib/intel64 -lmkl_scalapack_ilp64 -lmkl_gf_ilp64 -lmkl_sequential -lmkl_core -lmkl_blacs_intelmpi_ilp64 -lpthread"
export MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_OMP_ILP64="-I$MKL_HOME/include/intel64/ilp64"
export MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_OMP_ILP64="$MKL_GFORTRAN_SCALAPACK_MPI_OMP_ILP64_BASELINE -Wl,-rpath,$MKL_HOME/lib/intel64"
export ASAN_OPTIONS=suppressions=./ci_test_scripts/no_asan_for_mpi.supp,fast_unwind_on_malloc=0
export LSAN_OPTIONS=suppressions=./ci_test_scripts/no_lsan_for_mpi.supp
......
......@@ -148,7 +148,7 @@ def set_cflags_fcflags(instr, cc, fc, instruction_set):
FCFLAGS += "-O3 -xMIC-AVX512"
if (instr == "avx2"):
INSTRUCTION_OPTIONS = instruction_set[instr]
INSTRUCTION_OPTIONS = instruction_set[instr] + " --disable-avx512"
if (cc == "gnu"):
CFLAGS += "-O3 -mavx2 -mfma"
else:
......@@ -159,7 +159,7 @@ def set_cflags_fcflags(instr, cc, fc, instruction_set):
FCFLAGS += "-O3 -xAVX2"
if (instr == "avx"):
INSTRUCTION_OPTIONS = instruction_set[instr] + " --disable-avx2"
INSTRUCTION_OPTIONS = instruction_set[instr] + " --disable-avx2 --disable-avx512"
if (cc == "gnu"):
CFLAGS += "-O3 -mavx"
FCFLAGS += "-O3 -mavx"
......@@ -168,7 +168,7 @@ def set_cflags_fcflags(instr, cc, fc, instruction_set):
FCFLAGS += "-O3 -xAVX"
if (instr == "sse"):
INSTRUCTION_OPTIONS = instruction_set[instr] + " --disable-avx --disable-avx2"
INSTRUCTION_OPTIONS = instruction_set[instr] + " --disable-avx --disable-avx2 --disable-avx512"
if (cc == "gnu"):
CFLAGS +="-O3 -msse4.2"
FCFLAGS +="-O3 -msse4.2"
......@@ -274,7 +274,7 @@ print(" tags:")
print(" - avx")
print(" script:")
print(" - ./ci_test_scripts/run_ci_tests.sh -c \" CFLAGS=\\\"-O3 -mavx\\\" FCFLAGS=\\\"-O3 -axAVX\\\" SCALAPACK_LDFLAGS=\\\"$MKL_INTEL_SCALAPACK_LDFLAGS_NO_MPI_NO_OMP\\\" \
SCALAPACK_FCFLAGS=\\\"$MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_NO_OMP\\\" --with-mpi=no FC=ifort --enable-shared=no --enable-static=yes --disable-avx2 --enable-optional-argument-in-C-API || { cat config.log; exit 1; } \" -j 8 \
SCALAPACK_FCFLAGS=\\\"$MKL_INTEL_SCALAPACK_FCFLAGS_NO_MPI_NO_OMP\\\" --with-mpi=no FC=ifort --enable-shared=no --enable-static=yes --disable-avx2 --disable-avx512 --enable-optional-argument-in-C-API || { cat config.log; exit 1; } \" -j 8 \
-t $MPI_TASKS -m 150 -n 50 -b 16 -s $SKIP_STEP -i $INTERACTIVE_RUN -S $SLURM ")
print("\n\n")
......@@ -285,12 +285,12 @@ print(" - distcheck")
print(" script:")
#print(" - ./ci_test_scripts/run_ci_tests.sh -c \" CC=gcc FC=gfortran SCALAPACK_LDFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_NO_OMP\\\" \
# SCALAPACK_FCFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_NO_OMP\\\" --enable-option-checking=fatal --with-mpi=no --disable-sse-assembly \
# --disable-sse --disable-avx --disable-avx2 || { cat config.log; exit 1; } \" -t $MPI_TASKS -m 150 -n 50 -b 16 -s $SKIP_STEP -i $INTERACTIVE_RUN -S $SLURM ")
# --disable-sse --disable-avx --disable-avx2 --disable-avx512 || { cat config.log; exit 1; } \" -t $MPI_TASKS -m 150 -n 50 -b 16 -s $SKIP_STEP -i $INTERACTIVE_RUN -S $SLURM ")
print(" - ./ci_test_scripts/run_distcheck_tests.sh -c \" CC=gcc FC=gfortran SCALAPACK_LDFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_NO_MPI_NO_OMP\\\" \
SCALAPACK_FCFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_NO_MPI_NO_OMP\\\" --enable-option-checking=fatal --with-mpi=no --disable-sse-assembly \