Modified ELPA calls to comply with new library API. Supported 2015.11.001

(__ELPA_2015) and 2016.05.003 (__ELPA_2016). Link must be done manually (for
now). Validated using PW AUSURF112 (GAMMA), PW AUSURF112 (K) ans PW GRIR443.
CP tests to be done. Internal self-compiled ELPA very old still present but it
will be deprecated soon.


git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12942 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
spigafi 2016-09-10 20:48:28 +00:00
parent 1a4be92da9
commit ad5e1bf29e
4 changed files with 28 additions and 11 deletions

View File

@ -18,6 +18,7 @@ New in 6.0 version:
* EPW: The test-farm now checks 5 representative examples and the associated
accuracy
* Netlib LAPACK updated, easy to update going forward
* Added support to modern ELPA (2016.05 and 2015.11)
Fixed in 6.0 version:

View File

@ -664,11 +664,12 @@ CONTAINS
#if defined __SCALAPACK
SUBROUTINE pdsyevd_drv( tv, n, nb, s, lds, w, ortho_cntx, ortho_comm )
#if defined(__ELPA)
USE elpa1
!
#if defined(__ELPA) || defined(__ELPA_2016) || defined(__ELPA_2015)
use elpa1
#endif
IMPLICIT NONE
!
LOGICAL, INTENT(IN) :: tv
! if tv is true compute eigenvalues and eigenvectors (not used)
INTEGER, INTENT(IN) :: nb, n, ortho_cntx, ortho_comm
@ -689,8 +690,11 @@ CONTAINS
INTEGER :: LWORK, LIWORK, info
CHARACTER :: jobv
INTEGER :: i, ierr
#if defined(__ELPA)
#if defined(__ELPA) || defined(__ELPA_2016) || defined(__ELPA_2015)
INTEGER :: nprow,npcol,my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols
#if defined(__ELPA_2016)
LOGICAL :: success
#endif
#endif
IF( SIZE( s, 1 ) /= lds ) &
@ -712,11 +716,20 @@ CONTAINS
itmp = 0
rtmp = 0.0_DP
#if defined(__ELPA)
#if defined(__ELPA) || defined(__ELPA_2016) || defined(__ELPA_2015)
CALL BLACS_Gridinfo(ortho_cntx,nprow, npcol, my_prow,my_pcol)
#if defined(__ELPA_2016)
success = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols)
success = solve_evp_real_1stage(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols)
#elif defined(__ELPA_2015)
ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols)
ierr = solve_evp_real(n, n, s, lds, w, vv, lds,SIZE(s,2),nb ,mpi_comm_rows, mpi_comm_cols)
#elif defined(__ELPA)
CALL get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols)
CALL solve_evp_real(n, n, s, lds, w, vv, lds ,nb ,mpi_comm_rows, mpi_comm_cols)
#endif
IF( tv ) s = vv
IF( ALLOCATED( vv ) ) DEALLOCATE( vv )

View File

@ -1520,11 +1520,14 @@ CONTAINS
#if defined(__ELPA)
CALL BLACS_Gridinfo( ortho_cntx, nprow, npcol, my_prow, my_pcol )
CALL get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows,mpi_comm_cols)
CALL solve_evp_complex(n, n, h, size(h,1), w, v, size(h,1), nb, &
mpi_comm_rows, mpi_comm_cols)
h = v
!CALL get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows,mpi_comm_cols)
!CALL solve_evp_complex(n, n, h, size(h,1), w, v, size(h,1), nb, &
! mpi_comm_rows, mpi_comm_cols)
ierr = get_elpa_row_col_comms(ortho_comm, my_prow, my_pcol,mpi_comm_rows, mpi_comm_cols)
ierr = solve_evp_complex(n, n, h, size(h,1), w, v, size(h,1), size(h,2), nb, &
mpi_comm_rows, mpi_comm_cols)
h = v
#if defined __MPI
CALL mpi_comm_free( mpi_comm_rows, ierr )

View File

@ -712,7 +712,7 @@ LOGICAL FUNCTION check_para_diag( nbnd )
ELSE
CALL errore( 'setup','Unexpected sub-group communicator ', 1 )
END IF
#if defined(__ELPA)
#if defined(__ELPA) || defined(__ELPA_2015) || defined(__ELPA_2016)
WRITE( stdout, '(5X,"ELPA distributed-memory algorithm ", &
& "(size of sub-group: ", I2, "*", I3, " procs)",/)') &
np_ortho(1), np_ortho(2)