diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 357766203316f826fd35f8203d24da1644921421..5b2fc1a69e6dd875531b3cf5ea5406bb068056e6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -106,7 +106,7 @@ test_project_1stage_legacy_api_gnu: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage_legacy_api -e test_real -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --enable-legacy-interface --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage_legacy_api -e test_real -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -115,7 +115,7 @@ test_project_1stage_gnu: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage -e test_real -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage -e test_real -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -124,7 +124,7 @@ test_project_2stage_legacy_api_gnu: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage_legacy_api -e test_real2 -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --enable-legacy-interface --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage_legacy_api -e test_real2 -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -133,7 +133,7 @@ test_project_2stage_gnu: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage -e test_real2 -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpif90 FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage -e test_real2 -C " FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -142,7 +142,7 @@ test_project_1stage_legacy_api_intel: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage_legacy_api -e test_real -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --enable-legacy-interface --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage_legacy_api -e test_real -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -151,7 +151,7 @@ test_project_1stage_intel: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage -e test_real -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_1stage -e test_real -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -160,7 +160,7 @@ test_project_2stage_legacy_api_intel: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage_legacy_api -e test_real2 -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --enable-legacy-interface --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage_legacy_api -e test_real2 -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " @@ -169,7 +169,7 @@ test_project_2stage_intel: tags: - project_test script: - - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage -e test_real2 -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " + - ./ci_test_scripts/run_project_tests.sh -c " FC=mpiifort FCFLAGS=\"-march=native \" CFLAGS=\"-march=native\" SCALAPACK_LDFLAGS=\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\" SCALAPACK_FCFLAGS=\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\" --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } " -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_2stage -e test_real2 -C " FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig --enable-option-checking=fatal || { cat config.log; exit 1; } " diff --git a/Changelog b/Changelog index 91ea73ad423ba10acd7ae28e792b680289c2cc0e..50c3121b8f8431a04597b88c045c9074f26836d6 100644 --- a/Changelog +++ b/Changelog @@ -11,7 +11,16 @@ Changelog for ELPA 2019.05.001.rc1 - allow measurements with the likwid tool - users can define the default-kernel at build time - ELPA versioning number is provided in the C header files - +- as announced a year ago, the following deprecated routines have been finally +removed; see DEPRECATED_FEATURES for the replacement routines , which have +been introduced a year ago. Removed routines: + -> mult_at_b_real + -> mult_ah_b_complex + -> invert_trm_real + -> invert_trm_complex + -> cholesky_real + -> cholesky_complex + -> solve_tridi Changelog for ELPA 2018.11.001 diff --git a/DEPRECATED_FEATURES.md b/DEPRECATED_FEATURES.md index f1f5ca71408c1f1db453af7d3408016992f53974..db7a3776d8aea2f9757f8fcb65ff31469a8947f8 100644 --- a/DEPRECATED_FEATURES.md +++ b/DEPRECATED_FEATURES.md @@ -26,16 +26,17 @@ have been replaced by new names. The old interfaces will be removed | 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 | will be removed 2018.11.001 | -| solve_evp_complex_1stage | elpa_solve_evp_complex_1stage_double | will be removed 2018.11.001 | -| solve_evp_real_2stage | elpa_solve_evp_real_2stage_double | will be removed 2018.11.001 | -| solve_evp_complex_2stage | elpa_solve_evp_complex_2stage_double | will be removed 2018.11.001 | -| mult_at_b_real | elpa_mult_at_b_real_double | will be removed 2018.11.001 | -| mult_ah_b_complex | elpa_mult_ah_b_complex_double | will be removed 2018.11.001 | -| invert_trm_real | elpa_invert_trm_real_double | will be removed 2018.11.001 | -| invert_trm_complex | elpa_invert_trm_complex_double | will be removed 2018.11.001 | -| cholesky_real | elpa_cholesky_real_double | will be removed 2018.11.001 | -| cholesky_complex | elpa_cholesky_complex_double | will be removed 2018.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 diff --git a/RELEASE_NOTES b/RELEASE_NOTES index 50f950bf224e95e02deffcff368d9157eb4af770..f41786c9bb75bc3c0a7d89b3ffea03ecada3acb2 100644 --- a/RELEASE_NOTES +++ b/RELEASE_NOTES @@ -8,6 +8,7 @@ For detailed information about changes since release ELPA 2018.11 please have a - ELPA VERSION number is exported to the C-header - C functions can have an optional error argument, if compiler supports this => ABI and API change +- as anounced, removal of deprecated routines ABI change --------------------- @@ -17,11 +18,11 @@ Since release 2018.10.001 the ABI has changed. Any incompatibilities to previous version? --------------------------------------- For Fortran: -Break of ABI compatibility, since all functions obtained an optional, integer -argument of the error code. +Break of ABI compatibility, since all routines announced as deperecated have been removed For C: Break of ABI and API compatibility, since all functions obtained a required int* argument of the error code. + diff --git a/ci_test_scripts/generate_gitlab_ci_tests.py b/ci_test_scripts/generate_gitlab_ci_tests.py index 799db44602eb6535a12708134e0f02c818749841..9b669036fec9da34a8f037660bbf4191f482e933 100755 --- a/ci_test_scripts/generate_gitlab_ci_tests.py +++ b/ci_test_scripts/generate_gitlab_ci_tests.py @@ -451,21 +451,40 @@ for comp, s, a in product( projectBinary="test_real2" if (comp == "intel"): - print(" - ./ci_test_scripts/run_project_tests.sh -c \" FC=mpiifort FCFLAGS=\\\"-march=native \\\" CFLAGS=\\\"-march=native\\\" \ - SCALAPACK_LDFLAGS=\\\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\\\" \ - SCALAPACK_FCFLAGS=\\\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\\\" \ - --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } \" \ - -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_"+stage[s]+api[a]+" -e "+projectBinary+" \ - -C \" FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig \ - --enable-option-checking=fatal || { cat config.log; exit 1; } \" ") + if (a == "new_api"): + print(" - ./ci_test_scripts/run_project_tests.sh -c \" FC=mpiifort FCFLAGS=\\\"-march=native \\\" CFLAGS=\\\"-march=native\\\" \ + SCALAPACK_LDFLAGS=\\\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\\\" \ + SCALAPACK_FCFLAGS=\\\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\\\" \ + --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } \" \ + -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_"+stage[s]+api[a]+" -e "+projectBinary+" \ + -C \" FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig \ + --enable-option-checking=fatal || { cat config.log; exit 1; } \" ") + if (a == "legacy_api"): + print(" - ./ci_test_scripts/run_project_tests.sh -c \" FC=mpiifort FCFLAGS=\\\"-march=native \\\" CFLAGS=\\\"-march=native\\\" \ + SCALAPACK_LDFLAGS=\\\"$MKL_INTEL_SCALAPACK_LDFLAGS_MPI_NO_OMP\\\" \ + SCALAPACK_FCFLAGS=\\\"$MKL_INTEL_SCALAPACK_FCFLAGS_MPI_NO_OMP\\\" \ + --enable-option-checking=fatal --enable-legacy-interface --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } \" \ + -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_"+stage[s]+api[a]+" -e "+projectBinary+" \ + -C \" FC=mpiifort PKG_CONFIG_PATH=../../installdest/lib/pkgconfig \ + --enable-option-checking=fatal || { cat config.log; exit 1; } \" ") + if (comp == "gnu"): - print(" - ./ci_test_scripts/run_project_tests.sh -c \" FC=mpif90 FCFLAGS=\\\"-march=native \\\" CFLAGS=\\\"-march=native\\\" \ - SCALAPACK_LDFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\\\" \ - SCALAPACK_FCFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\\\" \ - --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } \" \ - -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_"+stage[s]+api[a]+" -e "+projectBinary+" \ - -C \" FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig \ - --enable-option-checking=fatal || { cat config.log; exit 1; } \" ") + if (a == "new_api"): + print(" - ./ci_test_scripts/run_project_tests.sh -c \" FC=mpif90 FCFLAGS=\\\"-march=native \\\" CFLAGS=\\\"-march=native\\\" \ + SCALAPACK_LDFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\\\" \ + SCALAPACK_FCFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\\\" \ + --enable-option-checking=fatal --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } \" \ + -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_"+stage[s]+api[a]+" -e "+projectBinary+" \ + -C \" FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig \ + --enable-option-checking=fatal || { cat config.log; exit 1; } \" ") + if (a == "legacy_api"): + print(" - ./ci_test_scripts/run_project_tests.sh -c \" FC=mpif90 FCFLAGS=\\\"-march=native \\\" CFLAGS=\\\"-march=native\\\" \ + SCALAPACK_LDFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_LDFLAGS_MPI_NO_OMP\\\" \ + SCALAPACK_FCFLAGS=\\\"$MKL_GFORTRAN_SCALAPACK_FCFLAGS_MPI_NO_OMP\\\" \ + --enable-option-checking=fatal --enable-legacy-interface --disable-avx2 --prefix=$PWD/installdest --disable-avx2 || { cat config.log; exit 1; } \" \ + -t 2 -m 150 -n 50 -b 16 -S $SLURM -p test_project_"+stage[s]+api[a]+" -e "+projectBinary+" \ + -C \" FC=mpif90 PKG_CONFIG_PATH=../../installdest/lib/pkgconfig \ + --enable-option-checking=fatal || { cat config.log; exit 1; } \" ") print("\n\n") print("#The tests follow here") @@ -529,6 +548,7 @@ address_sanitize_flag = { "no-address-sanitize" : "no-address-sanitize", } + #matrix_size = { # "small" : "150", # "medium" : "1500", diff --git a/configure.ac b/configure.ac index 5cd67ef65398ef9f02a245d023d84673da82456a..6e87de1b12bdfa15fd15162233ff2bfafa34eb90 100644 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,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], [13:0:0]) +AC_SUBST([ELPA_SO_VERSION], [14:0:0]) # AC_DEFINE_SUBST(NAME, VALUE, DESCRIPTION) # ----------------------------------------- diff --git a/src/elpa1/legacy_interface/elpa1.F90 b/src/elpa1/legacy_interface/elpa1.F90 index 1f294b2a07c22bae4da01f6f11e10bd699028d02..4b7a55fc141f38a1d569af7bb9922aefbecae143 100644 --- a/src/elpa1/legacy_interface/elpa1.F90 +++ b/src/elpa1/legacy_interface/elpa1.F90 @@ -96,7 +96,6 @@ module elpa1 public :: elpa_solve_evp_real_1stage_double !< Driver routine for real double-precision 1-stage eigenvalue problem - public :: solve_evp_real_1stage !< Driver routine for real double-precision eigenvalue problem public :: solve_evp_real_1stage_double !< Driver routine for real double-precision eigenvalue problem #ifdef WANT_SINGLE_PRECISION_REAL public :: solve_evp_real_1stage_single !< Driver routine for real single-precision eigenvalue problem @@ -104,7 +103,6 @@ module elpa1 #endif public :: elpa_solve_evp_complex_1stage_double !< Driver routine for complex 1-stage eigenvalue problem - public :: solve_evp_complex_1stage !< Driver routine for complex double-precision eigenvalue problem public :: solve_evp_complex_1stage_double !< Driver routine for complex double-precision eigenvalue problem #ifdef WANT_SINGLE_PRECISION_COMPLEX public :: solve_evp_complex_1stage_single !< Driver routine for complex single-precision eigenvalue problem @@ -114,22 +112,16 @@ module elpa1 ! imported from elpa1_auxilliary public :: elpa_mult_at_b_real_double !< Multiply double-precision real matrices A**T * B - public :: mult_at_b_real !< old, deprecated interface to multiply double-precision real matrices A**T * B DO NOT USE public :: elpa_mult_ah_b_complex_double !< Multiply double-precision complex matrices A**H * B - public :: mult_ah_b_complex !< old, deprecated interface to multiply double-preicion complex matrices A**H * B DO NOT USE public :: elpa_invert_trm_real_double !< Invert double-precision real triangular matrix - public :: invert_trm_real !< old, deprecated interface to invert double-precision real triangular matrix DO NOT USE public :: elpa_invert_trm_complex_double !< Invert double-precision complex triangular matrix - public :: invert_trm_complex !< old, deprecated interface to invert double-precision complex triangular matrix DO NOT USE public :: elpa_cholesky_real_double !< Cholesky factorization of a double-precision real matrix - public :: cholesky_real !< old, deprecated interface to do Cholesky factorization of a double-precision real matrix DO NOT USE public :: elpa_cholesky_complex_double !< Cholesky factorization of a double-precision complex matrix - public :: cholesky_complex !< old, deprecated interface to do Cholesky factorization of a double-precision complex matrix DO NOT USE public :: elpa_solve_tridi_double !< Solve a double-precision tridiagonal eigensystem with divide and conquer method @@ -155,10 +147,6 @@ module elpa1 logical, public :: elpa_print_times = .false. !< Set elpa_print_times to .true. for explicit timing outputs - interface solve_evp_real_1stage - module procedure elpa_solve_evp_real_1stage_double - end interface - !> \brief elpa_solve_evp_real_1stage_double: Fortran function to solve the real eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_real" !> ! Parameters @@ -200,46 +188,6 @@ module elpa1 module procedure elpa_solve_evp_real_1stage_double end interface - -!> \brief solve_evp_complex_1stage: old, deprecated Fortran function to solve the complex eigenvalue problem with 1-stage solver. will be deleted at some point. Better use "solve_evp_complex_1stage" or "elpa_solve_evp_complex" -!> -!> \details -!> The interface and variable definition is the same as in "elpa_solve_evp_complex_1stage_double" -! Parameters -! -!> \param na Order of matrix a -!> -!> \param nev Number of eigenvalues needed. -!> The smallest nev eigenvalues/eigenvectors are calculated. -!> -!> \param a(lda,matrixCols) Distributed matrix for which eigenvalues are to be computed. -!> Distribution is like in Scalapack. -!> The full matrix must be set (not only one half like in scalapack). -!> Destroyed on exit (upper and lower half). -!> -!> \param lda Leading dimension of a -!> -!> \param ev(na) On output: eigenvalues of a, every processor gets the complete set -!> -!> \param q(ldq,matrixCols) On output: Eigenvectors of a -!> Distribution is like in Scalapack. -!> Must be always dimensioned to the full size (corresponding to (na,na)) -!> even if only a part of the eigenvalues is needed. -!> -!> \param ldq Leading dimension of q -!> -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> -!> \param matrixCols distributed number of matrix columns -!> -!> \param mpi_comm_rows MPI-Communicator for rows -!> \param mpi_comm_cols MPI-Communicator for columns -!> -!> \result success - interface solve_evp_complex_1stage - module procedure elpa_solve_evp_complex_1stage_double - end interface - !> \brief solve_evp_complex_1stage_double: Fortran function to solve the complex eigenvalue problem with 1-stage solver. This is called by "elpa_solve_evp_complex" !> ! Parameters diff --git a/src/elpa1/legacy_interface/elpa1_auxiliary.F90 b/src/elpa1/legacy_interface/elpa1_auxiliary.F90 index fa01451e04282d9e0582182586cd63adda871e0a..f2929910c1c06db44de21644560cd29137842575 100644 --- a/src/elpa1/legacy_interface/elpa1_auxiliary.F90 +++ b/src/elpa1/legacy_interface/elpa1_auxiliary.F90 @@ -60,25 +60,18 @@ module ELPA1_AUXILIARY implicit none public :: elpa_mult_at_b_real_double !< Multiply double-precision real matrices A**T * B - public :: mult_at_b_real !< Old, deprecated interface to multiply double-precision real matrices A**T * B. DO NOT USE public :: elpa_mult_ah_b_complex_double !< Multiply double-precision complex matrices A**H * B - public :: mult_ah_b_complex !< Old, deprecated interface to multiply double-precision complex matrices A**H * B. DO NOT USE public :: elpa_invert_trm_real_double !< Invert double-precision real triangular matrix - public :: invert_trm_real !< Old, deprecated interface for inversion of double-precision real triangular matrix. DO NOT USE public :: elpa_invert_trm_complex_double !< Invert double-precision complex triangular matrix - public :: invert_trm_complex !< Old, deprecated interface to invert double-precision complex triangular matrix. DO NOT USE public :: elpa_cholesky_real_double !< Cholesky factorization of a double-precision real matrix - public :: cholesky_real !< Old, deprecated name for Cholesky factorization of a double-precision real matrix. DO NOT USE public :: elpa_cholesky_complex_double !< Cholesky factorization of a double-precision complex matrix - public :: cholesky_complex !< Old, deprecated interface for a Cholesky factorization of a double-precision complex matrix. DO NOT USE public :: elpa_solve_tridi_double !< Solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method - public :: solve_tridi !< Old, deprecated interface to solve tridiagonal eigensystem for a double-precision matrix with divide and conquer method #ifdef WANT_SINGLE_PRECISION_REAL public :: elpa_cholesky_real_single !< Cholesky factorization of a single-precision real matrix @@ -93,193 +86,8 @@ module ELPA1_AUXILIARY public :: elpa_mult_ah_b_complex_single !< Multiply single-precision complex matrices A**H * B #endif -!> \brief cholesky_real: old, deprecated interface for Cholesky factorization of a double-precision real symmetric matrix -!> \details -!> -!> \param na Order of matrix -!> \param a(lda,matrixCols) Distributed matrix which should be factorized. -!> Distribution is like in Scalapack. -!> Only upper triangle needs to be set. -!> On return, the upper triangle contains the Cholesky factor -!> and the lower triangle is set to 0. -!> \param lda Leading dimension of a -!> \param matrixCols local columns of matrix a -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param wantDebug logical, more debug information on failure -!> \result succes logical, reports success or failure - interface cholesky_real - module procedure elpa_cholesky_real_double - end interface - -!> \brief Old, deprecated interface invert_trm_real: Inverts a upper double-precision triangular matrix -!> \details -!> \param na Order of matrix -!> \param a(lda,matrixCols) Distributed matrix which should be inverted -!> Distribution is like in Scalapack. -!> Only upper triangle needs to be set. -!> The lower triangle is not referenced. -!> \param lda Leading dimension of a -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param matrixCols local columns of matrix a -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param wantDebug logical, more debug information on failure -!> \param result logical, reports success or failure - - interface invert_trm_real - module procedure elpa_invert_trm_real_double - end interface - -!> \brief old, deprecated interface cholesky_complex: Cholesky factorization of a double-precision complex hermitian matrix -!> \details -!> \param na Order of matrix -!> \param a(lda,matrixCols) Distributed matrix which should be factorized. -!> Distribution is like in Scalapack. -!> Only upper triangle needs to be set. -!> On return, the upper triangle contains the Cholesky factor -!> and the lower triangle is set to 0. -!> \param lda Leading dimension of a -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param matrixCols local columns of matrix a -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param wantDebug logical, more debug information on failure -!> \result succes logical, reports success or failure - - - interface cholesky_complex - module procedure elpa_cholesky_complex_double - end interface - -!> \brief old, deprecated interface invert_trm_complex: Inverts a double-precision complex upper triangular matrix -!> \details -!> \param na Order of matrix -!> \param a(lda,matrixCols) Distributed matrix which should be inverted -!> Distribution is like in Scalapack. -!> Only upper triangle needs to be set. -!> The lower triangle is not referenced. -!> \param lda Leading dimension of a -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param matrixCols local columns of matrix a -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param wantDebug logical, more debug information on failure -!> \result succes logical, reports success or failure - - interface invert_trm_complex - module procedure elpa_invert_trm_complex_double - end interface - -!> \brief mult_at_b_real: Performs C : = A**T * B for double matrices -!> this is the old, deprecated interface for the newer elpa_mult_at_b_real -!> where A is a square matrix (na,na) which is optionally upper or lower triangular -!> B is a (na,ncb) matrix -!> C is a (na,ncb) matrix where optionally only the upper or lower -!> triangle may be computed -!> \details - -!> \param uplo_a 'U' if A is upper triangular -!> 'L' if A is lower triangular -!> anything else if A is a full matrix -!> Please note: This pertains to the original A (as set in the calling program) -!> whereas the transpose of A is used for calculations -!> If uplo_a is 'U' or 'L', the other triangle is not used at all, -!> i.e. it may contain arbitrary numbers -!> \param uplo_c 'U' if only the upper diagonal part of C is needed -!> 'L' if only the upper diagonal part of C is needed -!> anything else if the full matrix C is needed -!> Please note: Even when uplo_c is 'U' or 'L', the other triangle may be -!> written to a certain extent, i.e. one shouldn't rely on the content there! -!> \param na Number of rows/columns of A, number of rows of B and C -!> \param ncb Number of columns of B and C -!> \param a matrix a -!> \param lda leading dimension of matrix a -!> \param b matrix b -!> \param ldb leading dimension of matrix b -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param c matrix c -!> \param ldc leading dimension of matrix c - interface mult_at_b_real - module procedure elpa_mult_at_b_real_double - end interface - -!> \brief Old, deprecated interface mult_ah_b_complex: Performs C : = A**H * B for double-precision matrices -!> where A is a square matrix (na,na) which is optionally upper or lower triangular -!> B is a (na,ncb) matrix -!> C is a (na,ncb) matrix where optionally only the upper or lower -!> triangle may be computed -!> \details -!> -!> \param uplo_a 'U' if A is upper triangular -!> 'L' if A is lower triangular -!> anything else if A is a full matrix -!> Please note: This pertains to the original A (as set in the calling program) -!> whereas the transpose of A is used for calculations -!> If uplo_a is 'U' or 'L', the other triangle is not used at all, -!> i.e. it may contain arbitrary numbers -!> \param uplo_c 'U' if only the upper diagonal part of C is needed -!> 'L' if only the upper diagonal part of C is needed -!> anything else if the full matrix C is needed -!> Please note: Even when uplo_c is 'U' or 'L', the other triangle may be -!> written to a certain extent, i.e. one shouldn't rely on the content there! -!> \param na Number of rows/columns of A, number of rows of B and C -!> \param ncb Number of columns of B and C -!> \param a matrix a -!> \param lda leading dimension of matrix a -!> \param b matrix b -!> \param ldb leading dimension of matrix b -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param c matrix c -!> \param ldc leading dimension of matrix c - interface mult_ah_b_complex - module procedure elpa_mult_ah_b_complex_double - end interface - - -!> \brief solve_tridi: Old, deprecated interface to solve a double-precision tridiagonal eigensystem for a double-precision matrix with divide and conquer method -!> \details -!> -!> \param na Matrix dimension -!> \param nev number of eigenvalues/vectors to be computed -!> \param d array d(na) on input diagonal elements of tridiagonal matrix, on -!> output the eigenvalues in ascending order -!> \param e array e(na) on input subdiagonal elements of matrix, on exit destroyed -!> \param q on exit : matrix q(ldq,matrixCols) contains the eigenvectors -!> \param ldq leading dimension of matrix q -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param matrixCols columns of matrix q -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param wantDebug logical, give more debug information if .true. -!> \result success logical, .true. on success, else .false. - interface solve_tridi - module procedure elpa_solve_tridi_double - end interface - contains -!> \brief cholesky_real_double: Cholesky factorization of a double-precision real symmetric matrix -!> \details -!> -!> \param na Order of matrix -!> \param a(lda,matrixCols) Distributed matrix which should be factorized. -!> Distribution is like in Scalapack. -!> Only upper triangle needs to be set. -!> On return, the upper triangle contains the Cholesky factor -!> and the lower triangle is set to 0. -!> \param lda Leading dimension of a -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> \param matrixCols local columns of matrix a -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param wantDebug logical, more debug information on failure -!> \param succes logical, reports success or failure #define REALCASE 1 #define DOUBLE_PRECISION diff --git a/src/elpa2/legacy_interface/elpa2.F90 b/src/elpa2/legacy_interface/elpa2.F90 index a5ecdd7ae98f755bccdbe677ae421dc5346affbc..530cf67ef2de34ee28af3734117abbdf8171dac7 100644 --- a/src/elpa2/legacy_interface/elpa2.F90 +++ b/src/elpa2/legacy_interface/elpa2.F90 @@ -71,52 +71,6 @@ module elpa2 public :: elpa_solve_evp_real_2stage_double !< Driver routine for real double-precision 2-stage eigenvalue problem public :: elpa_solve_evp_complex_2stage_double !< Driver routine for complex double-precision 2-stage eigenvalue problem - -!------------------------------------------------------------------------------- -!> \brief solve_evp_real_2stage: Old, deprecated interface for elpa_solve_evp_real_2stage_double -!> -!> Parameters -!> -!> \param na Order of matrix a -!> -!> \param nev Number of eigenvalues needed -!> -!> \param a(lda,matrixCols) Distributed matrix for which eigenvalues are to be computed. -!> Distribution is like in Scalapack. -!> The full matrix must be set (not only one half like in scalapack). -!> Destroyed on exit (upper and lower half). -!> -!> \param lda Leading dimension of a -!> -!> \param ev(na) On output: eigenvalues of a, every processor gets the complete set -!> -!> \param q(ldq,matrixCols) On output: Eigenvectors of a -!> Distribution is like in Scalapack. -!> Must be always dimensioned to the full size (corresponding to (na,na)) -!> even if only a part of the eigenvalues is needed. -!> -!> \param ldq Leading dimension of q -!> -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> -!> \param matrixCols local columns of matrix a and q -!> -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param mpi_comm_all MPI communicator for the total processor set -!> -!> \param THIS_REAL_ELPA_KERNEL_API (optional) specify used ELPA2 kernel via API -!> -!> \param useQR (optional) use QR decomposition -!> \param useGPU (optional) decide whether to use GPUs or not - -!> -!> \result success logical, false if error occured -!------------------------------------------------------------------------------- - interface solve_evp_real_2stage - module procedure solve_evp_real_2stage_double - end interface - !------------------------------------------------------------------------------- !> \brief elpa_solve_evp_real_2stage_double: Fortran function to solve the real double-precision eigenvalue problem with a 2 stage approach. This is called by "elpa_solve_evp_real_double" !> @@ -161,49 +115,6 @@ module elpa2 module procedure solve_evp_real_2stage_double end interface -!------------------------------------------------------------------------------- -!> \brief solve_evp_complex_2stage: Old, deprecated interface for elpa_solve_evp_complex_2stage_double -!> -!> Parameters -!> -!> \param na Order of matrix a -!> -!> \param nev Number of eigenvalues needed -!> -!> \param a(lda,matrixCols) Distributed matrix for which eigenvalues are to be computed. -!> Distribution is like in Scalapack. -!> The full matrix must be set (not only one half like in scalapack). -!> Destroyed on exit (upper and lower half). -!> -!> \param lda Leading dimension of a -!> -!> \param ev(na) On output: eigenvalues of a, every processor gets the complete set -!> -!> \param q(ldq,matrixCols) On output: Eigenvectors of a -!> Distribution is like in Scalapack. -!> Must be always dimensioned to the full size (corresponding to (na,na)) -!> even if only a part of the eigenvalues is needed. -!> -!> \param ldq Leading dimension of q -!> -!> \param nblk blocksize of cyclic distribution, must be the same in both directions! -!> -!> \param matrixCols local columns of matrix a and q -!> -!> \param mpi_comm_rows MPI communicator for rows -!> \param mpi_comm_cols MPI communicator for columns -!> \param mpi_comm_all MPI communicator for the total processor set -!> -!> \param THIS_REAL_ELPA_KERNEL_API (optional) specify used ELPA2 kernel via API -!> -!> \param useGPU (optional) decide whether to use GPUs or not -!> -!> \result success logical, false if error occured -!------------------------------------------------------------------------------- - interface solve_evp_complex_2stage - module procedure solve_evp_complex_2stage_double - end interface - !------------------------------------------------------------------------------- !> \brief elpa_solve_evp_complex_2stage_double: Fortran function to solve the complex double-precision eigenvalue problem with a 2 stage approach. This is called by "elpa_solve_evp_complex_double" !>