24小时热门版块排行榜    

查看: 767  |  回复: 5

wifloveice

金虫 (初入文坛)

[求助] 分子動力學以OPENMP平行化時編譯問題

С???????4??????X????IVF???g????????OPENMP??г?????K??Lennard-Jones ????a???M?Мy???
??????????Y????OPENMP?????\?????????c?????????????У?
??????????? ???P????? CPU??????m?_??100%??
?????????(???????p)???????Y??n(?c???_??????\??r?Y?????)??
????? ??????gOPENMP?a???????N?^?? ?? ??????????`???x?x
M9832043@mail.npust.edu.tw

SUBROUTINE SSEVAL
use omp_lib
IMPLICIT NONE
INTEGER(KIND=4) IN,LIST,NPOINT,I,J,JBEGIN,JEND,NATOM,NABORS,KSORT,NSTEP,NATOM1
REAL(KIND=8) RL,X,Y,Z,XI,YI,ZI,RIJ ,ENERGY,VIRIAL
  LOGICAL LG,LUPDAT
  COMMON /INTGRS/ IN(10)
  COMMON /LGCLS / LG(4)
  COMMON /NABLST/ LIST(45000)  ,NPOINT(360)
  COMMON /POSIT / X(360),Y(360),Z(360)
  COMMON /REALS / RL(26)
  COMMON /ZLOOP / XI,YI,ZI,RIJ ,I,J,JBEGIN,JEND

  EQUIVALENCE (IN(2),KSORT) ,(IN(3),NABORS) ,(IN(4),NATOM)
  EQUIVALENCE (IN(5),NATOM1),(IN(6),NSTEP)
  EQUIVALENCE (RL(6),ENERGY),(RL(24),VIRIAL),(LG(4),LUPDAT)

  ENERGY=0.D0
  VIRIAL=0.D0
  NABORS=0
  LUPDAT=.FALSE.
  IF (MOD(NSTEP,KSORT) .EQ. 0) LUPDAT=.TRUE.

!$OMP PARALLEL PRIVATE(I)
!$OMP DO

  DO 300 I=1,NATOM1
  JBEGIN=NPOINT(I)
  JEND  =NPOINT(I+1)-1
  IF (LUPDAT) THEN
    NPOINT(I)=NABORS+1
        JBEGIN   =I+1
        JEND     =NATOM
  ENDIF
    XI=X(I)
    YI=Y(I)
    ZI=Z(I)
    CALL SSINLP
300 CONTINUE

!$OMP END DO
!$OMP END PARALLEL

  IF (LUPDAT) NPOINT(NATOM)=NABORS+1
  RETURN
  END
***************************************************************
SUBROUTINE SSINLP
IMPLICIT NONE
INTEGER(KIND=4) IN,LIST,NPOINT,I,J,JBEGIN,JEND,JX
REAL(KIND=8) FX,FY,FZ,Z1,X,Y,Z,RL,XI,YI,ZI,RIJ
REAL(KIND=8) CUBE,CUBEH,ENERGY,ESHFT,FSHFT,RCUT,VIRIAL,FOR,ENR,R6INV,RSQINV,RSQ,ZIJ,YIJ,XIJ
LOGICAL LG,LSHIFT,LUPDAT
  COMMON /FORCE / FX(360) ,FY(360) ,FZ(360)
  COMMON /LGCLS / LG(4)
  COMMON /NABLST/LIST(45000),NPOINT(360)
  COMMON /POSIT /X(360),Y(360),Z(360)
  COMMON /REALS /RL(26)
  COMMON /ZLOOP /XI,YI,ZI,RIJ,I,J,JBEGIN,JEND
  EQUIVALENCE (RL(2),CUBE),    (RL(3),CUBEH),  (RL(6),ENERGY)
  EQUIVALENCE (RL(7),ESHFT),   (RL(10),FSHFT), (RL(11),RCUT)   
  EQUIVALENCE (RL(24),VIRIAL), (LG(3),LSHIFT), (LG(4),LUPDAT)

  DO 400 JX=JBEGIN,JEND
  J=JX
  IF (.NOT.LUPDAT) J=LIST(JX)

  XIJ=XI-X(J)
  YIJ=YI-Y(J)
  ZIJ=ZI-Z(J)

  RSQ=XIJ*XIJ+YIJ*YIJ+ZIJ*ZIJ

  RIJ=DSQRT(RSQ)
IF (LUPDAT) CALL SSUPDT

  IF(RIJ.LE.RCUT) THEN
    RSQINV=1.D0/RSQ
        R6INV =RSQINV*RSQINV*RSQINV

   ENR = 4.D0*R6INV*(R6INV-1.D0)
        FOR = RSQINV*48.D0*R6INV*(R6INV-0.5D0)
        IF (LSHIFT) ENR=ENR+ESHFT+RIJ*FSHFT
        IF (LSHIFT) FOR=FOR-RSQINV*RIJ*FSHFT
          FX(I)=FX(I)+FOR*XIJ
      FX(J)=FX(J)-FOR*XIJ
          FY(I)=FY(I)+FOR*YIJ
      FY(J)=FY(J)-FOR*YIJ
          FZ(I)=FZ(I)+FOR*ZIJ
      FZ(J)=FZ(J)-FOR*ZIJ
        ENERGY=ENERGY+ENR
        VIRIAL=VIRIAL-FOR*RSQ
  ENDIF
400 CONTINUE

    RETURN
        END

[ Last edited by ghcacj on 2011-8-27 at 08:44 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yahoohoo

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★
御剑江湖(金币+4): 谢谢 2011-08-23 22:06:41
力和位置需要用线程独立的数组来储存。F[NTHD][NATOMS], X[NTHD][NATOMS]。
如果只用一个公共数组,那么多个线程可能同时写入同一个或位置临近的内存,这会导致计算错误以及运算速度下降。
2楼2011-08-23 13:43:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wifloveice

金虫 (初入文坛)

??? ???"????λ?????????????????????????" ????f??????????
1. ???Еr????_????(????????λ????в????c??????в???)
2. ????f????С?
DO 300 I=1,NATOM1
  JBEGIN=NPOINT(I)
  JEND  =NPOINT(I+1)-1
END DO
?@???????з???????????????"?o??"?????????? ???~??????
3楼2011-08-23 17:19:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yahoohoo

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★
御剑江湖(金币+3): 谢谢 2011-08-23 22:06:48
wifloveice(金币+20): 謝謝幫忙 2011-08-25 00:07:13
我没明白你说的是什么意思。
使用多个cpu cores就是为了分担力的计算,假如你有100个原子和2个cpu cores,那么第一个core计算前50个原子,第二个core计算后50个原子。
4楼2011-08-23 17:54:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wifloveice

金虫 (初入文坛)

你好 我再補充說明 要表達的事項
小弟最近看了些資料   得知openmp要如何分割 主要看使用多少cpu
而使用openmp如大致下
!$OMP PARALLEL PRIVATE(I)     <---openmp指令
!$OMP DO                              <---openmp指令
DO I=1,100
N=N+1
END DO
!$OMP END DO                       <---openmp指令
!$OMP END PARALLEL            <---openmp指令

(回到最上頁問題)  但以相同方式放進去分子動力學編碼後 ?K沒有想像中簡單
而大大所提的  以"线程独立的数组来储存" 是否可以再詳細說明 謝謝
5楼2011-08-23 23:01:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yahoohoo

铁杆木虫 (著名写手)

★ ★ ★
御剑江湖(金币+3): 谢谢 2011-08-26 20:09:54
引用回帖:
5楼: Originally posted by wifloveice at 2011-08-23 23:01:18:
你好 我再補充說明 要表達的事項
小弟最近看了些資料   得知openmp要如何分割 主要看使用多少cpu
而使用openmp如大致下
!$OMP PARALLEL PRIVATE(I)     <---openmp指令
!$OMP DO                         ...

如果你真是想学openmp并行,建议你花1-3个月的时间从openmp的基础知识学起再到md的并行。网上有很多资料,完全可以自学。单凭一个帖子解决你的所有问题不现实,
6楼2011-08-26 18:30:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wifloveice 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考研] 材料专硕306英一数二 +6 z1z2z3879 2026-03-16 8/400 2026-03-17 14:03 by 勇敢太监王公公
[考研] 211本,11408一志愿中科院277分,曾在中科院自动化所实习 +6 Losir 2026-03-12 7/350 2026-03-17 12:09 by danranxie
[考研] 一志愿南京大学,080500材料科学与工程,调剂 +4 Jy? 2026-03-16 4/200 2026-03-17 11:02 by gaoqiong
[考研] 301求调剂 +3 A_JiXing 2026-03-16 3/150 2026-03-17 08:21 by 无际的草原
[考研] 274求调剂 +5 时间点 2026-03-13 5/250 2026-03-17 07:34 by 热情沙漠
[考研] 333求调剂 +3 文思客 2026-03-16 7/350 2026-03-16 18:21 by 文思客
[考研] 283求调剂 +10 小楼。 2026-03-12 14/700 2026-03-16 16:08 by 13811244083
[考研] 070303 总分349求调剂 +3 LJY9966 2026-03-15 5/250 2026-03-16 14:24 by xwxstudy
[考研] 080500,材料学硕302分求调剂学校 +4 初识可乐 2026-03-14 5/250 2026-03-14 21:08 by peike
[考研] 308 085701 四六级已过求调剂 +7 温乔乔乔乔 2026-03-12 14/700 2026-03-14 10:49 by JourneyLucky
[考研] 学硕285求调剂 +13 Wisjxn 2026-03-12 46/2300 2026-03-14 10:33 by JourneyLucky
[基金申请] 有必要更换申报口吗 20+3 fannyamoy 2026-03-11 3/150 2026-03-14 00:52 by zhanghaozhu
[考研] 0703,333分求调剂 一志愿郑州大学-物理化学 +3 李魔女斗篷 2026-03-11 3/150 2026-03-13 22:24 by JourneyLucky
[考研] 求调剂(材料与化工327) +4 爱吃香菜啦 2026-03-11 4/200 2026-03-13 22:11 by JourneyLucky
[考研] 一志愿211化学学硕310分求调剂 +8 努力奋斗112 2026-03-12 9/450 2026-03-13 15:41 by JourneyLucky
[考研] 求调剂 +3 程雨杭 2026-03-12 3/150 2026-03-13 15:06 by JourneyLucky
[考研] 0856化学工程280分求调剂 +4 shenzxsn 2026-03-11 4/200 2026-03-13 11:55 by ymwdoctor
[考研] 求调剂 资源与环境 285 +3 未名考生 2026-03-10 3/150 2026-03-13 10:31 by houyaoxu
[考研] 270求调剂 085600材料与化工专硕 +3 YXCT 2026-03-11 3/150 2026-03-13 10:13 by houyaoxu
信息提示
请填处理意见