24小时热门版块排行榜    

查看: 928  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 小木虫没落了,除了祈祷帖子,几乎看不到有价值的帖子 +11 botar 2026-07-14 11/550 2026-07-15 15:16 by xuechenli
[基金申请] 会评 +3 无名者登山 2026-07-15 3/150 2026-07-15 14:45 by Vivilian
[基金申请] E口青C会评结束了吗? 60+3 小小书虫c 2026-07-14 7/350 2026-07-15 14:45 by Bowerbird
[基金申请] 生命口C13面上会评时间 +6 luckinging 2026-07-14 9/450 2026-07-15 14:39 by 雨冰共舞
[教师之家] 内心匮乏 +13 水冰月月野兔 2026-07-12 13/650 2026-07-15 14:21 by jiduquegai
[文学芳草园] 你可曾有过这种感受? +3 Jeanya 2026-07-09 6/300 2026-07-15 11:07 by mbtwt
[论文投稿] 农业机械学报投稿周期 +3 G0DLIN 2026-07-14 7/350 2026-07-15 09:26 by xs74101122
[基金申请] 国自然面上D口祈祷 +4 monkeynana 2026-07-14 4/200 2026-07-15 09:14 by 白水煮
[论文投稿] 跨出版社商投稿 20+4 倪好520 2026-07-13 4/200 2026-07-15 08:35 by bobvan
[基金申请] E口会评 +8 布布和一二 2026-07-13 10/500 2026-07-14 18:17 by 旋风马1987
[基金申请] 不要再数国自然申请书的 filecode 的分隔符个数了 +13 sadpencil 2026-07-12 20/1000 2026-07-14 13:12 by 杠就是你对
[基金申请] 明天E口面上会评 +8 布布和一二 2026-07-12 9/450 2026-07-13 22:59 by QTSorange
[论文投稿] MSER送审了还被拒稿 +4 S778950906 2026-07-08 6/300 2026-07-13 16:22 by tfang
[基金申请] 祈祷青基必中 50+6 hadengry 2026-07-09 16/800 2026-07-12 20:31 by 登山虫虫
[考博] 27届辽宁大学应届毕业生申博 +3 可乐微风大海 2026-07-09 3/150 2026-07-10 21:23 by 贪玩的研究僧
[基金申请] 关于如何从代码看上不上会 +17 且听虎啸 2026-07-09 23/1150 2026-07-10 19:51 by sdfapple719
[有机交流] chemdraw 20+5 ?慕鱼? 2026-07-08 6/300 2026-07-10 15:37 by 紫枫星域
[基金申请] b口会评 +6 当空照 2026-07-08 6/300 2026-07-09 20:49 by tonyliu0401
[考研] 在职考研 +6 wu5d 2026-07-08 7/350 2026-07-09 16:40 by 化工小霸王呀
[基金申请] 化学口会评?应用基础研究和基础研究,希望能分开 +3 Tide man 2026-07-08 3/150 2026-07-09 11:36 by dede5556
信息提示
请填处理意见