From fabb1c429d6d7d0e0716999cb41d3ddfb89f1f01 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCdepohl?= <lorenz.huedepohl@rzg.mpg.de> Date: Fri, 21 Jul 2017 12:06:18 +0200 Subject: [PATCH] Loop over all possible domain decompositions We got reports from a user that there were troubles with certain domain decompositions. So far the tests only looked at (approximately) square decompositions in column-major process order. Now, a new class of tests loops over all possible decompositions (row * col) for a given number of total tasks. So far, we can not confirm that there are any problems, all possibilities work as expected. --- generate_automake_test_programs.py | 21 ++++++- src/elpa_impl.F90 | 2 +- .../legacy_complex_driver_c_version.c | 4 +- .../legacy_real_driver_c_version.c | 4 +- .../legacy_single_complex_driver_c_version.c | 4 +- .../legacy_single_real_driver_c_version.c | 4 +- .../legacy_complex_1stage_c_version.c | 4 +- .../legacy_real_1stage_c_version.c | 4 +- .../legacy_complex_2stage_c_version.c | 4 +- .../legacy_real_2stage_c_version.c | 4 +- test/C/test.c | 4 +- .../legacy_complex_driver.F90 | 4 +- .../legacy_interface/legacy_real_driver.F90 | 4 +- .../legacy_single_complex_driver.F90 | 4 +- .../legacy_single_real_driver.F90 | 4 +- .../elpa1/legacy_interface/legacy_complex.F90 | 4 +- .../legacy_complex_cholesky.F90 | 4 +- .../legacy_interface/legacy_complex_gpu.F90 | 4 +- .../legacy_complex_invert_trm.F90 | 4 +- .../legacy_complex_transp_multiply.F90 | 4 +- .../elpa1/legacy_interface/legacy_real.F90 | 4 +- .../legacy_interface/legacy_real_cholesky.F90 | 4 +- .../legacy_interface/legacy_real_gpu.F90 | 4 +- .../legacy_real_invert_trm.F90 | 4 +- .../legacy_real_transp_multiply.F90 | 4 +- .../legacy_single_complex.F90 | 4 +- .../legacy_single_complex_cholesky.F90 | 4 +- .../legacy_single_complex_gpu.F90 | 4 +- .../legacy_single_complex_invert_trm.F90 | 4 +- .../legacy_single_complex_transp_multiply.F90 | 4 +- .../legacy_interface/legacy_single_real.F90 | 4 +- .../legacy_single_real_cholesky.F90 | 4 +- .../legacy_single_real_gpu.F90 | 4 +- .../legacy_single_real_invert_trm.F90 | 4 +- .../legacy_single_real_transp_multiply.F90 | 4 +- .../legacy_single_toeplitz.F90 | 4 +- .../legacy_interface/legacy_toeplitz.F90 | 4 +- test/Fortran/elpa2/complex_2stage_banded.F90 | 4 +- test/Fortran/elpa2/double_instance.F90 | 4 +- .../elpa2/legacy_interface/legacy_complex.F90 | 4 +- .../legacy_interface/legacy_complex_api.F90 | 4 +- .../legacy_complex_default_kernel.F90 | 4 +- .../legacy_interface/legacy_complex_gpu.F90 | 4 +- .../elpa2/legacy_interface/legacy_real.F90 | 4 +- .../legacy_interface/legacy_real_api.F90 | 4 +- .../legacy_real_default_kernel.F90 | 4 +- .../legacy_interface/legacy_real_gpu.F90 | 4 +- .../elpa2/legacy_interface/legacy_real_qr.F90 | 4 +- .../legacy_single_complex.F90 | 4 +- .../legacy_single_complex_api.F90 | 4 +- .../legacy_single_complex_default_kernel.F90 | 4 +- .../legacy_single_complex_gpu.F90 | 4 +- .../legacy_interface/legacy_single_real.F90 | 4 +- .../legacy_single_real_api.F90 | 4 +- .../legacy_single_real_default_kernel.F90 | 4 +- .../legacy_single_real_gpu.F90 | 4 +- .../legacy_single_real_qr.F90 | 4 +- test/Fortran/elpa2/real_2stage_banded.F90 | 4 +- .../elpa2/single_complex_2stage_banded.F90 | 4 +- .../elpa2/single_real_2stage_banded.F90 | 4 +- test/Fortran/test.F90 | 39 ++++++++++--- test/shared/test_blacs_infrastructure.F90 | 58 ++++++++++--------- 62 files changed, 196 insertions(+), 156 deletions(-) diff --git a/generate_automake_test_programs.py b/generate_automake_test_programs.py index 05c3e918..d86922a6 100755 --- a/generate_automake_test_programs.py +++ b/generate_automake_test_programs.py @@ -29,12 +29,19 @@ test_type_flag = { "solve_tridiagonal" : "-D__SOLVE_TRIDIAGONAL", } -for m, g, t, p, d, s in product(sorted(matrix_flag.keys()), +layout_flag = { + "all_layouts" : "-DTEST_ALL_LAYOUTS", + "square" : "" +} + +for m, g, t, p, d, s, l in product( + sorted(matrix_flag.keys()), sorted(gpu_flag.keys()), sorted(test_type_flag.keys()), sorted(prec_flag.keys()), sorted(domain_flag.keys()), - sorted(solver_flag.keys())): + sorted(solver_flag.keys()), + sorted(layout_flag.keys())): #todo: decide what tests we actually want if(m == "analytic" and (g == 1 or t != "eigenvectors" or p == "single" or d == "complex")): @@ -59,6 +66,9 @@ for m, g, t, p, d, s in product(sorted(matrix_flag.keys()), elif kernel == "all_kernels": extra_flags.append("-DTEST_ALL_KERNELS") + if layout_flag[l]: + extra_flags.append(layout_flag[l]) + if (p == "single"): if (d == "real"): print("if WANT_SINGLE_PRECISION_REAL") @@ -68,7 +78,12 @@ for m, g, t, p, d, s in product(sorted(matrix_flag.keys()), raise Exception("Oh no!") endifs += 1 - name = "test_{0}_{1}_{2}_{3}{4}{5}{6}".format(d, p, t, s, "" if kernel == "nokernel" else "_" + kernel, "_gpu" if g else "", "_analytic" if m == "analytic" else "") + name = "test_{0}_{1}_{2}_{3}{4}{5}{6}{7}".format( + d, p, t, s, + "" if kernel == "nokernel" else "_" + kernel, + "_gpu" if g else "", + "_analytic" if m == "analytic" else "", + "_all_layouts" if l == "all_layouts" else "") print("noinst_PROGRAMS += " + name) print("check_SCRIPTS += " + name + ".sh") print(name + "_SOURCES = test/Fortran/test.F90") diff --git a/src/elpa_impl.F90 b/src/elpa_impl.F90 index 9a03d30e..14bd94be 100644 --- a/src/elpa_impl.F90 +++ b/src/elpa_impl.F90 @@ -1176,7 +1176,7 @@ module elpa_impl !> \param nrows_c number of rows of local (sub) matrix c !> \param ncols_c number of columns of local (sub) matrix c !> \param error optional argument, error code which can be queried with elpa_strerr - subroutine elpa_hermitian_multiply_d (self,uplo_a, uplo_c, ncb, a, b, nrows_b, ncols_b, & + subroutine elpa_hermitian_multiply_d (self, uplo_a, uplo_c, ncb, a, b, nrows_b, ncols_b, & c, nrows_c, ncols_c, error) use iso_c_binding use elpa1_auxiliary_impl diff --git a/test/C/driver/legacy_interface/legacy_complex_driver_c_version.c b/test/C/driver/legacy_interface/legacy_complex_driver_c_version.c index 8adf9155..86c28f3b 100644 --- a/test/C/driver/legacy_interface/legacy_complex_driver_c_version.c +++ b/test/C/driver/legacy_interface/legacy_complex_driver_c_version.c @@ -66,7 +66,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -138,7 +138,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/driver/legacy_interface/legacy_real_driver_c_version.c b/test/C/driver/legacy_interface/legacy_real_driver_c_version.c index 1fe1bf69..60a1181b 100644 --- a/test/C/driver/legacy_interface/legacy_real_driver_c_version.c +++ b/test/C/driver/legacy_interface/legacy_real_driver_c_version.c @@ -65,7 +65,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -134,7 +134,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c b/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c index a062404f..4fbff052 100644 --- a/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c +++ b/test/C/driver/legacy_interface/legacy_single_complex_driver_c_version.c @@ -66,7 +66,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -138,7 +138,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c b/test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c index 2a43b67d..a21c71d9 100644 --- a/test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c +++ b/test/C/driver/legacy_interface/legacy_single_real_driver_c_version.c @@ -65,7 +65,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -135,7 +135,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c b/test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c index 9e999ccd..9e010bce 100644 --- a/test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c +++ b/test/C/elpa1/legacy_interface/legacy_complex_1stage_c_version.c @@ -68,7 +68,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -151,7 +151,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c b/test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c index 285a2df5..55144fc7 100644 --- a/test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c +++ b/test/C/elpa1/legacy_interface/legacy_real_1stage_c_version.c @@ -68,7 +68,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -143,7 +143,7 @@ int main(int argc, char** argv) { #ifdef WITH_MPI my_mpi_comm_world = MPI_Comm_c2f(MPI_COMM_WORLD); #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c b/test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c index b62d453c..b69a6b34 100644 --- a/test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c +++ b/test/C/elpa2/legacy_interface/legacy_complex_2stage_c_version.c @@ -68,7 +68,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -148,7 +148,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c b/test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c index 85286aea..941b90a2 100644 --- a/test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c +++ b/test/C/elpa2/legacy_interface/legacy_real_2stage_c_version.c @@ -67,7 +67,7 @@ int main(int argc, char** argv) { int np_cols, np_rows, np_colsStart; - int my_blacs_ctxt, nprow, npcol, my_prow, my_pcol; + int my_blacs_ctxt, my_prow, my_pcol; int mpierr; @@ -143,7 +143,7 @@ int main(int argc, char** argv) { #else my_mpi_comm_world = 1; #endif - set_up_blacsgrid_f(my_mpi_comm_world, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(my_mpi_comm_world, np_rows, np_cols, 'C', &my_blacs_ctxt, &my_prow, &my_pcol); if (myid == 0) { printf("\n"); diff --git a/test/C/test.c b/test/C/test.c index 2ecac859..c3f387a0 100644 --- a/test/C/test.c +++ b/test/C/test.c @@ -97,7 +97,7 @@ int main(int argc, char** argv) { int mpi_comm; /* blacs */ - int my_blacs_ctxt, sc_desc[9], info, nprow, npcol; + int my_blacs_ctxt, sc_desc[9], info; /* The Matrix */ MATRIX_TYPE *a, *as, *z; @@ -136,7 +136,7 @@ int main(int argc, char** argv) { #else mpi_comm = 0; #endif - set_up_blacsgrid_f(mpi_comm, &my_blacs_ctxt, &np_rows, &np_cols, &nprow, &npcol, &my_prow, &my_pcol); + set_up_blacsgrid_f(mpi_comm, np_rows, np_cols, &my_blacs_ctxt, &my_prow, &my_pcol); set_up_blacs_descriptor_f(na, nblk, my_prow, my_pcol, np_rows, np_cols, &na_rows, &na_cols, sc_desc, my_blacs_ctxt, &info); /* allocate the matrices needed for elpa */ diff --git a/test/Fortran/driver/legacy_interface/legacy_complex_driver.F90 b/test/Fortran/driver/legacy_interface/legacy_complex_driver.F90 index 4fc55f26..ff3abc7b 100644 --- a/test/Fortran/driver/legacy_interface/legacy_complex_driver.F90 +++ b/test/Fortran/driver/legacy_interface/legacy_complex_driver.F90 @@ -166,8 +166,8 @@ program test_complex2 ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/driver/legacy_interface/legacy_real_driver.F90 b/test/Fortran/driver/legacy_interface/legacy_real_driver.F90 index f096cc37..1f5a51a2 100644 --- a/test/Fortran/driver/legacy_interface/legacy_real_driver.F90 +++ b/test/Fortran/driver/legacy_interface/legacy_real_driver.F90 @@ -165,8 +165,8 @@ program test_real2 ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90 b/test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90 index fccbbdcb..8749eed9 100644 --- a/test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90 +++ b/test/Fortran/driver/legacy_interface/legacy_single_complex_driver.F90 @@ -166,8 +166,8 @@ program test_complex2 ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90 b/test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90 index 72ca5dd8..123df6eb 100644 --- a/test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90 +++ b/test/Fortran/driver/legacy_interface/legacy_single_real_driver.F90 @@ -165,8 +165,8 @@ program test_real2 ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_complex.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex.F90 index c9d05e65..df8383f8 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_complex.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_complex.F90 @@ -174,8 +174,8 @@ program test_complex_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90 index 1f4bf185..807c545d 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_complex_cholesky.F90 @@ -138,8 +138,8 @@ program test_cholesky ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90 index 91326aaf..7f4b018d 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_complex_gpu.F90 @@ -173,8 +173,8 @@ program test_complex_gpu_version_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90 index 6f1ef010..9f4827f9 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_complex_invert_trm.F90 @@ -138,8 +138,8 @@ program test_invert_trm ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_complex_transp_multiply.F90 b/test/Fortran/elpa1/legacy_interface/legacy_complex_transp_multiply.F90 index a1148162..a2929e1f 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_complex_transp_multiply.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_complex_transp_multiply.F90 @@ -132,8 +132,8 @@ program test_transpose_multiply ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_real.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real.F90 index 52ca04ae..8bf6bec9 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_real.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_real.F90 @@ -170,8 +170,8 @@ program test_real_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90 index 226e3d06..50f41b9c 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_real_cholesky.F90 @@ -135,8 +135,8 @@ program test_cholesky ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90 index 8a62cf26..4d58f3bf 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_real_gpu.F90 @@ -170,8 +170,8 @@ program test_real_gpu_version_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90 index 7c35b718..c2dc767a 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_real_invert_trm.F90 @@ -135,8 +135,8 @@ program test_invert_trm ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_real_transp_multiply.F90 b/test/Fortran/elpa1/legacy_interface/legacy_real_transp_multiply.F90 index d145257f..d55815c9 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_real_transp_multiply.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_real_transp_multiply.F90 @@ -131,8 +131,8 @@ program test_transpose_multiply ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90 index b2a55b66..a47a03ce 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex.F90 @@ -174,8 +174,8 @@ program test_complex_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90 index 2d16581f..b8e0f59c 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_cholesky.F90 @@ -138,8 +138,8 @@ program test_cholesky ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90 index 869fa833..b0801b4d 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_gpu.F90 @@ -173,8 +173,8 @@ program test_complex_gpu_version_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90 index 1f83621c..d621a5f6 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_invert_trm.F90 @@ -138,8 +138,8 @@ program test_invert_trm ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_transp_multiply.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_transp_multiply.F90 index 60accf85..e30413cc 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_complex_transp_multiply.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_complex_transp_multiply.F90 @@ -132,8 +132,8 @@ program test_transpose_multiply ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_real.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real.F90 index 796e0cbf..a3488998 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_real.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real.F90 @@ -170,8 +170,8 @@ program test_real_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90 index 434a0020..6f7d8e09 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real_cholesky.F90 @@ -135,8 +135,8 @@ program test_cholesky ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90 index dc74d58f..3169e59a 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real_gpu.F90 @@ -170,8 +170,8 @@ program test_real_gpu_version_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90 index cfc983ee..23ddeb8e 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real_invert_trm.F90 @@ -135,8 +135,8 @@ program test_invert_trm ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_real_transp_multiply.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_real_transp_multiply.F90 index c5801aaf..fb8a8416 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_real_transp_multiply.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_real_transp_multiply.F90 @@ -132,8 +132,8 @@ program test_transpose_multiply ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90 b/test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90 index 112e0837..78143e42 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_single_toeplitz.F90 @@ -153,8 +153,8 @@ program test_solve_tridi_single ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90 b/test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90 index 3f64bff3..37276cde 100644 --- a/test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90 +++ b/test/Fortran/elpa1/legacy_interface/legacy_toeplitz.F90 @@ -152,8 +152,8 @@ program test_solve_tridi ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/complex_2stage_banded.F90 b/test/Fortran/elpa2/complex_2stage_banded.F90 index 93d90cf4..79862f0c 100644 --- a/test/Fortran/elpa2/complex_2stage_banded.F90 +++ b/test/Fortran/elpa2/complex_2stage_banded.F90 @@ -171,8 +171,8 @@ program test_complex2_double_banded ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/double_instance.F90 b/test/Fortran/elpa2/double_instance.F90 index fe3a1153..9cb615b9 100644 --- a/test/Fortran/elpa2/double_instance.F90 +++ b/test/Fortran/elpa2/double_instance.F90 @@ -102,8 +102,8 @@ program test_interface 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_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, 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) diff --git a/test/Fortran/elpa2/legacy_interface/legacy_complex.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex.F90 index 2e8c74b0..c090095a 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_complex.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_complex.F90 @@ -178,8 +178,8 @@ program test_complex2_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90 index 4523d80c..0503f60f 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_complex_api.F90 @@ -248,8 +248,8 @@ program test_complex2_choose_kernel_with_api_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90 index b519b127..75fffca6 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_complex_default_kernel.F90 @@ -195,8 +195,8 @@ program test_complex2_default_kernel_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90 index c081688c..05cb0fde 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_complex_gpu.F90 @@ -191,8 +191,8 @@ program test_complex2_gpu_version_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_real.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real.F90 index 8abf6d1f..db6c46e1 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_real.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_real.F90 @@ -173,8 +173,8 @@ program test_real2_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_real_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_api.F90 index 83d32596..7db71744 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_real_api.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_real_api.F90 @@ -257,8 +257,8 @@ program test_real2_choose_kernel_with_api_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90 index 9d240a2c..2172742f 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_real_default_kernel.F90 @@ -189,8 +189,8 @@ program test_real2_default_kernel_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90 index 3f5e4b57..cdd7790a 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_real_gpu.F90 @@ -191,8 +191,8 @@ program test_real2_gpu_version_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90 b/test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90 index bdfe9523..ce23e417 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_real_qr.F90 @@ -231,8 +231,8 @@ program test_real2_default_kernel_qr_decomposition_double_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90 index e75a3f69..5a23baaf 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex.F90 @@ -178,8 +178,8 @@ program test_complex2_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90 index 24789189..4baf8d2d 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_api.F90 @@ -247,8 +247,8 @@ program test_complex2_choose_kernel_with_api_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 index 7f21963c..7d5d996a 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_default_kernel.F90 @@ -193,8 +193,8 @@ program test_complex2_default_kernel_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90 index 145f688a..587ea020 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_complex_gpu.F90 @@ -190,8 +190,8 @@ program test_complex2_gpu_version_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_real.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real.F90 index 182706b0..f6b5fea6 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_real.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real.F90 @@ -173,8 +173,8 @@ program test_real2_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90 index 416ef57c..6ceeea20 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_api.F90 @@ -255,8 +255,8 @@ program test_real2_choose_kernel_with_api_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90 index fae37710..e16130ba 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_default_kernel.F90 @@ -189,8 +189,8 @@ program test_real2_default_kernel_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90 index 57bad615..0944d759 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_gpu.F90 @@ -191,8 +191,8 @@ program test_real2_gpu_version_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90 b/test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90 index a8fcb6db..7d3ac375 100644 --- a/test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90 +++ b/test/Fortran/elpa2/legacy_interface/legacy_single_real_qr.F90 @@ -235,8 +235,8 @@ program test_real2_default_kernel_qr_decomposition_single_precision ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/real_2stage_banded.F90 b/test/Fortran/elpa2/real_2stage_banded.F90 index 1b1dd05c..850182a3 100644 --- a/test/Fortran/elpa2/real_2stage_banded.F90 +++ b/test/Fortran/elpa2/real_2stage_banded.F90 @@ -169,8 +169,8 @@ program test_real2_double_banded ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/single_complex_2stage_banded.F90 b/test/Fortran/elpa2/single_complex_2stage_banded.F90 index 9f2cd0c1..ed974eaa 100644 --- a/test/Fortran/elpa2/single_complex_2stage_banded.F90 +++ b/test/Fortran/elpa2/single_complex_2stage_banded.F90 @@ -171,8 +171,8 @@ program test_complex2_single_banded ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/elpa2/single_real_2stage_banded.F90 b/test/Fortran/elpa2/single_real_2stage_banded.F90 index 21d758d5..18355557 100644 --- a/test/Fortran/elpa2/single_real_2stage_banded.F90 +++ b/test/Fortran/elpa2/single_real_2stage_banded.F90 @@ -168,8 +168,8 @@ program test_real2_single_banded ! consistent (i.e. 0<=my_prow<np_rows, 0<=my_pcol<np_cols and every ! process has a unique (my_prow,my_pcol) pair). - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, 'C', & + my_blacs_ctxt, my_prow, my_pcol) if (myid==0) then print '(a)','| Past BLACS_Gridinfo.' diff --git a/test/Fortran/test.F90 b/test/Fortran/test.F90 index addbabc6..167607dd 100644 --- a/test/Fortran/test.F90 +++ b/test/Fortran/test.F90 @@ -145,8 +145,13 @@ program test class(elpa_t), pointer :: e #ifdef TEST_ALL_KERNELS integer :: i +#endif +#ifdef TEST_ALL_LAYOUTS + character(len=1), parameter :: layouts(2) = [ 'C', 'R' ] + integer :: i_layout #endif integer :: kernel + character(len=1) :: layout #if defined(TEST_COMPLEX) && defined(__SOLVE_TRIDIAGONAL) #ifdef WITH_MPI @@ -158,11 +163,27 @@ program test call setup_mpi(myid, nprocs) + if (elpa_init(CURRENT_API_VERSION) /= ELPA_OK) then + print *, "ELPA API version not supported" + stop 1 + endif + +#ifdef TEST_ALL_LAYOUTS + do i_layout = 1, size(layouts) ! layout loop + layout = layouts(i_layout) + do np_cols = 1, nprocs ! factor loop + if (mod(nprocs,np_cols) /= 0 ) then + cycle + endif +#else + layout = 'C' do np_cols = NINT(SQRT(REAL(nprocs))),2,-1 if(mod(nprocs,np_cols) == 0 ) exit enddo +#endif np_rows = nprocs/np_cols + assert(nprocs == np_rows * np_cols) if (myid == 0) then print '((a,i0))', 'Matrix size: ', na @@ -170,11 +191,12 @@ program test print '((a,i0))', 'Blocksize: ', nblk print '((a,i0))', 'Num MPI proc: ', nprocs print '(3(a,i0))','Number of processor rows=',np_rows,', cols=',np_cols,', total=',nprocs + print '(a)', 'Process layout: ' // layout print *,'' endif - call set_up_blacsgrid(mpi_comm_world, my_blacs_ctxt, np_rows, np_cols, & - nprow, npcol, my_prow, my_pcol) + call set_up_blacsgrid(mpi_comm_world, np_rows, np_cols, layout, & + my_blacs_ctxt, 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) @@ -218,11 +240,6 @@ program test np_cols, my_prow, my_pcol) #endif - 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, error) @@ -382,7 +399,6 @@ program test #endif call elpa_deallocate(e) - call elpa_uninit() deallocate(a) #ifdef TEST_MATRIX_RANDOM @@ -397,6 +413,13 @@ program test deallocate(ev_analytic) #endif +#ifdef TEST_ALL_LAYOUTS + end do ! factors + end do ! layouts +#endif + + call elpa_uninit() + #ifdef WITH_MPI call blacs_gridexit(my_blacs_ctxt) call mpi_finalize(mpierr) diff --git a/test/shared/test_blacs_infrastructure.F90 b/test/shared/test_blacs_infrastructure.F90 index 9cb7ba5e..ac52dbbd 100644 --- a/test/shared/test_blacs_infrastructure.F90 +++ b/test/shared/test_blacs_infrastructure.F90 @@ -45,44 +45,45 @@ module test_blacs_infrastructure contains - subroutine set_up_blacsgrid(mpi_comm_parent, my_blacs_ctxt, np_rows, & - np_cols, nprow, npcol, my_prow, my_pcol) + !c> void set_up_blacsgrid_f(int mpi_comm_parent, int np_rows, int np_cols, char layout, + !c> int* my_blacs_ctxt, int *my_prow, int *my_pcol); + subroutine set_up_blacsgrid(mpi_comm_parent, np_rows, np_cols, layout, & + my_blacs_ctxt, my_prow, my_pcol) bind(C, name="set_up_blacsgrid_f") use test_util implicit none - integer(kind=ik), intent(in) :: mpi_comm_parent - integer(kind=ik), intent(inout) :: my_blacs_ctxt, np_rows, & - np_cols, nprow, npcol, my_prow, my_pcol + integer(kind=c_int), intent(in), value :: mpi_comm_parent, np_rows, np_cols + character(len=1), intent(in), value :: layout + integer(kind=c_int), intent(out) :: my_blacs_ctxt, my_prow, my_pcol + +#ifdef WITH_MPI + integer :: np_rows_, np_cols_ +#endif + + if (layout /= 'R' .and. layout /= 'C') then + print *, "layout must be 'R' or 'C'" + stop 1 + end if my_blacs_ctxt = mpi_comm_parent #ifdef WITH_MPI - call BLACS_Gridinit(my_blacs_ctxt, 'C', np_rows, np_cols) - call BLACS_Gridinfo(my_blacs_ctxt, nprow, npcol, my_prow, my_pcol) + call BLACS_Gridinit(my_blacs_ctxt, layout, np_rows, np_cols) + call BLACS_Gridinfo(my_blacs_ctxt, np_rows_, np_cols_, my_prow, my_pcol) + if (np_rows /= np_rows_) then + print *, "BLACS_Gridinfo returned different values for np_rows as set by BLACS_Gridinit" + stop 1 + endif + if (np_cols /= np_cols_) then + print *, "BLACS_Gridinfo returned different values for np_cols as set by BLACS_Gridinit" + stop 1 + endif #else - np_rows = 1 - np_cols = 1 my_prow = 0 my_pcol = 0 #endif end subroutine - !c> void set_up_blacsgrid_f(int mpi_comm_parent, int* my_blacs_ctxt, - !c> int *np_rows, int *np_cols, int *nprow, int *npcol, - !c> int *my_prow, int *my_pcol); - subroutine set_up_blacsgrid_f(mpi_comm_parent, my_blacs_ctxt, np_rows, & - np_cols, nprow, npcol, my_prow, my_pcol) & - bind(C, name="set_up_blacsgrid_f") - use iso_c_binding - implicit none - integer(kind=c_int), value :: mpi_comm_parent - integer(kind=c_int) :: my_blacs_ctxt, np_rows, & - np_cols, nprow, npcol, my_prow, my_pcol - - call set_up_blacsgrid(mpi_comm_parent, my_blacs_ctxt, np_rows, & - np_cols, nprow, npcol, my_prow, my_pcol) - end subroutine - subroutine set_up_blacs_descriptor(na, nblk, my_prow, my_pcol, & np_rows, np_cols, na_rows, & na_cols, sc_desc, my_blacs_ctxt, info) @@ -91,9 +92,10 @@ module test_blacs_infrastructure use test_util implicit none - integer(kind=ik), intent(inout) :: na, nblk, my_prow, my_pcol, np_rows, & - np_cols, na_rows, na_cols, sc_desc(1:9), & - my_blacs_ctxt, info + integer(kind=ik), intent(in) :: na, nblk, my_prow, my_pcol, np_rows, & + np_cols, & + my_blacs_ctxt, info + integer(kind=ik), intent(out) :: na_rows, na_cols, sc_desc(1:9) #ifdef WITH_MPI integer(kind=ik), external :: numroc integer(kind=ik) :: mpierr -- GitLab