24小时热门版块排行榜    

查看: 2392  |  回复: 3

18772958660

新虫 (初入文坛)

[求助] 怎样把用Fortran编写的程序改写为并行程序 已有2人参与

有没懂Fortran并行编程的,目前我面临的一个问题:用Fortran 编写的程序在服务器上跑了几天就不出结果,想把它改成并行的用多核计算,但没学过并行的,所以很头疼,需要一位大神帮帮我。或者是优化一下程序的算法,下面一段程序,用单核计算跑的太久,怎样改进一下算法:
subroutine initial_condition()
  use global
  implicit none
    real :: r1, p1 = 0.5
        do i = 1,n
                call random_number(r1)
                if(r1 < p1)then
                        s(i) = 1.0
                else
                        s(i) = -1.0
                end if
                sum1 = sum1 + s(i)
        end do
        return
end

subroutine mcs()
  use global
  implicit none
    integer :: ii
    real :: r2, r3, sum2 = 0.0
    real :: ws(n)
        do ii = 1,n
                sum2 = 0.0
                call random_number(r2)
                i = n*r2 + 1
                sum1 = sum1 - s(i)
                do j = 1,n
                        if(ad(i,j) == 1)then         
                                sum2 = sum2 + s(j)
                        end if
                end do
                if(sum2<0)then
                        ws(i) = (1-(1-2*q)*s(i)*(-1.0))/2
                else if(sum2>0)then
                        ws(i) = (1-(1-2*q)*s(i)*(1.0))/2
                else
                        ws(i) = 0.5
                end if
                call random_number(r3)
                if(r3 <= ws(i))then
                        s(i) = -s(i)  
                else
                        s(i) = s(i)
                end if
                sum1 = sum1 + s(i)
        end do
        return
end

!**************************Ising dynamics*******************************
subroutine dynamics()
use global
implicit none
integer :: mm, t = 0
real :: sum3 = 0.0, sum4 = 0.0, sum5 = 0.0
real :: m(time)
do mm = 1,n1
q = q + 0.005
call initial_condition()
do while(t < time)
        call mcs()       
        t = t + 1
        m(t) = abs(sum1/n)
        if(t>200000)then
        sum3 = sum3 + m(t)**4
        sum4 = sum4 + m(t)**2
        sum5 = sum5 + m(t)
        end if
end do
MNq(mm) = sum5/(time-200000)
UNq(mm) = 1 - (sum3/(time-200000))/(3*((sum4/(time-200000))**2))
t = 0
sum1 = 0.0
sum3 = 0.0
sum4 = 0.0
sum5 = 0.0
end do
return
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yongwu22

新虫 (初入文坛)

【答案】应助回帖

★
jjdg: 金币+1, 感谢参与 2017-04-25 18:25:18
你打算在什么样的硬件环境跑程序啊,是共享内存还是分布内存啊?
有事没事常来玩啊~~
2楼2017-04-25 13:47:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yongwu22

新虫 (初入文坛)

【答案】应助回帖

主函数是什么样的啊?循环内有函数调用,并行的难度比较大啊,而且需要知道一些变量的值,才能确定函数的热点,也就是程序运行时哪最耗时间
有事没事常来玩啊~~
3楼2017-04-25 13:51:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

糖爷妖猴

新虫 (初入文坛)

4楼2018-06-07 09:32:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 18772958660 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[有机交流] 用NBS溴化时溶剂除了CCl4外还有什么 +3 18834002860 2026-10-12 6/300 2026-10-15 14:30 by 长沙摩尔信息科�
[基金申请] 申请科研项目纯靠实力能成功吗? 200+7 David1982 2026-10-13 11/550 2026-10-15 10:30 by zyqchem
[论文投稿] 二审4个多月了还是Awaiting Reviewer Scores 10+3 纳斯达克ML 2026-10-11 4/200 2026-10-14 17:30 by babero
[有机交流] OpenAI又攻克数学难题了,离AI做有机合成还有多远? +8 wangyl_123 2026-10-10 13/650 2026-10-14 15:12 by zuesli
[教师之家] 课题组会帮你通过考核么? +4 好运来~9527 2026-10-10 7/350 2026-10-13 08:41 by xli1984
[公派出国] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:34 by XQNyDCa1Tk5n
[找工作] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 22:26 by XQNyDCa1Tk5n
[公派出国] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:26 by XQNyDCa1Tk5n
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 9/450 2026-10-11 22:15 by XQNyDCa1Tk5n
[考博] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 22:11 by XQNyDCa1Tk5n
[教师之家] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 22:06 by XQNyDCa1Tk5n
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 (EPI+-1)(金币-50) +5 qR2AdCWTVtkw 2026-10-09 10/500 2026-10-11 14:25 by VOMexwnDzOFZ
[教师之家] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 (EPI+-1)(金币-50) +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 14:05 by VOMexwnDzOFZ
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +5 qR2AdCWTVtkw 2026-10-09 8/400 2026-10-11 13:51 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:54 by VOMexwnDzOFZ
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +4 qR2AdCWTVtkw 2026-10-09 7/350 2026-10-11 10:34 by VOMexwnDzOFZ
[考博] 招收博士生一名 +3 mandolin 2026-10-10 3/150 2026-10-11 10:21 by 不是山谷!
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 qR2AdCWTVtkw 2026-10-09 4/200 2026-10-11 03:14 by M0zrYVSAnxpE
[有机交流] 各位大佬,路线设计求助 +6 zapen 2026-10-08 8/400 2026-10-10 15:59 by zapen
[有机交流] 我应该选哪条合成路线让实验成功率高一些? +5 jing816y 2026-10-08 9/450 2026-10-10 09:05 by zapen
信息提示
请填处理意见