mirror of https://gitlab.com/QEF/q-e.git
Can compile without GPU code. Added missing sync calls.
This commit is contained in:
parent
ed655220ec
commit
4878414583
|
@ -33,10 +33,11 @@
|
||||||
CONTAINS
|
CONTAINS
|
||||||
!
|
!
|
||||||
SUBROUTINE using_evc(changing)
|
SUBROUTINE using_evc(changing)
|
||||||
#if defined(__CUDA)
|
!
|
||||||
USE wavefunctions_module, ONLY : evc
|
USE wavefunctions_module, ONLY : evc
|
||||||
implicit none
|
implicit none
|
||||||
LOGICAL, INTENT(IN) :: changing
|
LOGICAL, INTENT(IN) :: changing
|
||||||
|
#if defined(__CUDA)
|
||||||
!
|
!
|
||||||
IF (evc_ood) THEN
|
IF (evc_ood) THEN
|
||||||
IF (.not. allocated(evc_d)) THEN
|
IF (.not. allocated(evc_d)) THEN
|
||||||
|
@ -57,10 +58,11 @@
|
||||||
END SUBROUTINE using_evc
|
END SUBROUTINE using_evc
|
||||||
!
|
!
|
||||||
SUBROUTINE using_evc_d(changing)
|
SUBROUTINE using_evc_d(changing)
|
||||||
#if defined(__CUDA)
|
!
|
||||||
USE wavefunctions_module, ONLY : evc
|
USE wavefunctions_module, ONLY : evc
|
||||||
implicit none
|
implicit none
|
||||||
LOGICAL, INTENT(IN) :: changing
|
LOGICAL, INTENT(IN) :: changing
|
||||||
|
#if defined(__CUDA)
|
||||||
!
|
!
|
||||||
IF (.not. allocated(evc)) THEN
|
IF (.not. allocated(evc)) THEN
|
||||||
IF (allocated(evc_d)) DEALLOCATE(evc_d)
|
IF (allocated(evc_d)) DEALLOCATE(evc_d)
|
||||||
|
|
|
@ -376,7 +376,7 @@ CONTAINS
|
||||||
END IF
|
END IF
|
||||||
CALL using_evc_d(.true.) !evc_d = evc
|
CALL using_evc_d(.true.) !evc_d = evc
|
||||||
#else
|
#else
|
||||||
CALL errore( ' diag_bands '. ' Called GPU version which is not available!', 1)
|
CALL errore( ' diag_bands ', ' Called GPU version of c_bands which is not available!', 1)
|
||||||
#endif
|
#endif
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
|
@ -528,6 +528,7 @@ CONTAINS
|
||||||
et(1,ik), btype(1,ik), notconv, lrot, dav_iter )
|
et(1,ik), btype(1,ik), notconv, lrot, dav_iter )
|
||||||
END IF
|
END IF
|
||||||
ELSE
|
ELSE
|
||||||
|
#if defined(__CUDA)
|
||||||
CALL using_evc_d(.true.) !evc_d = evc
|
CALL using_evc_d(.true.) !evc_d = evc
|
||||||
IF ( use_para_diag ) then
|
IF ( use_para_diag ) then
|
||||||
!
|
!
|
||||||
|
@ -550,6 +551,9 @@ CONTAINS
|
||||||
et(:,ik) = et_d
|
et(:,ik) = et_d
|
||||||
DEALLOCATE(et_d)
|
DEALLOCATE(et_d)
|
||||||
END IF
|
END IF
|
||||||
|
#else
|
||||||
|
CALL errore( ' diag_bands ', ' Called GPU version of c_bands which is not available!', 1)
|
||||||
|
#endif
|
||||||
END IF
|
END IF
|
||||||
!
|
!
|
||||||
avg_iter = avg_iter + dav_iter
|
avg_iter = avg_iter + dav_iter
|
||||||
|
|
|
@ -84,6 +84,8 @@ MODULE exx_band
|
||||||
USE control_flags, ONLY : io_level
|
USE control_flags, ONLY : io_level
|
||||||
USE buffers, ONLY : open_buffer, get_buffer, save_buffer
|
USE buffers, ONLY : open_buffer, get_buffer, save_buffer
|
||||||
USE mp_exx, ONLY : max_ibands, negrp
|
USE mp_exx, ONLY : max_ibands, negrp
|
||||||
|
|
||||||
|
USE wavefunctions_module_gpum, ONLY : using_evc
|
||||||
!
|
!
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
@ -92,6 +94,8 @@ MODULE exx_band
|
||||||
INTEGER :: lda, n, ik
|
INTEGER :: lda, n, ik
|
||||||
LOGICAL :: exst_mem, exst_file
|
LOGICAL :: exst_mem, exst_file
|
||||||
!
|
!
|
||||||
|
CALL using_evc(.false.)
|
||||||
|
!
|
||||||
IF (negrp.eq.1) THEN
|
IF (negrp.eq.1) THEN
|
||||||
!
|
!
|
||||||
! no change in data structure is necessary
|
! no change in data structure is necessary
|
||||||
|
@ -164,6 +168,7 @@ MODULE exx_band
|
||||||
! read evc for the local data structure
|
! read evc for the local data structure
|
||||||
!
|
!
|
||||||
IF ( nks > 1 ) CALL get_buffer(evc, nwordwfc, iunwfc, ik)
|
IF ( nks > 1 ) CALL get_buffer(evc, nwordwfc, iunwfc, ik)
|
||||||
|
IF ( nks > 1 ) CALL using_evc(.true.)
|
||||||
!
|
!
|
||||||
! transform evc to the EXX data structure
|
! transform evc to the EXX data structure
|
||||||
!
|
!
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
! in the root directory of the present distribution,
|
! in the root directory of the present distribution,
|
||||||
! or http://www.gnu.org/copyleft/gpl.txt .
|
! or http://www.gnu.org/copyleft/gpl.txt .
|
||||||
!
|
!
|
||||||
#if defined(__CUDA)
|
|
||||||
MODULE g_psi_mod_gpum
|
MODULE g_psi_mod_gpum
|
||||||
!
|
!
|
||||||
! ... These are the variables needed in g_psi
|
! ... These are the variables needed in g_psi
|
||||||
|
@ -14,14 +13,18 @@ MODULE g_psi_mod_gpum
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
REAL(DP), DEVICE, ALLOCATABLE :: &
|
REAL(DP), ALLOCATABLE :: &
|
||||||
h_diag_d (:,:),& ! diagonal part of the Hamiltonian
|
h_diag_d (:,:),& ! diagonal part of the Hamiltonian
|
||||||
s_diag_d (:,:) ! diagonal part of the overlap matrix
|
s_diag_d (:,:) ! diagonal part of the overlap matrix
|
||||||
|
|
||||||
|
#if defined(__CUDA)
|
||||||
|
attributes(device) :: h_diag_d, s_diag_d
|
||||||
|
|
||||||
LOGICAL :: h_diag_ood = .false. ! used to flag out of date variables
|
LOGICAL :: h_diag_ood = .false. ! used to flag out of date variables
|
||||||
LOGICAL :: s_diag_ood = .false.
|
LOGICAL :: s_diag_ood = .false.
|
||||||
LOGICAL :: h_diag_d_ood = .false.
|
LOGICAL :: h_diag_d_ood = .false.
|
||||||
LOGICAL :: s_diag_d_ood = .false.
|
LOGICAL :: s_diag_d_ood = .false.
|
||||||
|
#endif
|
||||||
!
|
!
|
||||||
CONTAINS
|
CONTAINS
|
||||||
!
|
!
|
||||||
|
@ -29,12 +32,14 @@ MODULE g_psi_mod_gpum
|
||||||
USE g_psi_mod, ONLY : h_diag
|
USE g_psi_mod, ONLY : h_diag
|
||||||
implicit none
|
implicit none
|
||||||
LOGICAL, INTENT(IN) :: writing
|
LOGICAL, INTENT(IN) :: writing
|
||||||
|
#if defined(__CUDA)
|
||||||
!
|
!
|
||||||
IF (h_diag_ood) THEN
|
IF (h_diag_ood) THEN
|
||||||
h_diag = h_diag_d
|
h_diag = h_diag_d
|
||||||
h_diag_ood = .false.
|
h_diag_ood = .false.
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (writing) h_diag_d_ood = .true.
|
IF (writing) h_diag_d_ood = .true.
|
||||||
|
#endif
|
||||||
END SUBROUTINE using_h_diag
|
END SUBROUTINE using_h_diag
|
||||||
!
|
!
|
||||||
SUBROUTINE using_h_diag_d(writing)
|
SUBROUTINE using_h_diag_d(writing)
|
||||||
|
@ -42,6 +47,7 @@ MODULE g_psi_mod_gpum
|
||||||
implicit none
|
implicit none
|
||||||
LOGICAL, INTENT(IN) :: writing
|
LOGICAL, INTENT(IN) :: writing
|
||||||
!
|
!
|
||||||
|
#if defined(__CUDA)
|
||||||
IF (.not. allocated(h_diag)) THEN
|
IF (.not. allocated(h_diag)) THEN
|
||||||
IF (allocated(h_diag_d)) DEALLOCATE(h_diag_d)
|
IF (allocated(h_diag_d)) DEALLOCATE(h_diag_d)
|
||||||
h_diag_d_ood = .false.
|
h_diag_d_ood = .false.
|
||||||
|
@ -56,24 +62,28 @@ MODULE g_psi_mod_gpum
|
||||||
h_diag_d_ood = .false.
|
h_diag_d_ood = .false.
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (writing) h_diag_ood = .true.
|
IF (writing) h_diag_ood = .true.
|
||||||
|
#endif
|
||||||
END SUBROUTINE using_h_diag_d
|
END SUBROUTINE using_h_diag_d
|
||||||
!
|
!
|
||||||
SUBROUTINE using_s_diag(writing)
|
SUBROUTINE using_s_diag(writing)
|
||||||
USE g_psi_mod, ONLY : s_diag
|
USE g_psi_mod, ONLY : s_diag
|
||||||
implicit none
|
implicit none
|
||||||
LOGICAL, INTENT(IN) :: writing
|
LOGICAL, INTENT(IN) :: writing
|
||||||
|
#if defined(__CUDA)
|
||||||
!
|
!
|
||||||
IF (s_diag_ood) THEN
|
IF (s_diag_ood) THEN
|
||||||
s_diag = s_diag_d
|
s_diag = s_diag_d
|
||||||
s_diag_ood = .false.
|
s_diag_ood = .false.
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (writing) s_diag_d_ood = .true.
|
IF (writing) s_diag_d_ood = .true.
|
||||||
|
#endif
|
||||||
END SUBROUTINE using_s_diag
|
END SUBROUTINE using_s_diag
|
||||||
!
|
!
|
||||||
SUBROUTINE using_s_diag_d(writing)
|
SUBROUTINE using_s_diag_d(writing)
|
||||||
USE g_psi_mod, ONLY : s_diag
|
USE g_psi_mod, ONLY : s_diag
|
||||||
implicit none
|
implicit none
|
||||||
LOGICAL, INTENT(IN) :: writing
|
LOGICAL, INTENT(IN) :: writing
|
||||||
|
#if defined(__CUDA)
|
||||||
!
|
!
|
||||||
IF (.not. allocated(s_diag)) THEN
|
IF (.not. allocated(s_diag)) THEN
|
||||||
IF (allocated(s_diag_d)) DEALLOCATE(s_diag_d)
|
IF (allocated(s_diag_d)) DEALLOCATE(s_diag_d)
|
||||||
|
@ -89,7 +99,7 @@ MODULE g_psi_mod_gpum
|
||||||
s_diag_d_ood = .false.
|
s_diag_d_ood = .false.
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (writing) s_diag_ood = .true.
|
IF (writing) s_diag_ood = .true.
|
||||||
|
#endif
|
||||||
END SUBROUTINE using_s_diag_d
|
END SUBROUTINE using_s_diag_d
|
||||||
!
|
!
|
||||||
END MODULE g_psi_mod_gpum
|
END MODULE g_psi_mod_gpum
|
||||||
#endif
|
|
||||||
|
|
|
@ -161,6 +161,7 @@ SUBROUTINE stres_us( ik, gk, sigmanlc )
|
||||||
!
|
!
|
||||||
! ... non diagonal contribution - derivative of the bessel function
|
! ... non diagonal contribution - derivative of the bessel function
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
|
CALL using_evc(.false.)
|
||||||
ALLOCATE( dvkb( npwx, nkb ) )
|
ALLOCATE( dvkb( npwx, nkb ) )
|
||||||
!
|
!
|
||||||
CALL gen_us_dj( ik, dvkb )
|
CALL gen_us_dj( ik, dvkb )
|
||||||
|
@ -223,6 +224,7 @@ SUBROUTINE stres_us( ik, gk, sigmanlc )
|
||||||
!
|
!
|
||||||
IF ( lmaxkb == 0 ) GO TO 10
|
IF ( lmaxkb == 0 ) GO TO 10
|
||||||
!
|
!
|
||||||
|
CALL using_evc(.false.) ! This is redundant
|
||||||
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||||||
DO ipol = 1, 3
|
DO ipol = 1, 3
|
||||||
CALL gen_us_dy( ik, xyz(1,ipol), dvkb )
|
CALL gen_us_dy( ik, xyz(1,ipol), dvkb )
|
||||||
|
@ -407,6 +409,7 @@ SUBROUTINE stres_us( ik, gk, sigmanlc )
|
||||||
!
|
!
|
||||||
CALL gen_us_dj( ik, dvkb )
|
CALL gen_us_dj( ik, dvkb )
|
||||||
!
|
!
|
||||||
|
CALL using_evc(.false.)
|
||||||
DO ibnd = 1, nbnd
|
DO ibnd = 1, nbnd
|
||||||
IF (noncolin) THEN
|
IF (noncolin) THEN
|
||||||
work2_nc = (0.D0,0.D0)
|
work2_nc = (0.D0,0.D0)
|
||||||
|
|
Loading…
Reference in New Issue