mirror of https://gitlab.com/QEF/q-e.git
Parallel Davidson is tested only for nbndx > 200. Some additional cleanup.
C.S. git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@3077 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
parent
0178a96db4
commit
3321ad6085
|
@ -87,9 +87,9 @@ SUBROUTINE cgramg1( lda, nvecx, n, start, finish, psi, spsi, hpsi )
|
|||
IF ( gstart == 2 ) &
|
||||
ps(1:vec-1) = ps(1:vec-1) - psi(1,1:vec-1)*spsi(1,vec)
|
||||
!
|
||||
CALL reduce( ( vec - 1 ), ps )
|
||||
CALL reduce( vec-1, ps )
|
||||
!
|
||||
DO vecp = 1, ( vec - 1 )
|
||||
DO vecp = 1, vec - 1
|
||||
!
|
||||
psi(:,vec) = psi(:,vec) - ps(vecp) * psi(:,vecp)
|
||||
hpsi(:,vec) = hpsi(:,vec) - ps(vecp) * hpsi(:,vecp)
|
||||
|
@ -101,7 +101,7 @@ SUBROUTINE cgramg1( lda, nvecx, n, start, finish, psi, spsi, hpsi )
|
|||
!
|
||||
psi_norm = 2.D0*DDOT( 2*n, psi(1,vec), 1, spsi(1,vec), 1 )
|
||||
!
|
||||
IF ( gstart == 2 ) psi_norm = psi_norm - psi(1,vec) * spsi(1,vec)
|
||||
IF ( gstart == 2 ) psi_norm = psi_norm - psi(1,vec)*spsi(1,vec)
|
||||
!
|
||||
CALL reduce( 1, psi_norm )
|
||||
!
|
||||
|
@ -145,13 +145,13 @@ SUBROUTINE cgramg1( lda, nvecx, n, start, finish, psi, spsi, hpsi )
|
|||
CALL ZGEMV( 'C', n, vec-1, ONE, &
|
||||
psi(1,1), lda, spsi(1,vec), 1, ZERO, ps, 1 )
|
||||
!
|
||||
CALL reduce( 2*( vec - 1 ), ps )
|
||||
CALL reduce( 2*(vec-1), ps )
|
||||
!
|
||||
DO vecp = 1, vec - 1
|
||||
!
|
||||
psi(:,vec) = psi(:,vec) - ps(vecp)*psi(:,vecp)
|
||||
hpsi(:,vec) = hpsi(:,vec) - ps(vecp)*hpsi(:,vecp)
|
||||
spsi(:,vec) = spsi(:,vec) - ps(vecp)*spsi(:,vecp)
|
||||
psi(:,vec) = psi(:,vec) - ps(vecp) * psi(:,vecp)
|
||||
hpsi(:,vec) = hpsi(:,vec) - ps(vecp) * hpsi(:,vecp)
|
||||
spsi(:,vec) = spsi(:,vec) - ps(vecp) * spsi(:,vecp)
|
||||
!
|
||||
END DO
|
||||
!
|
||||
|
|
15
PW/setup.f90
15
PW/setup.f90
|
@ -927,17 +927,24 @@ SUBROUTINE check_para_diag_efficiency()
|
|||
!
|
||||
IF ( isolve /= 0 .OR. nproc_pool == 1 ) RETURN
|
||||
!
|
||||
IF ( ionode ) &
|
||||
WRITE( stdout, '(/,5X,"looking for ", &
|
||||
& "the optimal diagonalization algorithm ...",/)' )
|
||||
!
|
||||
m_min = ( nbnd / nproc_pool ) * nproc_pool
|
||||
!
|
||||
m = ( 100 / nproc_pool ) * nproc_pool
|
||||
!
|
||||
IF ( m > nbndx ) RETURN
|
||||
IF ( m > nbndx .OR. nbndx < 200 ) THEN
|
||||
!
|
||||
IF ( ionode ) WRITE( stdout, '(5X,"a serial algorithm will be used",/)' )
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END IF
|
||||
!
|
||||
IF ( ionode ) THEN
|
||||
!
|
||||
WRITE( stdout, '(/,5X,"looking for ", &
|
||||
& "the optimal diagonalization algorithm ...",/)' )
|
||||
!
|
||||
WRITE( stdout, '(5X,"dimension time para (sec) time serial (sec)")' )
|
||||
!
|
||||
END IF
|
||||
|
|
Loading…
Reference in New Issue