Skip to content
This repository was archived by the owner on May 28, 2018. It is now read-only.

Commit 3d4b83e

Browse files
authored
Merge pull request #2 from yukwangmin/master
PHonon - k point implementation
2 parents 13eb7aa + 2ffff95 commit 3d4b83e

File tree

4 files changed

+493
-3
lines changed

4 files changed

+493
-3
lines changed

PH/Makefile

+13-2
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,24 @@ LIBOBJS = ../../clib/clib.a ../../iotk/src/libiotk.a
1515

1616
TLDEPS= bindir mods libs pw-gpu
1717

18+
19+
PHGPUOBJS = \
20+
h_psiq_gpu.o
21+
22+
CUGPUOBJS = \
23+
h_psiq_k_cuda.o
24+
1825
all : tldeps ph-gpu.x
1926

20-
ph-gpu.x : phonon.o ../../PHonon/PH/libph.a $(PWMODS) $(LIBOBJS)
21-
$(LD) $(LDFLAGS) -o $@ phonon.o ../../PHonon/PH/libph.a \
27+
ph-gpu.x : phonon.o ../../PHonon/PH/libph.a libphgpu.a $(PWMODS) $(LIBOBJS)
28+
$(LD) $(LDFLAGS) -o $@ phonon.o ../../PHonon/PH/libph.a libphgpu.a \
2229
$(PWMODS) $(QEMODS) $(LIBOBJS) $(LIBS)
2330
- ( cd ../../bin ; ln -fs ../GPU/PH/$@ . )
2431

32+
libphgpu.a : $(PHGPUOBJS) $(CUGPUOBJS)
33+
$(AR) $(ARFLAGS) $@ $?
34+
$(RANLIB) $@
35+
2536
tldeps:
2637
test -n "$(TLDEPS)" && ( cd ../.. ; $(MAKE) $(MFLAGS) $(TLDEPS) || exit 1) || :
2738
clean :

PH/h_psiq_gpu.f90

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
!
2+
! \author Kwanmgin Yu <[email protected]>
3+
!
4+
!
5+
6+
7+
!---------------------------
8+
SUBROUTINE h_psiq_k_gpu(lda, n, m, psi, hpsi, spsi)
9+
!---------------------------
10+
USE kinds, ONLY : DP
11+
USE gvecs, ONLY : nls, ngms
12+
USE wvfct, ONLY : g2kin, npwx
13+
USE fft_base, ONLY : dffts
14+
USE wavefunctions_module, ONLY : psic, psic_nc
15+
USE becmod, ONLY : bec_type, becp, calbec
16+
USE noncollin_module, ONLY : noncolin, npol
17+
USE lsda_mod, ONLY : current_spin
18+
USE fft_interfaces, ONLY: fwfft, invfft
19+
USE spin_orb, ONLY : domag
20+
USE scf, ONLY : vrs
21+
USE uspp, ONLY : vkb
22+
USE qpoint, ONLY: igkq, nksq
23+
USE control_flags, ONLY : gamma_only ! Needed only for TDDFPT
24+
USE mp_pools, ONLY: npool
25+
26+
27+
IMPLICIT NONE
28+
!
29+
INTEGER, INTENT(in) :: lda, n, m
30+
!INTEGER, POINTER :: igkq(:)
31+
COMPLEX(DP), INTENT(INOUT) :: psi (lda*npol, m)
32+
COMPLEX(DP), INTENT(OUT) :: hpsi (lda*npol, m), spsi (lda*npol, m)
33+
!
34+
INTEGER, EXTERNAL :: h_psiq_cuda_k
35+
!
36+
INTEGER :: ierr
37+
INTEGER :: i,j
38+
39+
40+
41+
CALL calbec ( n, vkb, psi, becp, m)
42+
43+
ierr = h_psiq_cuda_k( lda, npol, dffts%nnr, dffts%nr1x, dffts%nr2x, dffts%nr3x, n, m, psi, vrs(:,current_spin), hpsi, igkq(1:), nls(1:), ngms, g2kin)
44+
45+
46+
IF (ierr.EQ.1) THEN
47+
!CPU fall-back
48+
write (*,*) 'h_psiq_k_gpu()::ierr : ', ierr
49+
CALL h_psiq()
50+
ENDIF
51+
52+
CALL add_vuspsi (lda, n, m, hpsi)
53+
54+
CALL s_psi (lda, n, m, psi, spsi)
55+
56+
!
57+
RETURN
58+
END SUBROUTINE h_psiq_k_gpu
59+

0 commit comments

Comments
 (0)