From f466029ed379fd6e5b4fda6610c3f6a49aebfeb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= Date: Thu, 1 Jun 2017 15:30:04 +0200 Subject: [PATCH] More cleanup of test programs Most of the test programs for the new interface were all essentially copy&pasted from test.F90, now all of those directly use test.F90 with appropriate preprocessor flags --- Makefile.am | 785 +----------------- autogen.sh | 1 + generate_automake_test_programs.py | 57 ++ legacy_test_programs.am | 422 ++++++++++ test/Fortran/elpa1/complex_1stage.F90 | 164 ---- test/Fortran/elpa1/complex_1stage_gpu.F90 | 229 ----- test/Fortran/elpa1/real_1stage.F90 | 169 ---- test/Fortran/elpa1/real_1stage_gpu.F90 | 225 ----- test/Fortran/elpa1/single_complex_1stage.F90 | 166 ---- .../elpa1/single_complex_1stage_gpu.F90 | 227 ----- test/Fortran/elpa1/single_real_1stage.F90 | 167 ---- test/Fortran/elpa1/single_real_1stage_gpu.F90 | 223 ----- test/Fortran/elpa2/complex_2stage.F90 | 170 ---- test/Fortran/elpa2/complex_2stage_gpu.F90 | 227 ----- test/Fortran/elpa2/real_2stage.F90 | 166 ---- test/Fortran/elpa2/real_2stage_gpu.F90 | 236 ------ test/Fortran/elpa2/single_complex_2stage.F90 | 167 ---- .../elpa2/single_complex_2stage_gpu.F90 | 230 ----- test/Fortran/elpa2/single_real_2stage.F90 | 174 ---- test/Fortran/elpa2/single_real_2stage_gpu.F90 | 228 ----- 20 files changed, 495 insertions(+), 3938 deletions(-) create mode 100755 generate_automake_test_programs.py create mode 100644 legacy_test_programs.am delete mode 100644 test/Fortran/elpa1/complex_1stage.F90 delete mode 100644 test/Fortran/elpa1/complex_1stage_gpu.F90 delete mode 100644 test/Fortran/elpa1/real_1stage.F90 delete mode 100644 test/Fortran/elpa1/real_1stage_gpu.F90 delete mode 100644 test/Fortran/elpa1/single_complex_1stage.F90 delete mode 100644 test/Fortran/elpa1/single_complex_1stage_gpu.F90 delete mode 100644 test/Fortran/elpa1/single_real_1stage.F90 delete mode 100644 test/Fortran/elpa1/single_real_1stage_gpu.F90 delete mode 100644 test/Fortran/elpa2/complex_2stage.F90 delete mode 100644 test/Fortran/elpa2/complex_2stage_gpu.F90 delete mode 100644 test/Fortran/elpa2/real_2stage.F90 delete mode 100644 test/Fortran/elpa2/real_2stage_gpu.F90 delete mode 100644 test/Fortran/elpa2/single_complex_2stage.F90 delete mode 100644 test/Fortran/elpa2/single_complex_2stage_gpu.F90 delete mode 100644 test/Fortran/elpa2/single_real_2stage.F90 delete mode 100644 test/Fortran/elpa2/single_real_2stage_gpu.F90 diff --git a/Makefile.am b/Makefile.am index aa756a05..71fa0571 100644 --- a/Makefile.am +++ b/Makefile.am @@ -420,141 +420,8 @@ bin_PROGRAMS += \ elpa_tests@SUFFIX@ endif -noinst_PROGRAMS = \ - test_real_double_1stage \ - test_real_double_2stage \ - test_complex_double_1stage \ - test_complex_double_2stage \ - test_c_real_double_1stage \ - test_c_real_double_2stage \ - test_c_complex_double_1stage \ - test_c_complex_double_2stage \ - double_instance@SUFFIX@ \ - real_2stage_banded@SUFFIX@ \ - complex_2stage_banded@SUFFIX@ \ - real_2stage@SUFFIX@ \ - complex_2stage@SUFFIX@ \ - real_1stage@SUFFIX@ \ - complex_1stage@SUFFIX@ - -if WANT_SINGLE_PRECISION_REAL -noinst_PROGRAMS += \ - test_single_real_1stage \ - test_single_real_2stage \ - test_c_single_real_1stage \ - test_c_single_real_2stage \ - single_real_2stage_banded@SUFFIX@ \ - single_real_2stage@SUFFIX@ \ - single_real_1stage@SUFFIX@ -endif - -if WANT_SINGLE_PRECISION_COMPLEX -noinst_PROGRAMS += \ - test_single_complex_1stage \ - test_single_complex_2stage \ - test_c_single_complex_1stage \ - test_c_single_complex_2stage \ - single_complex_2stage_banded@SUFFIX@ \ - single_complex_2stage@SUFFIX@ \ - single_complex_1stage@SUFFIX@ -endif - -if WITH_GPU_VERSION -noinst_PROGRAMS += \ - complex_1stage_gpu@SUFFIX@ \ - complex_2stage_gpu@SUFFIX@ \ - real_1stage_gpu@SUFFIX@ \ - real_2stage_gpu@SUFFIX@ - -if WANT_SINGLE_PRECISION_REAL -noinst_PROGRAMS += \ - single_real_1stage_gpu@SUFFIX@ \ - single_real_2stage_gpu@SUFFIX@ -endif - -if WANT_SINGLE_PRECISION_COMPLEX -noinst_PROGRAMS += \ - single_complex_1stage_gpu@SUFFIX@ \ - single_complex_2stage_gpu@SUFFIX@ -endif -endif - - -if ENABLE_LEGACY -noinst_PROGRAMS += \ - legacy_real_1stage@SUFFIX@ \ - legacy_complex_1stage@SUFFIX@ \ - legacy_real_2stage@SUFFIX@ \ - legacy_real_2stage_default@SUFFIX@ \ - legacy_real_2stage_qr@SUFFIX@ \ - legacy_real_2stage_api@SUFFIX@ \ - legacy_complex_2stage@SUFFIX@ \ - legacy_complex_2stage_default@SUFFIX@ \ - legacy_complex_2stage_api@SUFFIX@ \ - legacy_real_driver@SUFFIX@ \ - legacy_complex_driver@SUFFIX@ \ - legacy_real_toeplitz@SUFFIX@ \ - legacy_real_transpose_multiply@SUFFIX@ \ - legacy_complex_transpose_multiply@SUFFIX@ \ - legacy_real_cholesky@SUFFIX@ \ - legacy_real_invert_trm@SUFFIX@ \ - legacy_complex_cholesky@SUFFIX@ \ - legacy_complex_invert_trm@SUFFIX@ \ - legacy_real_1stage_c_version@SUFFIX@ \ - legacy_complex_1stage_c_version@SUFFIX@ \ - legacy_real_2stage_c_version@SUFFIX@ \ - legacy_complex_2stage_c_version@SUFFIX@ \ - legacy_real_driver_c_version@SUFFIX@ \ - legacy_complex_driver_c_version@SUFFIX@ - -if WANT_SINGLE_PRECISION_COMPLEX -noinst_PROGRAMS += \ - legacy_single_complex_1stage@SUFFIX@ \ - legacy_single_complex_2stage@SUFFIX@ \ - legacy_single_complex_2stage_default@SUFFIX@ \ - legacy_single_complex_transpose_multiply@SUFFIX@ \ - legacy_single_complex_driver@SUFFIX@ \ - legacy_single_complex_cholesky@SUFFIX@ \ - legacy_single_complex_invert_trm@SUFFIX@ \ - legacy_single_complex_2stage_api@SUFFIX@ \ - legacy_single_complex_driver_c_version@SUFFIX@ -endif - -if WANT_SINGLE_PRECISION_REAL -noinst_PROGRAMS += \ - legacy_single_real_1stage@SUFFIX@ \ - legacy_single_real_2stage@SUFFIX@ \ - legacy_single_real_2stage_default@SUFFIX@ \ - legacy_single_real_2stage_qr@SUFFIX@ \ - legacy_single_real_2stage_api@SUFFIX@ \ - legacy_single_real_driver@SUFFIX@ \ - legacy_single_real_transpose_multiply@SUFFIX@ \ - legacy_single_real_cholesky@SUFFIX@ \ - legacy_single_real_invert_trm@SUFFIX@ \ - legacy_single_real_driver_c_version@SUFFIX@ \ - legacy_single_real_toeplitz@SUFFIX@ -endif - -if WITH_GPU_VERSION -noinst_PROGRAMS += \ - legacy_complex_1stage_gpu@SUFFIX@ \ - legacy_real_1stage_gpu@SUFFIX@ \ - legacy_complex_2stage_gpu@SUFFIX@ \ - legacy_real_2stage_gpu@SUFFIX@ - -if WANT_SINGLE_PRECISION_REAL -noinst_PROGRAMS += \ - legacy_single_real_1stage_gpu@SUFFIX@ \ - legacy_single_real_2stage_gpu@SUFFIX@ -endif - -if WANT_SINGLE_PRECISION_COMPLEX -noinst_PROGRAMS += \ - legacy_single_complex_1stage_gpu@SUFFIX@ \ - legacy_single_complex_2stage_gpu@SUFFIX@ -endif -endif -endif +noinst_PROGRAMS = +check_SCRIPTS = build_lib = libelpatest@SUFFIX@.la libelpa@SUFFIX@.la @@ -583,668 +450,46 @@ elpa2_print_kernels@SUFFIX@_SOURCES = src/elpa2/elpa2_print_kernels.F90 elpa2_print_kernels@SUFFIX@_LDADD = $(build_lib) elpa2_print_kernels@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)modules -test_real_double_1stage_SOURCES = test/Fortran/test.F90 -test_real_double_1stage_LDADD = $(build_lib) $(FCLIBS) -test_real_double_1stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_REAL \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_real_double_2stage_SOURCES = test/Fortran/test.F90 -test_real_double_2stage_LDADD = $(build_lib) $(FCLIBS) -test_real_double_2stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_REAL \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 - -test_complex_double_1stage_SOURCES = test/Fortran/test.F90 -test_complex_double_1stage_LDADD = $(build_lib) $(FCLIBS) -test_complex_double_1stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_COMPLEX \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_complex_double_2stage_SOURCES = test/Fortran/test.F90 -test_complex_double_2stage_LDADD = $(build_lib) $(FCLIBS) -test_complex_double_2stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_COMPLEX \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 - -if WANT_SINGLE_PRECISION_REAL -test_single_real_1stage_SOURCES = test/Fortran/test.F90 -test_single_real_1stage_LDADD = $(build_lib) $(FCLIBS) -test_single_real_1stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_REAL \ - -DTEST_SINGLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_single_real_2stage_SOURCES = test/Fortran/test.F90 -test_single_real_2stage_LDADD = $(build_lib) $(FCLIBS) -test_single_real_2stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_REAL \ - -DTEST_SINGLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 -endif +include test_programs.am -if WANT_SINGLE_PRECISION_COMPLEX -test_single_complex_1stage_SOURCES = test/Fortran/test.F90 -test_single_complex_1stage_LDADD = $(build_lib) $(FCLIBS) -test_single_complex_1stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_COMPLEX \ - -DTEST_SINGLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_single_complex_2stage_SOURCES = test/Fortran/test.F90 -test_single_complex_2stage_LDADD = $(build_lib) $(FCLIBS) -test_single_complex_2stage_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \ - -DTEST_COMPLEX \ - -DTEST_SINGLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 -endif - -test_c_real_double_1stage_SOURCES = test/C/test.c -test_c_real_double_1stage_LDADD = $(build_lib) $(FCLIBS) -test_c_real_double_1stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_REAL \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_c_real_double_2stage_SOURCES = test/C/test.c -test_c_real_double_2stage_LDADD = $(build_lib) $(FCLIBS) -test_c_real_double_2stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_REAL \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 - -test_c_complex_double_1stage_SOURCES = test/C/test.c -test_c_complex_double_1stage_LDADD = $(build_lib) $(FCLIBS) -test_c_complex_double_1stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_COMPLEX \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_c_complex_double_2stage_SOURCES = test/C/test.c -test_c_complex_double_2stage_LDADD = $(build_lib) $(FCLIBS) -test_c_complex_double_2stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_COMPLEX \ - -DTEST_DOUBLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 - -if WANT_SINGLE_PRECISION_REAL -test_c_single_real_1stage_SOURCES = test/C/test.c -test_c_single_real_1stage_LDADD = $(build_lib) $(FCLIBS) -test_c_single_real_1stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_REAL \ - -DTEST_SINGLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_c_single_real_2stage_SOURCES = test/C/test.c -test_c_single_real_2stage_LDADD = $(build_lib) $(FCLIBS) -test_c_single_real_2stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_REAL \ - -DTEST_SINGLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 -endif - -if WANT_SINGLE_PRECISION_COMPLEX -test_c_single_complex_1stage_SOURCES = test/C/test.c -test_c_single_complex_1stage_LDADD = $(build_lib) $(FCLIBS) -test_c_single_complex_1stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_COMPLEX \ - -DTEST_SINGLE \ - -DTEST_SOLVER_1STAGE \ - -DTEST_GPU=0 - -test_c_single_complex_2stage_SOURCES = test/C/test.c -test_c_single_complex_2stage_LDADD = $(build_lib) $(FCLIBS) -test_c_single_complex_2stage_CFLAGS = $(AM_CFLAGS) \ - -DTEST_COMPLEX \ - -DTEST_SINGLE \ - -DTEST_SOLVER_2STAGE \ - -DTEST_GPU=0 +if ENABLE_LEGACY +include legacy_test_programs.am endif +noinst_PROGRAMS += double_instance@SUFFIX@ +check_SCRIPTS += double_instance@SUFFIX@.sh double_instance@SUFFIX@_SOURCES = test/Fortran/elpa2/double_instance.F90 double_instance@SUFFIX@_LDADD = $(build_lib) double_instance@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_double_instance@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 +noinst_PROGRAMS += real_2stage_banded@SUFFIX@ +check_SCRIPTS += real_2stage_banded@SUFFIX@.sh real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_banded.F90 real_2stage_banded@SUFFIX@_LDADD = $(build_lib) real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_real_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 +noinst_PROGRAMS += complex_2stage_banded@SUFFIX@ +check_SCRIPTS += complex_2stage_banded@SUFFIX@.sh complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_banded.F90 complex_2stage_banded@SUFFIX@_LDADD = $(build_lib) complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_complex_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage.F90 -real_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage.F90 -complex_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/real_1stage.F90 -real_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_1stage.F90 -complex_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -if WANT_SINGLE_PRECISION_REAL -single_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage.F90 -single_real_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -single_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -single_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_1stage.F90 -single_real_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -single_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif - -if WANT_SINGLE_PRECISION_COMPLEX -single_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage.F90 -single_complex_2stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -single_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -single_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_1stage.F90 -single_complex_1stage@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -single_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif - -if WITH_GPU_VERSION -real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/real_1stage_gpu.F90 -real_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/complex_1stage_gpu.F90 -complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/real_2stage_gpu.F90 -real_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/complex_2stage_gpu.F90 -complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif if WANT_SINGLE_PRECISION_REAL +noinst_PROGRAMS += single_real_2stage_banded@SUFFIX@ +check_SCRIPTS += single_real_2stage_banded@SUFFIX@.sh single_real_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_banded.F90 single_real_2stage_banded@SUFFIX@_LDADD = $(build_lib) single_real_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_real_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -single_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/single_real_1stage_gpu.F90 -single_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -single_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -single_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/single_real_2stage_gpu.F90 -single_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -single_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 endif if WANT_SINGLE_PRECISION_COMPLEX +noinst_PROGRAMS += single_complex_2stage_banded@SUFFIX@ +check_SCRIPTS += single_complex_2stage_banded@SUFFIX@.sh single_complex_2stage_banded@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage_banded.F90 single_complex_2stage_banded@SUFFIX@_LDADD = $(build_lib) single_complex_2stage_banded@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_complex_2stage_banded@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -single_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/single_complex_1stage_gpu.F90 -single_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -single_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -single_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/single_complex_2stage_gpu.F90 -single_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -single_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_single_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif - - -if ENABLE_LEGACY -legacy_real_1stage_c_version@SUFFIX@_SOURCES = test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c -legacy_real_1stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_real_1stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_1stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_real_driver_c_version.c -legacy_real_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_real_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_1stage_c_version@SUFFIX@_SOURCES = test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c -legacy_complex_1stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_complex_1stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_1stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_complex_driver_c_version.c -legacy_complex_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_complex_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_2stage_c_version@SUFFIX@_SOURCES = test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c -legacy_real_2stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_real_2stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_2stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_2stage_c_version@SUFFIX@_SOURCES = test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c -legacy_complex_2stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_complex_2stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_2stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real.F90 -legacy_real_1stage@SUFFIX@_LDADD = $(build_lib) -legacy_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90 -legacy_real_toeplitz@SUFFIX@_LDADD = $(build_lib) -legacy_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_transp_multiply.F90 -legacy_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib) -legacy_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_transp_multiply.F90 -legacy_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib) -legacy_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90 -legacy_real_cholesky@SUFFIX@_LDADD = $(build_lib) -legacy_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90 -legacy_real_invert_trm@SUFFIX@_LDADD = $(build_lib) -legacy_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90 -legacy_complex_cholesky@SUFFIX@_LDADD = $(build_lib) -legacy_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90 -legacy_complex_invert_trm@SUFFIX@_LDADD = $(build_lib) -legacy_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real.F90 -legacy_real_2stage@SUFFIX@_LDADD = $(build_lib) -legacy_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90 -legacy_real_2stage_default@SUFFIX@_LDADD = $(build_lib) -legacy_real_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_2stage_qr@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90 -legacy_real_2stage_qr@SUFFIX@_LDADD = $(build_lib) -legacy_real_2stage_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_2stage_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_api.F90 -legacy_real_2stage_api@SUFFIX@_LDADD = $(build_lib) -legacy_real_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex.F90 -legacy_complex_1stage@SUFFIX@_LDADD = $(build_lib) -legacy_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex.F90 -legacy_complex_2stage@SUFFIX@_LDADD = $(build_lib) -legacy_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90 -legacy_complex_2stage_default@SUFFIX@_LDADD = $(build_lib) -legacy_complex_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90 -legacy_complex_2stage_api@SUFFIX@_LDADD = $(build_lib) -legacy_complex_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_real_driver.F90 -legacy_real_driver@SUFFIX@_LDADD = $(build_lib) -legacy_real_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_complex_driver.F90 -legacy_complex_driver@SUFFIX@_LDADD = $(build_lib) -legacy_complex_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -elpa_tests@SUFFIX@_SOURCES = test/Fortran/elpa_tests.F90 -elpa_tests@SUFFIX@_LDADD = $(build_lib) -elpa_tests@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)test_modules $(FC_MODINC)modules - -if WANT_SINGLE_PRECISION_REAL - -legacy_single_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real.F90 -legacy_single_real_1stage@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real.F90 -legacy_single_real_2stage@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90 -legacy_single_real_driver@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90 -legacy_single_real_toeplitz@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_transp_multiply.F90 -legacy_single_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c -legacy_single_real_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_single_real_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90 -legacy_single_real_cholesky@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90 -legacy_single_real_invert_trm@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90 -legacy_single_real_2stage_default@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_2stage_qr@SUFFIX@_SOURCES = \ - test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90 -legacy_single_real_2stage_qr@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_2stage_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_2stage_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90 -legacy_single_real_2stage_api@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif - -if WANT_SINGLE_PRECISION_COMPLEX -legacy_single_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90 -legacy_single_complex_1stage@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90 -legacy_single_complex_driver@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c -legacy_single_complex_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) -legacy_single_complex_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -legacy_single_complex_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90 -legacy_single_complex_2stage@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 -legacy_single_complex_2stage_default@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_transp_multiply.F90 -legacy_single_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90 -legacy_single_complex_cholesky@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90 -legacy_single_complex_invert_trm@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90 -legacy_single_complex_2stage_api@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif - -if WITH_GPU_VERSION -legacy_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90 -legacy_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90 -legacy_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90 -legacy_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90 -legacy_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -if WANT_SINGLE_PRECISION_REAL -legacy_single_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90 -legacy_single_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90 -legacy_single_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_single_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif - -if WANT_SINGLE_PRECISION_COMPLEX -legacy_single_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90 -legacy_single_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 - -legacy_single_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90 -legacy_single_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib) -legacy_single_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules -EXTRA_legacy_single_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 -endif -endif -endif - -check_SCRIPTS = \ - test_real_double_1stage.sh \ - test_real_double_2stage.sh \ - test_complex_double_1stage.sh \ - test_complex_double_2stage.sh \ - test_c_real_double_1stage.sh \ - test_c_real_double_2stage.sh \ - test_c_complex_double_1stage.sh \ - test_c_complex_double_2stage.sh \ - double_instance@SUFFIX@.sh \ - real_2stage_banded@SUFFIX@.sh \ - complex_2stage_banded@SUFFIX@.sh \ - real_2stage@SUFFIX@.sh \ - complex_2stage@SUFFIX@.sh \ - real_1stage@SUFFIX@.sh \ - complex_1stage@SUFFIX@.sh - -if WANT_SINGLE_PRECISION_REAL -check_SCRIPTS += \ - test_single_real_1stage.sh \ - test_single_real_2stage.sh \ - test_c_single_real_1stage.sh \ - test_c_single_real_2stage.sh \ - single_real_2stage_banded@SUFFIX@.sh \ - single_real_2stage@SUFFIX@.sh \ - single_real_1stage@SUFFIX@.sh endif -if WANT_SINGLE_PRECISION_COMPLEX -check_SCRIPTS += \ - test_single_complex_1stage.sh \ - test_single_complex_2stage.sh \ - test_c_single_complex_1stage.sh \ - test_c_single_complex_2stage.sh \ - single_complex_2stage_banded@SUFFIX@.sh \ - single_complex_2stage@SUFFIX@.sh \ - single_complex_1stage@SUFFIX@.sh -endif - -if WITH_GPU_VERSION -check_SCRIPTS += \ - complex_1stage_gpu@SUFFIX@.sh \ - complex_2stage_gpu@SUFFIX@.sh \ - real_1stage_gpu@SUFFIX@.sh \ - real_2stage_gpu@SUFFIX@.sh - -if WANT_SINGLE_PRECISION_REAL -check_SCRIPTS += \ - single_real_1stage_gpu@SUFFIX@.sh \ - single_real_2stage_gpu@SUFFIX@.sh -endif - -if WANT_SINGLE_PRECISION_COMPLEX -check_SCRIPTS += \ - single_complex_1stage_gpu@SUFFIX@.sh \ - single_complex_2stage_gpu@SUFFIX@.sh -endif -endif - -if ENABLE_LEGACY -check_SCRIPTS += \ - legacy_real_1stage@SUFFIX@.sh \ - legacy_real_2stage@SUFFIX@.sh \ - legacy_real_2stage_default@SUFFIX@.sh \ - legacy_complex_1stage@SUFFIX@.sh \ - legacy_complex_2stage@SUFFIX@.sh \ - legacy_real_2stage_qr@SUFFIX@.sh \ - legacy_complex_2stage_default@SUFFIX@.sh \ - legacy_real_2stage_api@SUFFIX@.sh \ - legacy_complex_2stage_api@SUFFIX@.sh \ - legacy_real_driver@SUFFIX@.sh \ - legacy_complex_driver@SUFFIX@.sh \ - legacy_real_toeplitz@SUFFIX@.sh \ - legacy_real_cholesky@SUFFIX@.sh \ - legacy_real_invert_trm@SUFFIX@.sh \ - legacy_real_transpose_multiply@SUFFIX@.sh \ - legacy_complex_cholesky@SUFFIX@.sh \ - legacy_complex_invert_trm@SUFFIX@.sh \ - legacy_complex_transpose_multiply@SUFFIX@.sh \ - legacy_real_1stage_c_version@SUFFIX@.sh \ - legacy_complex_1stage_c_version@SUFFIX@.sh \ - legacy_real_2stage_c_version@SUFFIX@.sh \ - legacy_complex_2stage_c_version@SUFFIX@.sh \ - legacy_real_driver_c_version@SUFFIX@.sh \ - legacy_complex_driver_c_version@SUFFIX@.sh - -if WANT_SINGLE_PRECISION_REAL -check_SCRIPTS += \ - legacy_single_real_1stage@SUFFIX@.sh \ - legacy_single_real_2stage@SUFFIX@.sh \ - legacy_single_real_2stage_default@SUFFIX@.sh \ - legacy_single_real_2stage_qr@SUFFIX@.sh \ - legacy_single_real_driver@SUFFIX@.sh \ - legacy_single_real_cholesky@SUFFIX@.sh \ - legacy_single_real_invert_trm@SUFFIX@.sh \ - legacy_single_real_transpose_multiply@SUFFIX@.sh \ - legacy_single_real_2stage_api@SUFFIX@.sh \ - legacy_single_real_driver_c_version@SUFFIX@.sh -endif - -if WANT_SINGLE_PRECISION_COMPLEX -check_SCRIPTS += \ - legacy_single_complex_1stage@SUFFIX@.sh \ - legacy_single_complex_2stage@SUFFIX@.sh \ - legacy_single_complex_2stage_default@SUFFIX@.sh \ - legacy_single_complex_cholesky@SUFFIX@.sh \ - legacy_single_complex_driver@SUFFIX@.sh \ - legacy_single_complex_invert_trm@SUFFIX@.sh \ - legacy_single_complex_transpose_multiply@SUFFIX@.sh \ - legacy_single_complex_2stage_api@SUFFIX@.sh \ - legacy_single_complex_driver_c_version@SUFFIX@.sh -endif - -if WITH_GPU_VERSION -check_SCRIPTS += \ - legacy_real_1stage_gpu@SUFFIX@.sh \ - legacy_complex_1stage_gpu@SUFFIX@.sh \ - legacy_real_2stage_gpu@SUFFIX@.sh \ - legacy_complex_2stage_gpu@SUFFIX@.sh - -if WANT_SINGLE_PRECISION_REAL -check_SCRIPTS += \ - legacy_single_real_1stage_gpu@SUFFIX@.sh \ - legacy_single_real_2stage_gpu@SUFFIX@.sh -endif -if WANT_SINGLE_PRECISION_COMPLEX -check_SCRIPTS += \ - legacy_single_complex_1stage_gpu@SUFFIX@.sh \ - legacy_single_complex_2stage_gpu@SUFFIX@.sh -endif -endif -endif # test scripts MPIEXEC ?= $(MPI_BINARY) -n 2 diff --git a/autogen.sh b/autogen.sh index c6223628..ff53d5d1 100755 --- a/autogen.sh +++ b/autogen.sh @@ -5,4 +5,5 @@ mkdir -p m4/ test -n "$srcdir" || srcdir=`dirname "$0"` test -n "$srcdir" || srcdir=. +$srcdir/generate_automake_test_programs.py autoreconf --force --install --verbose "$srcdir" diff --git a/generate_automake_test_programs.py b/generate_automake_test_programs.py new file mode 100755 index 00000000..9b51d71c --- /dev/null +++ b/generate_automake_test_programs.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python +from __future__ import print_function +from itertools import product + +domain_flag = { + "real" : "-DTEST_REAL", + "complex": "-DTEST_COMPLEX", +} +prec_flag = { + "double" : "-DTEST_DOUBLE", + "single" : "-DTEST_SINGLE", +} +solver_flag = { + "1stage" : "-DTEST_SOLVER_1STAGE", + "2stage" : "-DTEST_SOLVER_2STAGE", +} +gpu_flag = { + 0 : "-DTEST_GPU=0", + 1 : "-DTEST_GPU=1", +} + +f = open("test_programs.am", "w") + +for g, p, d, s in product(sorted(gpu_flag.keys()), + sorted(prec_flag.keys()), + sorted(domain_flag.keys()), + sorted(solver_flag.keys())): + endifs = 0 + extra_flags = [] + if (g == 1): + print("if WITH_GPU_VERSION", file=f) + endifs += 1 + if s == "2stage": + extra_flags.append("-DTEST_KERNEL=ELPA_2STAGE_{0}_GPU".format(d.upper())) + + if (p == "single"): + if (d == "real"): + print("if WANT_SINGLE_PRECISION_REAL", file=f) + elif (d == "complex"): + print("if WANT_SINGLE_PRECISION_COMPLEX", file=f) + else: + raise Exception("Oh no!") + endifs += 1 + + name = "test_{0}_{1}_{2}{3}".format(d, p, s, "_gpu" if g else "") + print("noinst_PROGRAMS += " + name, file=f) + print("check_SCRIPTS += " + name + ".sh", file=f) + print(name + "_SOURCES = test/Fortran/test.F90", file=f) + print(name + "_LDADD = $(build_lib) $(FCLIBS)", file=f) + print(name + "_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules \\", file=f) + print(" " + " \\\n ".join([ + domain_flag[d], + prec_flag[p], + solver_flag[s], + gpu_flag[g]] + extra_flags), file=f) + + print("endif\n" * endifs, file=f) diff --git a/legacy_test_programs.am b/legacy_test_programs.am new file mode 100644 index 00000000..9333a053 --- /dev/null +++ b/legacy_test_programs.am @@ -0,0 +1,422 @@ +noinst_PROGRAMS += \ + legacy_real_1stage@SUFFIX@ \ + legacy_complex_1stage@SUFFIX@ \ + legacy_real_2stage@SUFFIX@ \ + legacy_real_2stage_default@SUFFIX@ \ + legacy_real_2stage_qr@SUFFIX@ \ + legacy_real_2stage_api@SUFFIX@ \ + legacy_complex_2stage@SUFFIX@ \ + legacy_complex_2stage_default@SUFFIX@ \ + legacy_complex_2stage_api@SUFFIX@ \ + legacy_real_driver@SUFFIX@ \ + legacy_complex_driver@SUFFIX@ \ + legacy_real_toeplitz@SUFFIX@ \ + legacy_real_transpose_multiply@SUFFIX@ \ + legacy_complex_transpose_multiply@SUFFIX@ \ + legacy_real_cholesky@SUFFIX@ \ + legacy_real_invert_trm@SUFFIX@ \ + legacy_complex_cholesky@SUFFIX@ \ + legacy_complex_invert_trm@SUFFIX@ \ + legacy_real_1stage_c_version@SUFFIX@ \ + legacy_complex_1stage_c_version@SUFFIX@ \ + legacy_real_2stage_c_version@SUFFIX@ \ + legacy_complex_2stage_c_version@SUFFIX@ \ + legacy_real_driver_c_version@SUFFIX@ \ + legacy_complex_driver_c_version@SUFFIX@ + +if WANT_SINGLE_PRECISION_COMPLEX +noinst_PROGRAMS += \ + legacy_single_complex_1stage@SUFFIX@ \ + legacy_single_complex_2stage@SUFFIX@ \ + legacy_single_complex_2stage_default@SUFFIX@ \ + legacy_single_complex_transpose_multiply@SUFFIX@ \ + legacy_single_complex_driver@SUFFIX@ \ + legacy_single_complex_cholesky@SUFFIX@ \ + legacy_single_complex_invert_trm@SUFFIX@ \ + legacy_single_complex_2stage_api@SUFFIX@ \ + legacy_single_complex_driver_c_version@SUFFIX@ +endif + +if WANT_SINGLE_PRECISION_REAL +noinst_PROGRAMS += \ + legacy_single_real_1stage@SUFFIX@ \ + legacy_single_real_2stage@SUFFIX@ \ + legacy_single_real_2stage_default@SUFFIX@ \ + legacy_single_real_2stage_qr@SUFFIX@ \ + legacy_single_real_2stage_api@SUFFIX@ \ + legacy_single_real_driver@SUFFIX@ \ + legacy_single_real_transpose_multiply@SUFFIX@ \ + legacy_single_real_cholesky@SUFFIX@ \ + legacy_single_real_invert_trm@SUFFIX@ \ + legacy_single_real_driver_c_version@SUFFIX@ \ + legacy_single_real_toeplitz@SUFFIX@ +endif + +if WITH_GPU_VERSION +noinst_PROGRAMS += \ + legacy_complex_1stage_gpu@SUFFIX@ \ + legacy_real_1stage_gpu@SUFFIX@ \ + legacy_complex_2stage_gpu@SUFFIX@ \ + legacy_real_2stage_gpu@SUFFIX@ + +if WANT_SINGLE_PRECISION_REAL +noinst_PROGRAMS += \ + legacy_single_real_1stage_gpu@SUFFIX@ \ + legacy_single_real_2stage_gpu@SUFFIX@ +endif + +if WANT_SINGLE_PRECISION_COMPLEX +noinst_PROGRAMS += \ + legacy_single_complex_1stage_gpu@SUFFIX@ \ + legacy_single_complex_2stage_gpu@SUFFIX@ +endif +endif + +legacy_real_1stage_c_version@SUFFIX@_SOURCES = test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c +legacy_real_1stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_real_1stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_1stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_real_driver_c_version.c +legacy_real_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_real_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_1stage_c_version@SUFFIX@_SOURCES = test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c +legacy_complex_1stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_complex_1stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_1stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_complex_driver_c_version.c +legacy_complex_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_complex_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_2stage_c_version@SUFFIX@_SOURCES = test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c +legacy_real_2stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_real_2stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_2stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_2stage_c_version@SUFFIX@_SOURCES = test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c +legacy_complex_2stage_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_complex_2stage_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_2stage_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real.F90 +legacy_real_1stage@SUFFIX@_LDADD = $(build_lib) +legacy_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90 +legacy_real_toeplitz@SUFFIX@_LDADD = $(build_lib) +legacy_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_transp_multiply.F90 +legacy_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib) +legacy_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_transp_multiply.F90 +legacy_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib) +legacy_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90 +legacy_real_cholesky@SUFFIX@_LDADD = $(build_lib) +legacy_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90 +legacy_real_invert_trm@SUFFIX@_LDADD = $(build_lib) +legacy_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90 +legacy_complex_cholesky@SUFFIX@_LDADD = $(build_lib) +legacy_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90 +legacy_complex_invert_trm@SUFFIX@_LDADD = $(build_lib) +legacy_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real.F90 +legacy_real_2stage@SUFFIX@_LDADD = $(build_lib) +legacy_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90 +legacy_real_2stage_default@SUFFIX@_LDADD = $(build_lib) +legacy_real_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_2stage_qr@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90 +legacy_real_2stage_qr@SUFFIX@_LDADD = $(build_lib) +legacy_real_2stage_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_2stage_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_api.F90 +legacy_real_2stage_api@SUFFIX@_LDADD = $(build_lib) +legacy_real_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex.F90 +legacy_complex_1stage@SUFFIX@_LDADD = $(build_lib) +legacy_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex.F90 +legacy_complex_2stage@SUFFIX@_LDADD = $(build_lib) +legacy_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90 +legacy_complex_2stage_default@SUFFIX@_LDADD = $(build_lib) +legacy_complex_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90 +legacy_complex_2stage_api@SUFFIX@_LDADD = $(build_lib) +legacy_complex_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_real_driver.F90 +legacy_real_driver@SUFFIX@_LDADD = $(build_lib) +legacy_real_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_complex_driver.F90 +legacy_complex_driver@SUFFIX@_LDADD = $(build_lib) +legacy_complex_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +elpa_tests@SUFFIX@_SOURCES = test/Fortran/elpa_tests.F90 +elpa_tests@SUFFIX@_LDADD = $(build_lib) +elpa_tests@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_elpa_tests@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +if WANT_SINGLE_PRECISION_REAL + +legacy_single_real_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real.F90 +legacy_single_real_1stage@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real.F90 +legacy_single_real_2stage@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90 +legacy_single_real_driver@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_toeplitz@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90 +legacy_single_real_toeplitz@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_toeplitz@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_toeplitz@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_transp_multiply.F90 +legacy_single_real_transpose_multiply@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c +legacy_single_real_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_single_real_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90 +legacy_single_real_cholesky@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90 +legacy_single_real_invert_trm@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90 +legacy_single_real_2stage_default@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_2stage_qr@SUFFIX@_SOURCES = \ + test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90 +legacy_single_real_2stage_qr@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_2stage_qr@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_2stage_qr@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90 +legacy_single_real_2stage_api@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 +endif + +if WANT_SINGLE_PRECISION_COMPLEX +legacy_single_complex_1stage@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90 +legacy_single_complex_1stage@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_1stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_1stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_driver@SUFFIX@_SOURCES = test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90 +legacy_single_complex_driver@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_driver@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_driver@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_driver_c_version@SUFFIX@_SOURCES = test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c +legacy_single_complex_driver_c_version@SUFFIX@_LDADD = $(build_lib) $(FCLIBS) +legacy_single_complex_driver_c_version@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +legacy_single_complex_driver_c_version@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_2stage@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90 +legacy_single_complex_2stage@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_2stage@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_2stage@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_2stage_default@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 +legacy_single_complex_2stage_default@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_2stage_default@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_2stage_default@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_transpose_multiply@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_transp_multiply.F90 +legacy_single_complex_transpose_multiply@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_transpose_multiply@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_transpose_multiply@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_cholesky@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90 +legacy_single_complex_cholesky@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_cholesky@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_cholesky@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_invert_trm@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90 +legacy_single_complex_invert_trm@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_invert_trm@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_invert_trm@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_2stage_api@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90 +legacy_single_complex_2stage_api@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_2stage_api@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_2stage_api@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 +endif + +if WITH_GPU_VERSION +legacy_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90 +legacy_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90 +legacy_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90 +legacy_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90 +legacy_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +if WANT_SINGLE_PRECISION_REAL +legacy_single_real_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90 +legacy_single_real_1stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_real_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90 +legacy_single_real_2stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_single_real_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_real_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 +endif + +if WANT_SINGLE_PRECISION_COMPLEX +legacy_single_complex_1stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90 +legacy_single_complex_1stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_1stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_1stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 + +legacy_single_complex_2stage_gpu@SUFFIX@_SOURCES = test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90 +legacy_single_complex_2stage_gpu@SUFFIX@_LDADD = $(build_lib) +legacy_single_complex_2stage_gpu@SUFFIX@_FCFLAGS = $(AM_FCFLAGS) $(FC_MODINC)test_modules $(FC_MODINC)modules +EXTRA_legacy_single_complex_2stage_gpu@SUFFIX@_DEPENDENCIES = test/Fortran/elpa_print_headers.X90 +endif +endif + +check_SCRIPTS += \ + legacy_real_1stage@SUFFIX@.sh \ + legacy_real_2stage@SUFFIX@.sh \ + legacy_real_2stage_default@SUFFIX@.sh \ + legacy_complex_1stage@SUFFIX@.sh \ + legacy_complex_2stage@SUFFIX@.sh \ + legacy_real_2stage_qr@SUFFIX@.sh \ + legacy_complex_2stage_default@SUFFIX@.sh \ + legacy_real_2stage_api@SUFFIX@.sh \ + legacy_complex_2stage_api@SUFFIX@.sh \ + legacy_real_driver@SUFFIX@.sh \ + legacy_complex_driver@SUFFIX@.sh \ + legacy_real_toeplitz@SUFFIX@.sh \ + legacy_real_cholesky@SUFFIX@.sh \ + legacy_real_invert_trm@SUFFIX@.sh \ + legacy_real_transpose_multiply@SUFFIX@.sh \ + legacy_complex_cholesky@SUFFIX@.sh \ + legacy_complex_invert_trm@SUFFIX@.sh \ + legacy_complex_transpose_multiply@SUFFIX@.sh \ + legacy_real_1stage_c_version@SUFFIX@.sh \ + legacy_complex_1stage_c_version@SUFFIX@.sh \ + legacy_real_2stage_c_version@SUFFIX@.sh \ + legacy_complex_2stage_c_version@SUFFIX@.sh \ + legacy_real_driver_c_version@SUFFIX@.sh \ + legacy_complex_driver_c_version@SUFFIX@.sh + +if WANT_SINGLE_PRECISION_REAL +check_SCRIPTS += \ + legacy_single_real_1stage@SUFFIX@.sh \ + legacy_single_real_2stage@SUFFIX@.sh \ + legacy_single_real_2stage_default@SUFFIX@.sh \ + legacy_single_real_2stage_qr@SUFFIX@.sh \ + legacy_single_real_driver@SUFFIX@.sh \ + legacy_single_real_cholesky@SUFFIX@.sh \ + legacy_single_real_invert_trm@SUFFIX@.sh \ + legacy_single_real_transpose_multiply@SUFFIX@.sh \ + legacy_single_real_2stage_api@SUFFIX@.sh \ + legacy_single_real_driver_c_version@SUFFIX@.sh +endif + +if WANT_SINGLE_PRECISION_COMPLEX +check_SCRIPTS += \ + legacy_single_complex_1stage@SUFFIX@.sh \ + legacy_single_complex_2stage@SUFFIX@.sh \ + legacy_single_complex_2stage_default@SUFFIX@.sh \ + legacy_single_complex_cholesky@SUFFIX@.sh \ + legacy_single_complex_driver@SUFFIX@.sh \ + legacy_single_complex_invert_trm@SUFFIX@.sh \ + legacy_single_complex_transpose_multiply@SUFFIX@.sh \ + legacy_single_complex_2stage_api@SUFFIX@.sh \ + legacy_single_complex_driver_c_version@SUFFIX@.sh +endif + +if WITH_GPU_VERSION +check_SCRIPTS += \ + legacy_real_1stage_gpu@SUFFIX@.sh \ + legacy_complex_1stage_gpu@SUFFIX@.sh \ + legacy_real_2stage_gpu@SUFFIX@.sh \ + legacy_complex_2stage_gpu@SUFFIX@.sh + +if WANT_SINGLE_PRECISION_REAL +check_SCRIPTS += \ + legacy_single_real_1stage_gpu@SUFFIX@.sh \ + legacy_single_real_2stage_gpu@SUFFIX@.sh +endif +if WANT_SINGLE_PRECISION_COMPLEX +check_SCRIPTS += \ + legacy_single_complex_1stage_gpu@SUFFIX@.sh \ + legacy_single_complex_2stage_gpu@SUFFIX@.sh +endif +endif diff --git a/test/Fortran/elpa1/complex_1stage.F90 b/test/Fortran/elpa1/complex_1stage.F90 deleted file mode 100644 index c668d298..00000000 --- a/test/Fortran/elpa1/complex_1stage.F90 +++ /dev/null @@ -1,164 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - - implicit none - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_DOUBLE_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_DOUBLE_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert(e%setup() .eq. ELPA_OK) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa1/complex_1stage_gpu.F90 b/test/Fortran/elpa1/complex_1stage_gpu.F90 deleted file mode 100644 index 7d20de65..00000000 --- a/test/Fortran/elpa1/complex_1stage_gpu.F90 +++ /dev/null @@ -1,229 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use precision - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_DOUBLE_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_DOUBLE_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif - - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa1/real_1stage.F90 b/test/Fortran/elpa1/real_1stage.F90 deleted file mode 100644 index d093f48c..00000000 --- a/test/Fortran/elpa1/real_1stage.F90 +++ /dev/null @@ -1,169 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_DOUBLE), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_DOUBLE), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert(e%setup() == ELPA_OK) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - - if (myid .eq. 0) then - call e%print_times() - endif - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa1/real_1stage_gpu.F90 b/test/Fortran/elpa1/real_1stage_gpu.F90 deleted file mode 100644 index b2d86077..00000000 --- a/test/Fortran/elpa1/real_1stage_gpu.F90 +++ /dev/null @@ -1,225 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use precision - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_DOUBLE), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_DOUBLE), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa1/single_complex_1stage.F90 b/test/Fortran/elpa1/single_complex_1stage.F90 deleted file mode 100644 index 6bc9c51d..00000000 --- a/test/Fortran/elpa1/single_complex_1stage.F90 +++ /dev/null @@ -1,166 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_util - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_FLOAT_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_FLOAT_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert(e%setup() .eq. ELPA_OK) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) -end program diff --git a/test/Fortran/elpa1/single_complex_1stage_gpu.F90 b/test/Fortran/elpa1/single_complex_1stage_gpu.F90 deleted file mode 100644 index a87febfc..00000000 --- a/test/Fortran/elpa1/single_complex_1stage_gpu.F90 +++ /dev/null @@ -1,227 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use precision - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_FLOAT_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_FLOAT_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa1/single_real_1stage.F90 b/test/Fortran/elpa1/single_real_1stage.F90 deleted file mode 100644 index 95e6955d..00000000 --- a/test/Fortran/elpa1/single_real_1stage.F90 +++ /dev/null @@ -1,167 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_FLOAT), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_FLOAT), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%set("real_kernel", ELPA_2STAGE_REAL_DEFAULT, success) - assert_elpa_ok(success) - - call e%set("complex_kernel", ELPA_2STAGE_COMPLEX_DEFAULT, success) - assert_elpa_ok(success) - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa1/single_real_1stage_gpu.F90 b/test/Fortran/elpa1/single_real_1stage_gpu.F90 deleted file mode 100644 index 9e28ce5d..00000000 --- a/test/Fortran/elpa1/single_real_1stage_gpu.F90 +++ /dev/null @@ -1,223 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use precision - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_FLOAT), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_FLOAT), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_1STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa2/complex_2stage.F90 b/test/Fortran/elpa2/complex_2stage.F90 deleted file mode 100644 index 06a1f1d2..00000000 --- a/test/Fortran/elpa2/complex_2stage.F90 +++ /dev/null @@ -1,170 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_util - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_DOUBLE_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_DOUBLE_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert(e%setup() .eq. ELPA_OK) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("complex_kernel", ELPA_2STAGE_COMPLEX_DEFAULT, success) - assert_elpa_ok(success) - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa2/complex_2stage_gpu.F90 b/test/Fortran/elpa2/complex_2stage_gpu.F90 deleted file mode 100644 index 330d433c..00000000 --- a/test/Fortran/elpa2/complex_2stage_gpu.F90 +++ /dev/null @@ -1,227 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use test_util - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_DOUBLE_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_DOUBLE_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) - - call e%set("complex_kernel", ELPA_2STAGE_COMPLEX_GPU, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa2/real_2stage.F90 b/test/Fortran/elpa2/real_2stage.F90 deleted file mode 100644 index 91ea0b30..00000000 --- a/test/Fortran/elpa2/real_2stage.F90 +++ /dev/null @@ -1,166 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_util - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_DOUBLE), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_DOUBLE), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert(e%setup() .eq. ELPA_OK) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("real_kernel", ELPA_2STAGE_REAL_DEFAULT, success) - assert_elpa_ok(success) - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - - -end program diff --git a/test/Fortran/elpa2/real_2stage_gpu.F90 b/test/Fortran/elpa2/real_2stage_gpu.F90 deleted file mode 100644 index a042098a..00000000 --- a/test/Fortran/elpa2/real_2stage_gpu.F90 +++ /dev/null @@ -1,236 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use test_util - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_DOUBLE), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_DOUBLE), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_DOUBLE), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) - - call e%set("real_kernel", ELPA_2STAGE_REAL_GPU, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif - - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa2/single_complex_2stage.F90 b/test/Fortran/elpa2/single_complex_2stage.F90 deleted file mode 100644 index 832bab59..00000000 --- a/test/Fortran/elpa2/single_complex_2stage.F90 +++ /dev/null @@ -1,167 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_util - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_FLOAT_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_FLOAT_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert(e%setup() .eq. ELPA_OK) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("complex_kernel", ELPA_2STAGE_COMPLEX_DEFAULT, success) - assert_elpa_ok(success) - - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa2/single_complex_2stage_gpu.F90 b/test/Fortran/elpa2/single_complex_2stage_gpu.F90 deleted file mode 100644 index 0c7193f1..00000000 --- a/test/Fortran/elpa2/single_complex_2stage_gpu.F90 +++ /dev/null @@ -1,230 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use test_util - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - complex(kind=C_FLOAT_COMPLEX), allocatable :: a(:,:), as(:,:) - ! eigenvectors - complex(kind=C_FLOAT_COMPLEX), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - - - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) - - call e%set("complex_kernel", ELPA_2STAGE_COMPLEX_GPU, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program diff --git a/test/Fortran/elpa2/single_real_2stage.F90 b/test/Fortran/elpa2/single_real_2stage.F90 deleted file mode 100644 index e8c2bf22..00000000 --- a/test/Fortran/elpa2/single_real_2stage.F90 +++ /dev/null @@ -1,174 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use elpa - - use test_util - use test_setup_mpi - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_FLOAT), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_FLOAT), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - - - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) - - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif - - - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("real_kernel", ELPA_2STAGE_REAL_DEFAULT, success) - assert_elpa_ok(success) - - call e%set("complex_kernel", ELPA_2STAGE_COMPLEX_DEFAULT, success) - assert_elpa_ok(success) - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) - - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) - - -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) -end program diff --git a/test/Fortran/elpa2/single_real_2stage_gpu.F90 b/test/Fortran/elpa2/single_real_2stage_gpu.F90 deleted file mode 100644 index 05bae9b1..00000000 --- a/test/Fortran/elpa2/single_real_2stage_gpu.F90 +++ /dev/null @@ -1,228 +0,0 @@ -! This file is part of ELPA. -! -! The ELPA library was originally created by the ELPA consortium, -! consisting of the following organizations: -! -! - Max Planck Computing and Data Facility (MPCDF), formerly known as -! Rechenzentrum Garching der Max-Planck-Gesellschaft (RZG), -! - Bergische Universität Wuppertal, Lehrstuhl für angewandte -! Informatik, -! - Technische Universität München, Lehrstuhl für Informatik mit -! Schwerpunkt Wissenschaftliches Rechnen , -! - Fritz-Haber-Institut, Berlin, Abt. Theorie, -! - Max-Plack-Institut für Mathematik in den Naturwissenschaften, -! Leipzig, Abt. Komplexe Strukutren in Biologie und Kognition, -! and -! - IBM Deutschland GmbH -! -! -! More information can be found here: -! http://elpa.mpcdf.mpg.de/ -! -! ELPA is free software: you can redistribute it and/or modify -! it under the terms of the version 3 of the license of the -! GNU Lesser General Public License as published by the Free -! Software Foundation. -! -! ELPA is distributed in the hope that it will be useful, -! but WITHOUT ANY WARRANTY; without even the implied warranty of -! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -! GNU Lesser General Public License for more details. -! -! You should have received a copy of the GNU Lesser General Public License -! along with ELPA. If not, see -! -! ELPA reflects a substantial effort on the part of the original -! ELPA consortium, and we ask you to respect the spirit of the -! license that we chose: i.e., please contribute any changes you -! may have back to the original ELPA library distribution, and keep -! any derivatives of ELPA under the same license that we chose for -! the original distribution, the GNU Lesser General Public License. -! -! -#include "config-f90.h" - -#include "../assert.h" - -program test_interface - use test_util - use test_setup_mpi - use elpa_mpi - use elpa - use test_prepare_matrix - use test_read_input_parameters - use test_blacs_infrastructure - use test_check_correctness -#ifdef HAVE_DETAILED_TIMINGS - use timings -#endif - implicit none - - ! matrix dimensions - integer :: na, nev, nblk - - ! mpi - integer :: myid, nprocs - integer :: na_cols, na_rows ! local matrix size - integer :: np_cols, np_rows ! number of MPI processes per column/row - integer :: my_prow, my_pcol ! local MPI task position (my_prow, my_pcol) in the grid (0..np_cols -1, 0..np_rows -1) - integer :: mpierr - - ! blacs - integer :: my_blacs_ctxt, sc_desc(9), info, nprow, npcol - - ! The Matrix - real(kind=C_FLOAT), allocatable :: a(:,:), as(:,:) - ! eigenvectors - real(kind=C_FLOAT), allocatable :: z(:,:) - ! eigenvalues - real(kind=C_FLOAT), allocatable :: ev(:) - - integer :: success, status - - integer(kind=c_int) :: solver - integer(kind=c_int) :: qr - - type(output_t) :: write_to_file - class(elpa_t), pointer :: e - - call read_input_parameters_traditional(na, nev, nblk, write_to_file) - call setup_mpi(myid, nprocs) - - status = 0 - -#ifdef HAVE_DETAILED_TIMINGS - - ! initialise the timing functionality - -#ifdef HAVE_LIBPAPI - call timer%measure_flops(.true.) -#endif - - call timer%measure_allocated_memory(.true.) - call timer%measure_virtual_memory(.true.) - call timer%measure_max_allocated_memory(.true.) - - call timer%set_print_options(& -#ifdef HAVE_LIBPAPI - print_flop_count=.true., & - print_flop_rate=.true., & -#endif - print_allocated_memory = .true. , & - print_virtual_memory=.true., & - print_max_allocated_memory=.true.) - - - call timer%enable() - - call timer%start("program") -#endif - - - do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 - if(mod(nprocs,np_cols) == 0 ) exit - enddo - - np_rows = nprocs/np_cols - - my_prow = mod(myid, np_cols) - my_pcol = myid / np_cols - - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) - - call set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, np_rows, np_cols, & - na_rows, na_cols, sc_desc, my_blacs_ctxt, info) -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("set up matrix") -#endif - - - allocate(a (na_rows,na_cols), as(na_rows,na_cols)) - allocate(z (na_rows,na_cols)) - allocate(ev(na)) - - a(:,:) = 0.0 - z(:,:) = 0.0 - ev(:) = 0.0 - - call prepare_matrix(na, myid, sc_desc, a, z, as) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("set up matrix") -#endif - if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then - print *, "ELPA API version not supported" - stop 1 - endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("prepare_elpa") -#endif - e => elpa_allocate() - - call e%set("na", na, success) - assert_elpa_ok(success) - call e%set("nev", nev, success) - assert_elpa_ok(success) - call e%set("local_nrows", na_rows, success) - assert_elpa_ok(success) - call e%set("local_ncols", na_cols, success) - assert_elpa_ok(success) - call e%set("nblk", nblk, success) - assert_elpa_ok(success) - call e%set("mpi_comm_parent", MPI_COMM_WORLD, success) - assert_elpa_ok(success) - call e%set("process_row", my_prow, success) - assert_elpa_ok(success) - call e%set("process_col", my_pcol, success) - assert_elpa_ok(success) - - assert_elpa_ok(e%setup()) - - call e%set("solver", ELPA_SOLVER_2STAGE, success) - assert_elpa_ok(success) - - call e%set("gpu", 1, success) - assert_elpa_ok(success) - - call e%set("real_kernel", ELPA_2STAGE_REAL_GPU, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("prepare_elpa") -#endif -#ifdef HAVE_DETAILED_TIMINGS - call timer%start("solve") -#endif - call e%eigenvectors(a, ev, z, success) - assert_elpa_ok(success) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("solve") -#endif - - - call elpa_deallocate(e) - - call elpa_uninit() - - status = check_correctness(na, nev, as, z, ev, sc_desc, myid) - - deallocate(a) - deallocate(as) - deallocate(z) - deallocate(ev) -#ifdef HAVE_DETAILED_TIMINGS - call timer%stop("program") - print *," " - print *,"Timings program:" - print *," " - call timer%print("program") - print *," " - print *,"End timings program" - print *," " -#endif -#ifdef WITH_MPI - call blacs_gridexit(my_blacs_ctxt) - call mpi_finalize(mpierr) -#endif - call EXIT(STATUS) - -end program -- GitLab