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:
sbraccia 2006-05-04 14:33:25 +00:00
parent 0178a96db4
commit 3321ad6085
2 changed files with 18 additions and 11 deletions

View File

@ -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
!

View File

@ -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