| 查看: 932 | 回复: 1 | |||
[求助]
OpenMP并行测试算例,是什么影响了C和FORTRAN的运行效率?已有1人参与
|
|
最近在看OpenMP并行编程,一开始只是想学习一下C和FORTRAN的并行语法,于是做了一个测试:矩阵相乘C=A*B。其中A,B,C都是一个NxN的方阵。 我用C和FORTRAN分别编写了程序,并加入了OpenMP的并行语法。测试平台如下: OS:Ubuntu 14.04 x86_64 GCC 4.7.3 GFORTRAN 4.7.3 RAM:8GB CPU:Intel(R) Core(TM)2 Quad CPU Q9400 @ 2.66GHz 一共4核心 程序计时测试: time omp.exe -d 1000 其中omp.exe是编译好的程序,1000表示1000x1000方阵(矩阵大小) 测试程序用小规模矩阵测试证明计算结果正确可靠。并行统一采用全部4核心并行,用top命令查看确认满负荷运行。 测试结果: 如果编译时不加入-fopenmp选项,则并行语法不起作用,程序为普通串行程序。此时测试结果为: C: real 0m9.047s user 0m9.034s sys 0m0.004s FORTRAN: real 0m10.022s user 0m10.012s sys 0m0.000s real 一项就是程序实际执行时间。可以看到,虽然C略有优势,但是总体差别不大。 接下来,编译时加入-fopenmp打开并行算法,此时测试结果为: C: real 0m3.128s user 0m12.314s sys 0m0.012s FORTRAN: real 0m5.185s user 0m20.465s sys 0m0.016s C比FORTRAN快了好多,将近一倍的速度差。 之后,我为了进一步确认,编写了第三个程序。在这个程序中,我先用C计算A*B,然后用C调用FORTRAN的subroutine再算一遍,就是C和FORTRAN的混合编程。C和FORTRAN的计算部分用C的time函数分别计时(只能精确到秒)。编译时开启并行算法。此时的测试结果意外变为: C部分:3秒 FORTRAN部分:2秒 程序总运行时间(time命令计时): real 0m5.486s user 0m21.644s sys 0m0.020s 这个结果表明,用C调用FORTRAN模块的效率不仅比原生FORTRAN程序高,甚至高过了原生C程序? 上网查了一下,发现对比C和FORTRAN的讨论很少,深度分析的更少。我很想知道这是为什么。是什么影响了这三个程序的执行效率,我们在编写程序的时候这方面应该注意些什么。 我将我的测试程序的源代码打包附上。里面有三个目录:c,fortran 和 hybrid,分别表示C程序,FORTRAN程序和混合编程程序。欢迎大家测试。 |
» 本帖附件资源列表
-
欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com - 附件 1 : parallel.zip
2014-12-25 15:34:42, 4.45 K
» 收录本帖的淘帖专辑推荐
source |
» 猜你喜欢
三甲基碘化亚砜的氧化反应
已经有4人回复
请问下大家为什么这个铃木偶联几乎不反应呢
已经有5人回复
请问有评职称,把科研教学业绩算分排序的高校吗
已经有5人回复
孩子确诊有中度注意力缺陷
已经有12人回复
2025冷门绝学什么时候出结果
已经有3人回复
天津工业大学郑柳春团队欢迎化学化工、高分子化学或有机合成方向的博士生和硕士生加入
已经有4人回复
康复大学泰山学者周祺惠团队招收博士研究生
已经有6人回复
AI论文写作工具:是科研加速器还是学术作弊器?
已经有3人回复
论文投稿,期刊推荐
已经有4人回复
硕士和导师闹得不愉快
已经有13人回复
» 本主题相关价值贴推荐,对您同样有帮助:
求助:并行计算的首选语言是C,C++还是Fortran?
已经有11人回复
求助:openmp 单节点多核并行效率问题
已经有4人回复
openmp并行程序结果和串行运行的结果完全一致? 另加问segmentation fault occurred
已经有6人回复
经典书籍《数值算法大全(第3版)》:英文原版,含C、C++和Fortran源代码
已经有303人回复

getengqing
木虫 (正式写手)
- 应助: 104 (高中生)
- 金币: 3759.8
- 散金: 30
- 红花: 5
- 帖子: 592
- 在线: 110.5小时
- 虫号: 2986702
- 注册: 2014-02-23
- 性别: GG
- 专业: 自然语言理解与机器翻译

2楼2015-11-18 16:58:19














回复此楼