24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 2207  |  回复: 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的回帖

糖爷妖猴

新虫 (初入文坛)

4楼2018-06-07 09:32:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 4 个回答

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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 266求调剂 +3 学员97LZgn 2026-04-02 3/150 2026-04-02 11:12 by 乔哒哒哒
[考研] 292分,材料与化工,申请调剂 +19 程晴之 2026-04-01 22/1100 2026-04-02 10:29 by 氯化亚硝酰
[考研] 329求调剂 +8 miaodesi 2026-04-02 10/500 2026-04-02 10:24 by 不吃魚的貓
[考研] 298求B区调剂 +3 zzz,,r 2026-04-02 3/150 2026-04-02 09:18 by wxiongid
[考研] 一志愿上海海洋大学083200食品学硕,求调剂,接受其他专业 +5 what张 2026-04-01 5/250 2026-04-01 22:35 by guanxin1001
[考研] 一志愿南昌大学324求调剂 +12 hanamiko 2026-03-27 12/600 2026-04-01 22:34 by 运气yunqi
[考研] 279求调剂 +7 莫xiao 2026-04-01 7/350 2026-04-01 22:05 by 客尔美德
[考研] 材料专硕调剂 +17 椰椰。 2026-03-29 17/850 2026-04-01 20:44 by cq2548
[考研] 311求调剂一志愿合肥工业大学 +14 秋二十二 2026-03-30 14/700 2026-04-01 11:45 by chemdavid
[考研] 一志愿北京科技大学085601材料工程英一数二初试总分335求调剂 +5 双马尾痞老板2 2026-03-31 5/250 2026-04-01 09:04 by oooqiao
[考研] 080200学硕,机械工程专业277分,求带走! +4 瓶子PZ 2026-03-31 4/200 2026-03-31 20:16 by vgtyfty
[考研] 322求调剂:一志愿湖南大学 材料与化工(085600),已过六级。 +10 XX小邓 2026-03-29 10/500 2026-03-31 16:46 by 不吃魚的貓
[考研] 343求调剂 +8 爱羁绊 2026-03-28 8/400 2026-03-31 16:12 by 不吃魚的貓
[考研] 学硕274求调剂 +17 Li李鱼 2026-03-26 17/850 2026-03-31 15:19 by 客尔美德
[考研] 262求调剂 +7 ZZ..000 2026-03-30 8/400 2026-03-31 10:05 by cal0306
[考研] 22408 359分调剂 +4 Qshers 2026-03-27 8/400 2026-03-31 08:53 by Qshers
[考研] 一志愿北京工业大学,324分求调剂 +6 零八# 2026-03-28 6/300 2026-03-29 21:20 by nanaliuyun
[考研] 085405 考的11408求各位老师带走 +3 Qiu学ing 2026-03-28 3/150 2026-03-28 09:19 by 乐呵呵的追梦人
[考研] 265求调剂 +8 小木虫085600 2026-03-27 8/400 2026-03-27 22:16 by 无际的草原
[考研] 08开头275求调剂 +4 拉谁不重要 2026-03-26 4/200 2026-03-27 14:12 by Delta2012
信息提示
请填处理意见