diff --git a/cmake/cmake.jureca.config b/cmake/cmake.jureca.config index 1ed4bf7737abcd4f8f89d3b4666fdf2e6a4d30bc..a4db872907dd5da577f0526d45093a6104bec835 100644 --- a/cmake/cmake.jureca.config +++ b/cmake/cmake.jureca.config @@ -42,7 +42,7 @@ if (DEFINED ENV{ELPA_ROOT}) set(Fleur_uses_ELPA TRUE) add_definitions(-DCPP_ELPA_NEW) set(LAPACK_LIBS "${LAPACK_LIBS} -L$ENV{ELPA_ROOT}/lib -lelpa_openmp -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lstdc++") - set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -I$ENV{ELPA_ROOT}/include/elpa_openmp-2014.06.001/modules") + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -I$ENV{ELPA_INCLUDE} -I$ENV{ELPA_INCLUDE}/elpa -I$ENV{ELPA_MODULES}" ) endif() if (DEFINED ENV{ELEMENTAL_ROOT}) diff --git a/diagonalization/elpa.F90 b/diagonalization/elpa.F90 index ee917ee91083e516b59f8893895bee688024b797..38e3f94b31de55695ef18a2c64f3a7a1d5ba08d2 100644 --- a/diagonalization/elpa.F90 +++ b/diagonalization/elpa.F90 @@ -128,8 +128,8 @@ CONTAINS ! The only reason having them is that the Scalapack counterpart ! PDPOTRF very often fails on higher processor numbers for unknown reasons! #ifdef CPP_ELPA_NEW - CALL CPP_CHOLESKY (m,bsca,SIZE(bsca,1),nb, mpi_comm_rows,mpi_comm_cols,ok) - CALL CPP_invert_trm(m, bsca, SIZE(bsca,1), nb, mpi_comm_rows, mpi_comm_cols,ok) + CALL CPP_CHOLESKY (m,bsca,SIZE(bsca,1),nb,mycolssca,mpi_comm_rows,mpi_comm_cols,.false.,ok) + CALL CPP_invert_trm(m,bsca,SIZE(bsca,1),nb,mycolssca,mpi_comm_rows,mpi_comm_cols,.false.,ok) #else CALL CPP_CHOLESKY (m,bsca,SIZE(bsca,1),nb, mpi_comm_rows,mpi_comm_cols) CALL CPP_invert_trm(m, bsca, SIZE(bsca,1), nb, mpi_comm_rows, mpi_comm_cols) @@ -179,7 +179,7 @@ CONTAINS #ifdef CPP_ELPA_NEW #ifdef CPP_ELPA2 err=CPP_solve_evp_2stage(m,num2,asca,SIZE(asca,1),& - eig2,eigvec,SIZE(asca,1), nb, mpi_comm_rows, mpi_comm_cols,sub_comm) + eig2,eigvec,SIZE(asca,1), nb,mycolssca, mpi_comm_rows, mpi_comm_cols,sub_comm) #else err=CPP_solve_evp(m, num2,asca,SIZE(asca,1),& eig2,eigvec, SIZE(asca,1), nb,mpi_comm_rows, mpi_comm_cols) @@ -339,7 +339,11 @@ CONTAINS !Create communicators for ELPA !print *,"creating ELPA comms" +#ifdef CPP_ELPA_NEW + ierr=get_elpa_row_col_comms(mpi_subcom, myrowblacs, mycolblacs,mpi_comm_rows, mpi_comm_cols) +#else CALL get_elpa_row_col_comms(mpi_subcom, myrowblacs, mycolblacs,mpi_comm_rows, mpi_comm_cols) +#endif !print *,"creating ELPA comms -- done" !Create the descriptors