24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 959  |  回复: 4

iZeeyo

新虫 (初入文坛)

[求助] 在fortran程序加上openmp并行后耗时比不加并行更慢

在此段程序中,串行计算用时15.5s,运用openmp用两个线程计算,用时17.3s,运用openmp用4个线程计算,用时55s!!!!运行的结果是一样的,但是这个耗时也太不对劲了,希望有经验的大佬指点一下!!!感谢!
程序略长,但是结构简单,用了三个部分,在计算函数部分使用了并行。


module com!全局变量
   implicit none
    integer a,ia
    parameter (a=10000,ia=3)   
    integer summ(a,a),sumn(a,a),su(ia,3000,3000)
end
   
program xunhuan!主程序
use com
implicit none
include 'omp_lib.h'

integer i,j,ic
real(kind=8) time_begin,time_end
i=a
j=a

call omp_set_num_threads(2)
call cpu_time(time_begin)
call loop(i,j)
call cpu_time(time_end)  

open(10,file="result.txt"
write(10,*) time_end - time_begin
do i=1,500
    do j=1,500
   write(10,*) i,j,summ(i,j), sumn(i,j),summ(i,j)+sumn(i,j)
   do ic=1,ia
     write(10,*)   su(ic,i,j)
   end do
    end do
end do
close(10)
end
   
subroutine loop(ii,jj)!计算函数
use com
implicit none
integer i1,j1,ii,jj,aa1,bb1,aa2,bb2,cc1,cc2,dd1,dd2,ib

!$omp parallel private(aa1,bb1,aa2,bb2,cc1,cc2,dd1,dd2) shared(summ,sumn,su,ii,jj)
!$omp do

do i1=1,ii
do j1=1,jj   
     if(abs(mod(i1,2))==1)then
     aa1=3*i1-j1
     bb1=i1
     else if(abs(mod(i1,2))==0) then
         aa1=i1
         bb1=3*i1-j1
     end if
     cc1=min(aa1,bb1)
     if(abs(i1-25)>=20)then
         aa2=abs(i1-20)*2-j1
         bb2=abs(j1-50)+i1
     else if(abs(i1-25)<20)then
         aa2=abs(i1-10)*2-j1
         bb2=abs(j1-70)+i1
     end if
     cc2=floor(sqrt(1.0*aa2*bb2/abs(aa2-bb2)))
     
     dd1=cc1+i1
     dd2=cc2+j1
         
         
   summ(i1,j1)=floor(1.0*sqrt(abs(0.1*(dd1*(j1+1)-i1*dd2)*min(cc1,cc2))/22))+floor(1.0*sqrt(abs(0.01*cc1*cc2)))
   sumn(i1,j1)=floor(1.0*sqrt(abs(0.1*((i1+1)*dd2-dd1*j1)*max(cc1,cc2))/22))+floor(1.0*sqrt(abs(0.01*cc1*cc2)))
if(i1<=3000.and.j1<=3000)then
   do ib=1,ia
       su(ib,i1,j1)=floor(sqrt(1.0*abs(summ(i1,j1)*cc1)))+floor(sqrt(1.0*abs(sumn(i1,j1)*cc2)))+ib
   end do
end if

end do
end do

!$omp end do
!$omp end parallel

    end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luwis

至尊木虫 (职业作家)


jjdg: 金币+1, 感谢参与 2018-12-25 11:55:52
通常直接选取物理内核数目,线程数目/2,到最优结果。大概率都对。

发自小木虫Android客户端
2楼2018-12-07 16:16:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

luwis

至尊木虫 (职业作家)

引用回帖:
2楼: Originally posted by luwis at 2018-12-07 17:16:36
通常直接选取物理内核数目,线程数目/2,到最优结果。大概率都对。

比如8核,通常就是8最优。别用16。

发自小木虫Android客户端
3楼2018-12-07 16:18:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

iZeeyo

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by luwis at 2018-12-07 16:18:05
比如8核,通常就是8最优。别用16。
...

两个线程用的双核电脑算的,四个线程条件是用的服务器算的,应该不存在这个问题吧
4楼2018-12-07 18:04:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

1225839327

新虫 (初入文坛)


jjdg: 金币+1, 感谢参与 2018-12-25 11:56:00
Call cpu time不能用来计时openmp并行,得到的是cpu运行总时间。openmp要用omp_get_wtime时间函数才能得到实际时间。

发自小木虫Android客户端
5楼2018-12-25 07:17:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 iZeeyo 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 285求调剂 +9 AZMK 2026-04-02 9/450 2026-04-02 11:14 by vgtyfty
[考研] 348求调剂 +3 吴彦祖24k 2026-04-02 3/150 2026-04-02 10:47 by Creta
[考研] 316求调剂 +11 舟自梗 2026-04-01 12/600 2026-04-02 10:12 by 不吃魚的貓
[考研] 085801 总分275 本科新能源 求调剂 +10 bradoner 2026-04-01 12/600 2026-04-02 09:51 by bradoner
[考研] 理学07化学 303求调剂 +14 睿08 2026-03-27 15/750 2026-04-02 08:46 by 花??
[考研] 0817化工学硕调剂 +11 努力上岸中! 2026-03-31 11/550 2026-04-01 20:30 by 赖春艳
[考研] 086502化学工程342求调剂 +7 阿姨复古不过 2026-03-27 7/350 2026-04-01 16:14 by yanflower7133
[考研] 086000生物与医药 初试274求调剂 +5 小叮当来了 2026-03-30 6/300 2026-04-01 14:25 by mxj1203
[硕博家园] 博一被送出联培感觉不适应怎么办 +3 全村的狗 2026-03-31 3/150 2026-04-01 10:44 by 328838485
[考研] 求调剂:一志愿:南京大学 专业:0705 总分320 ,本科985,四六级已过 +3 lfy760306 2026-03-31 3/150 2026-04-01 01:57 by Creta
[考研] 张芳铭-中国农业大学-环境工程专硕-298 +9 手机用户 2026-03-26 9/450 2026-03-31 18:09 by 544594351
[考研] 材料求调剂 一志愿哈工大总分298分,前三科223分 +11 dongfang59 2026-03-27 11/550 2026-03-31 16:51 by Wang200018
[考研] 材料与化工272求调剂 +25 阿斯蒂芬2004 2026-03-28 25/1250 2026-03-31 16:27 by hypershenger
[考研] 323分 食品与营养调剂 +3 嘿ooo 2026-03-31 3/150 2026-03-31 09:38 by longlotian
[考研] 08工科求调剂286 +5 tgs_001 2026-03-28 5/250 2026-03-31 08:18 by 一只好果子?
[考研] 281求调剂 +5 亚克西good 2026-03-26 7/350 2026-03-30 20:42 by dophin1985
[考研] 105500药学求调剂,一志愿山东大学药学,348分 +3 gr哈哈哈 2026-03-28 3/150 2026-03-30 18:56 by 源_2020
[考研] 304求调剂 +6 曼殊2266 2026-03-27 6/300 2026-03-28 14:10 by 唐沐儿
[考研] 265求调剂11408 +3 刘小鹿lu 2026-03-27 3/150 2026-03-27 20:53 by nihaoar
[考研] 考研调剂 +9 小蜡新笔 2026-03-26 9/450 2026-03-27 11:10 by 不吃魚的貓
信息提示
请填处理意见