24小时热门版块排行榜    

查看: 769  |  回复: 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的回帖

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的回帖
查看全部 6 个回答

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的回帖

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 26调剂/材料/英一数二/总分289/已过A区线 +7 步川酷紫123 2026-03-13 7/350 2026-03-18 17:12 by 尽舜尧1
[考研] 085600材料与化工 +5 安全上岸! 2026-03-16 5/250 2026-03-18 15:33 by cmz0325
[考研] 0854,计算机类招收调剂 +3 胡辣汤放糖 2026-03-15 6/300 2026-03-18 12:09 by 上岸上岸……..
[考博] 环境领域全国重点实验室招收博士1-2名 +3 QGZDSYS 2026-03-13 5/250 2026-03-18 11:13 by QGZDSYS
[考研] 303求调剂 +4 睿08 2026-03-17 6/300 2026-03-18 11:01 by Iveryant
[考研] 0703化学求调剂 总分331 +3 ZY-05 2026-03-13 3/150 2026-03-18 10:58 by macy2011
[考研] 307求调剂 +3 冷笙123 2026-03-17 3/150 2026-03-18 09:55 by macy2011
[考研] 0703化学336分求调剂 +6 zbzihdhd 2026-03-15 7/350 2026-03-18 09:53 by zhukairuo
[考研] 考研化学学硕调剂,一志愿985 +4 张vvvv 2026-03-15 6/300 2026-03-17 17:15 by ruiyingmiao
[考博] 26申博 +4 八旬速览 2026-03-16 4/200 2026-03-17 13:00 by 轻松不少随
[考研] 275求调剂 +4 太阳花天天开心 2026-03-16 4/200 2026-03-17 10:53 by 功夫疯狂
[考研] 274求调剂 +5 时间点 2026-03-13 5/250 2026-03-17 07:34 by 热情沙漠
[考研] 0703化学调剂 290分有科研经历,论文在投 +7 腻腻gk 2026-03-14 7/350 2026-03-16 10:12 by houyaoxu
[考研] 中科大材料专硕319求调剂 +3 孟鑫材料 2026-03-13 3/150 2026-03-14 18:10 by houyaoxu
[考研] 255求调剂 +3 李嘉慧, 2026-03-12 4/200 2026-03-14 16:58 by 有只狸奴
[考研] 308 085701 四六级已过求调剂 +7 温乔乔乔乔 2026-03-12 14/700 2026-03-14 10:49 by JourneyLucky
[考研] 招收0805(材料)调剂 +3 18595523086 2026-03-13 3/150 2026-03-14 00:33 by 123%、
[考研] [0860]321分求调剂,ab区皆可 +4 宝贵热 2026-03-13 4/200 2026-03-13 22:01 by 星空星月
[考研] 求调剂 +5 一定有学上- 2026-03-12 5/250 2026-03-13 18:31 by ms629
[考研] 290求调剂 +7 ADT 2026-03-12 7/350 2026-03-13 15:17 by JourneyLucky
信息提示
请填处理意见