今天测试了Fortran OMP求$\Sigma_1^n i $ 串行和并行的速度。代码如下:

program mainuse OMP_LIBimplicit noninteger N,M,i, time_begin, time_endreal(kind=8) t, acall OMP_set_num_threads(4)N=2000000t=0.0call SYSTEM_CLOCK(time_begin)do i=1,Na=float(i)t=t+float(i)M = OMP_get_num_threads()enddocall SYSTEM_CLOCK(time_end)write(*, "('t =  ', F20.5, ' running on ', I3, ' threads,','using time =', I7)") t,M,time_end-time_begint=0.0call SYSTEM_CLOCK(time_begin)!$OMP PARALLEL DOdo i = 1, N!$OMP CRITICALa = float(i)t = t+a!$OMP END CRITICALM = OMP_get_num_threads()enddo!$OMP end parallel docall SYSTEM_CLOCK(time_end)write(*, "('t =  ', F20.5, ' running on ', I3, ' threads,','using time =', I7)") t,M,time_end-time_begint=0.0call SYSTEM_CLOCK(time_begin)!$OMP PARALLEL DO REDUCTION(+:t)do i = 1, Nt = t+float(i)M = OMP_get_num_threads()enddo!$OMP end parallel docall SYSTEM_CLOCK(time_end)write(*, "('t =  ', F20.5, ' running on ', I3, ' threads,','using time =', I7)") t,M,time_end-time_begin!The following codes are not correct.! It is right only under the serialt=0.0call SYSTEM_CLOCK(time_begin)!$OMP PARALLEL DOdo i=1,Na=float(i)t=t+aM=OMP_get_num_threads()enddo!$OMP end parallel docall SYSTEM_CLOCK(time_end)write(*, "('t =  ', F20.5, ' running on ', I3, ' threads,','using time =', I7)") t,M,time_end-time_beginend

下面是我的运行结果:

t =   2000001000000.00000 running on   1 threads,using time =     31
t =   2000001000000.00000 running on   4 threads,using time =   4383
t =   2000001000000.00000 running on   4 threads,using time =     47
t =    540364135587.00000 running on   4 threads,using time =     62

可能是因为电脑配置的原因,我双核四线程测试的并行结果并不好。 有兴趣的小伙伴可以一起做个测试,把你们的结果放上来,看看怎么样

Fortran OMP 随记 (1)相关推荐

  1. Perl特殊变量(flw等翻译)

    NAME     perlvar - Perl 预定义变量 DESCRIPTION   预定义名称     后面列出的名称对 Perl 来说具有特殊含义.     大多数标点名称都有合理的助记方法或类 ...

  2. 粒子群算法Fortran代码(OMP并行)

    粒子群算法可用于解决强非线性优化问题,原理较为简单(参加:最优化算法之粒子群算法(PSO)_青萍之末的博客-CSDN博客_粒子群算法),这里给出Fortran代码实现模块( module POS).该 ...

  3. matlab中的expotest,提高Fortran矩阵指数性能(Expokit比Matlab、Python慢)

    我正在进行一个模拟,其中的瓶颈是执行大量复杂的双精度矩阵指数运算,我发现Fortran(Expokit)对于小矩阵很好,但对于较大的矩阵,它的性能比Matlab或Python差.在 我在下面包含了一个 ...

  4. 陆志勤:记交大数学系二三事

    作者简介:陆志勤,上海交大数学系本科.硕士,柯朗研究所博士,现任教于加州大学尔湾分校数学系,研究方向为微分几何.陆志勤教授不仅研究成果丰硕,而且有许多高水平的数学普及文章和报告,见他的主页 https ...

  5. fortran 语法学习之二

    1.参考offloading_success.c的写法,将C++翻译为fortran的写法如下 参考IBM Docs,第一个参数的默认属性是tofrom !$OMP TARGET MAP (from: ...

  6. cuda FORTRAN 统一内存 managed

    这里是官方的一篇很好的帖子,里面有实例和讲解 managed memory 的使用方法. http://www.pgroup.com/lit/articles/insider/v6n1a2.htm 可 ...

  7. Fortran学习3:控制流2:循环

    一个程序中循环是非常重要的,他会控制变量进行多次相同运算,在数组操作中有着不可替代的地位,今天就走进Fortran的循环,感受一下循环的乐趣. 哦,对了,Fortran程序在stop之前,可以加一个p ...

  8. Fortran简明自学手册

    Fortran简明自学手册 因为CSDN不支持对Fortran代码的高亮显示,这儿贴出 学习手册PDF版百度网盘的下载链接: https://pan.baidu.com/s/1A_6N0TQERg2n ...

  9. Fortran语法汇总(下)(持续更新中)

    目录 第5章 I/O操作 5.1 格式描述符 5.2 OPEN语句 5.3 CLOSE语句 5.4 INQUIRE语句 5.5 READ语句 5.6 WRITE语句 5.7 文件定位语句 5.8 I/ ...

最新文章

  1. linux 内核参数调整说明
  2. 【周末阅读】5G时代新型基础设施建设白皮书
  3. python 数据分析学什么-入门数据分析,我应该学习什么编程语言
  4. 树莓派查看mysql的密码_树莓派安装MySQL 后若何获取登录密码
  5. 从外网给新建的Exchange 2007/2010分发通讯组发邮件失败
  6. 14. 最长公共前缀
  7. win7计算机右键属性桌面进程重启,win7计算机右键属性打不开怎么办
  8. 如何才能成为编程高手?别人都不告诉你的东西,我来说给你听!
  9. java中飞飞检查异常_Springboot项目如何在controller层统一返回数据以及处理异常
  10. 苹果电脑裸机和不裸机的区别_将Kubernetes带到裸机边缘
  11. PNG无损压缩工具Optipng【备忘】
  12. Quanergy联手思科为智能交通创建物联网解决方案
  13. WebDriver API学习记录
  14. PACKAGE-INFO.JAVA 作用及用法详解
  15. dart 爬取 妹子图 豆瓣影评
  16. 使用PS2019制作明信片
  17. 写好一份属于自己的简历
  18. 【保姆级入门系列】阿ken教你学Python(六) ——组合数据类型
  19. linux摄像头驱动调试,linux 2.6.21支持vimcro摄像头驱动的调试过程
  20. Latex Beamer 入门教程

热门文章

  1. 基于javaweb在线投票管理系统ssm
  2. 手机练习linux指令,linux基础命令练习1
  3. win7安装apache服务失败,win7系统安装phpnow服务[Apache_pn]提示失败的解决方法
  4. java毕业设计房车营地在线管理系统Mybatis+系统+数据库+调试部署
  5. nginx配置支持nagios
  6. webpack5 - 之 生产环境的优化(dist压缩包、copy静态资源、缓存、代码切片、多线程打包、抽离重复代码 与 最小化 entry chunk)
  7. python素数最优算法_几种简单的求素数算法的复杂度分析
  8. Elasticsearch 5.5.1 中文/拼音分词 亲测有效
  9. pfSense关于Meltdown(熔毁)和Spectre(幽灵)漏洞修复的说明
  10. 汉诺塔——经典递归问题(c语言实现)