Fortran三重Do循环的CUDA处理?

dd798922110 2017-04-08 06:02:50
Fortran cuda 三重循环要怎么处理,也找不到教程 啊?就是把这个函数用cuda并行,改怎么做啊?

subroutine vkin_ene(nbas,sum)
c kinetic energy (see eq. (7))
implicit real*8 (a-h,o-z)
include 'param.inp'
dimension sum(mnbas),x(mnbas,mnpar,mnpar),summ(mnbas)
DIMENSION AMT(MNPAR,MNPAR), BMT(MNPAR,MNPAR), CMT(MNPAR),
> EMT(MNPAR), CCMT(MNPAR), EEMT(MNPAR), EST(MNPAR)
common /partic/ npar,kpot,nexa
common /nlpara/ a(mnbas,mnpar,mnpar), rab(mnbas,mnpar)
common /nlparb/ ap(mnbas,mnpar,mnpar), rabp(mnbas,mnpar) !!!jy
common /nlparc/ rabi(mnbas,mnpar)
common /lambda/ xla(mnpar)
common /detinv/ aap(mnbas,mnpar,mnpar),aapi(mnbas,mnpar,mnpar),
& d(mnbas)
c
np=npar
c
C
DO 1000 N = 1, NBAS
DO 770 IE = 1, NP
DO 760 JE = 1, NP
AMT(IE,JE) = 0.0D0
CX AAMT(IE,JE) = 0.0D0
DO 750 KK = 1, NP
AMT(IE,JE) = AMT(IE,JE) + AAPI(N,IE,KK)*AP(NBAS,KK,JE)
CX AAMT(IE,JE) = AAMT(IE,JE) + BBINV(IE,KK)*WI(KK,JE)
750 CONTINUE
760 CONTINUE
770 CONTINUE
C
DO 800 IE = 1, NP
DO 790 JE = 1, NP
BMT(IE,JE) = 0.0D0
CX BBMT(IE,JE) = 0.0D0
DO 780 KK = 1, NP
BMT(IE,JE) = BMT(IE,JE) + A(N,IE,KK)*AMT(KK,JE)
CX BBMT(IE,JE) = BBMT(IE,JE) + WI(IE,KK)*AAMT(KK,JE)
780 CONTINUE
790 CONTINUE
800 CONTINUE
C
DO IE = 1, NP
CMT(IE) = 0.0D0
EMT(IE) = 0.0D0
DO KK = 1, NP
CMT(IE) = CMT(IE) + AP(NBAS,IE,KK)*RABP(NBAS,KK)
EMT(IE) = EMT(IE) + A(N,IE,KK)*RABI(N,KK)
END DO
END DO
C
DO IE = 1, NP
CCMT(IE) = 0.0D0
EEMT(IE) = 0.0D0
DO KK = 1, NP
CCMT(IE) = CCMT(IE) + AAPI(N,IE,KK)*CMT(KK)
EEMT(IE) = EEMT(IE) + AAPI(N,IE,KK)*EMT(KK)
END DO
END DO
C
DO IE = 1, NP
CMT(IE) = 0.0D0
EMT(IE) = 0.0D0
DO KK = 1, NP
CMT(IE) = CMT(IE) + A(N,IE,KK)*CCMT(KK)
EMT(IE) = EMT(IE) + AP(NBAS,IE,KK)*EEMT(KK)
END DO
END DO
C
DO IE = 1, NP
EST(IE) = EMT(IE) - CMT(IE)
END DO
C
sum(n) = 0.0D0
DO K = 1, NP
sum(n) = sum(n) +
> (1.5D0*BMT(K,K) - 0.50D0*EST(K)*EST(K) )
CX WRITE(6,*) 'VSUMHK ',I, J, 1.5D0*BMT(K1,K1),
CX > 0.50D0*EMT(K1)*EST(K1), OVLP, VSUMHK
END DO
C
CX WRITE(6,*) 'VKIN(',NBAS, N,')', sum(n)
C
1000 CONTINUE
C
return
end
...全文
258 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

580

社区成员

发帖
与我相关
我的任务
社区描述
CUDA™是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构(ISA)以及GPU内部的并行计算引擎。
社区管理员
  • CUDA编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧