mirror of https://gitlab.com/QEF/q-e.git
fft_wraps - rho_fft in sum_band_gpu
This commit is contained in:
parent
6969d46d9c
commit
f1ea3ef1dd
|
@ -57,6 +57,9 @@ CONTAINS
|
||||||
!
|
!
|
||||||
IF( nspin == 1 ) THEN
|
IF( nspin == 1 ) THEN
|
||||||
!
|
!
|
||||||
|
!$acc kernels
|
||||||
|
psi(desc%nnr+1:) = (0.d0,0.d0)
|
||||||
|
!$acc end kernels
|
||||||
iss = 1
|
iss = 1
|
||||||
IF( PRESENT(v) ) THEN
|
IF( PRESENT(v) ) THEN
|
||||||
!$acc parallel loop
|
!$acc parallel loop
|
||||||
|
@ -119,6 +122,10 @@ CONTAINS
|
||||||
!$acc end data
|
!$acc end data
|
||||||
DEALLOCATE( psi )
|
DEALLOCATE( psi )
|
||||||
!
|
!
|
||||||
|
!$acc kernels
|
||||||
|
rhog(desc%ngm+1:,:) = (0.d0,0.d0)
|
||||||
|
!$acc end kernels
|
||||||
|
!
|
||||||
!$acc end data
|
!$acc end data
|
||||||
!
|
!
|
||||||
END SUBROUTINE rho_r2g
|
END SUBROUTINE rho_r2g
|
||||||
|
|
|
@ -22,6 +22,7 @@ SUBROUTINE sum_band_gpu()
|
||||||
USE ions_base, ONLY : nat, ntyp => nsp, ityp
|
USE ions_base, ONLY : nat, ntyp => nsp, ityp
|
||||||
USE fft_base, ONLY : dfftp, dffts
|
USE fft_base, ONLY : dfftp, dffts
|
||||||
USE fft_interfaces, ONLY : fwfft, invfft
|
USE fft_interfaces, ONLY : fwfft, invfft
|
||||||
|
USE fft_rho, ONLY : rho_g2r, rho_r2g
|
||||||
USE gvect, ONLY : ngm, g
|
USE gvect, ONLY : ngm, g
|
||||||
USE gvecs, ONLY : doublegrid
|
USE gvecs, ONLY : doublegrid
|
||||||
USE klist, ONLY : nks, nkstot, wk, xk, ngk, igk_k, igk_k_d
|
USE klist, ONLY : nks, nkstot, wk, xk, ngk, igk_k, igk_k_d
|
||||||
|
@ -168,14 +169,8 @@ SUBROUTINE sum_band_gpu()
|
||||||
!
|
!
|
||||||
! ... bring the unsymmetrized rho(r) to G-space (use psic as work array)
|
! ... bring the unsymmetrized rho(r) to G-space (use psic as work array)
|
||||||
!
|
!
|
||||||
DO is = 1, nspin
|
CALL rho_r2g( dffts, rho%of_r, rho%of_g )
|
||||||
psic(1:dffts%nnr) = rho%of_r(1:dffts%nnr,is)
|
!
|
||||||
psic(dffts%nnr+1:) = 0.0_dp
|
|
||||||
CALL fwfft ('Rho', psic, dffts)
|
|
||||||
rho%of_g(1:dffts%ngm,is) = psic(dffts%nl(1:dffts%ngm))
|
|
||||||
rho%of_g(dffts%ngm+1:,is) = (0.0_dp,0.0_dp)
|
|
||||||
END DO
|
|
||||||
|
|
||||||
IF( okvan ) THEN
|
IF( okvan ) THEN
|
||||||
!
|
!
|
||||||
! ... becsum is summed over bands (if bgrp_parallelization is done)
|
! ... becsum is summed over bands (if bgrp_parallelization is done)
|
||||||
|
@ -219,13 +214,7 @@ SUBROUTINE sum_band_gpu()
|
||||||
!
|
!
|
||||||
! ... synchronize rho%of_r to the calculated rho%of_g (use psic as work array)
|
! ... synchronize rho%of_r to the calculated rho%of_g (use psic as work array)
|
||||||
!
|
!
|
||||||
DO is = 1, nspin_mag
|
CALL rho_g2r( dfftp, rho%of_g, rho%of_r )
|
||||||
psic(:) = ( 0.D0, 0.D0 )
|
|
||||||
psic(dfftp%nl(:)) = rho%of_g(:,is)
|
|
||||||
IF ( gamma_only ) psic(dfftp%nlm(:)) = CONJG( rho%of_g(:,is) )
|
|
||||||
CALL invfft ('Rho', psic, dfftp)
|
|
||||||
rho%of_r(:,is) = psic(:)
|
|
||||||
END DO
|
|
||||||
!
|
!
|
||||||
! ... rho_kin(r): sum over bands, k-points, bring to G-space, symmetrize,
|
! ... rho_kin(r): sum over bands, k-points, bring to G-space, symmetrize,
|
||||||
! ... synchronize with rho_kin(G)
|
! ... synchronize with rho_kin(G)
|
||||||
|
@ -234,24 +223,14 @@ SUBROUTINE sum_band_gpu()
|
||||||
!
|
!
|
||||||
CALL mp_sum( rho%kin_r, inter_pool_comm )
|
CALL mp_sum( rho%kin_r, inter_pool_comm )
|
||||||
CALL mp_sum( rho%kin_r, inter_bgrp_comm )
|
CALL mp_sum( rho%kin_r, inter_bgrp_comm )
|
||||||
DO is = 1, nspin
|
!
|
||||||
psic(1:dffts%nnr) = rho%kin_r(1:dffts%nnr,is)
|
CALL rho_r2g( dffts, rho%kin_r, rho%kin_g )
|
||||||
psic(dffts%nnr+1:) = 0.0_dp
|
|
||||||
CALL fwfft ('Rho', psic, dffts)
|
|
||||||
rho%kin_g(1:dffts%ngm,is) = psic(dffts%nl(1:dffts%ngm))
|
|
||||||
END DO
|
|
||||||
!
|
!
|
||||||
IF (.NOT. gamma_only) CALL sym_rho( nspin, rho%kin_g )
|
IF (.NOT. gamma_only) CALL sym_rho( nspin, rho%kin_g )
|
||||||
!
|
!
|
||||||
DO is = 1, nspin
|
CALL rho_g2r( dfftp, rho%kin_g, rho%kin_r )
|
||||||
psic(:) = ( 0.D0, 0.D0 )
|
|
||||||
psic(dfftp%nl(:)) = rho%kin_g(:,is)
|
|
||||||
IF ( gamma_only ) psic(dfftp%nlm(:)) = CONJG( rho%kin_g(:,is) )
|
|
||||||
CALL invfft ('Rho', psic, dfftp)
|
|
||||||
rho%kin_r(:,is) = psic(:)
|
|
||||||
END DO
|
|
||||||
!
|
!
|
||||||
END IF
|
ENDIF
|
||||||
CALL stop_clock_gpu( 'sum_band:sym_rho' )
|
CALL stop_clock_gpu( 'sum_band:sym_rho' )
|
||||||
!
|
!
|
||||||
! ... if LSDA rho%of_r and rho%of_g are converted from (up,dw) to
|
! ... if LSDA rho%of_r and rho%of_g are converted from (up,dw) to
|
||||||
|
|
Loading…
Reference in New Issue