| 查看: 2528 | 回复: 9 | |||
| 本帖产生 1 个 程序强帖 ,点击这里进行查看 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
coolrainbow木虫 (著名写手)
未来国家冻凉
|
[交流]
【转帖】intel Fortran编译器的一个“危险”优化已有9人参与
|
||
|
源地址:http://hi.baidu.com/coolrainbow/ ... d6c40c5aaf535e.html 今天无意中发现了intel编译器优化的一个问题。我有一个程序,大致是这样 program main integer, parameter :: n = 1000 real(kind = 8) value(n) integer i call computation(value) do i = 1, n write (*,*) value(n) enddo end 其中computation是一个计算量极大的subroutine。利用intel编译编译,分别令n = 1000和n = 5000,不优化和优化执行的时间 n 1000 5000 O0 12min 60min O2 7min 36min 后来,我无意中将输出函数的代码取消了,也即: program main integer, parameter :: n = 1000 real(kind = 8) value(n) integer i call computation(value) end 再次运行,惊现! n 1000 5000 O0 11min30s 59min O2 0.003s 0.003s 看到这种结果,我目瞪口呆,可是当我发现n=1000和5000是执行时间相同,我就猜测computation这个子过程根本就没有执行。那么为什么没执行呢?我猜测:intel编译器在O2过程中,发现后续代码没有用到value这个数组,也没有牵扯到computation函数内部的任何内容,因此干脆将其优化掉了。 这个猜测对吗?决定看一下。在n=1000时候,我将两段代码编译成汇编语言: ifort -O0 -o pO0.s -S foo.f90 ifort -O2 -o pO2.s -S foo.f90 首先观察pO0.s,发现: # -- Begin MAIN__ ......... call foo_mp_computation_ #369.10 ........ # -- End MAIN__ 果然,main中调用了computation函数。再看pO2.s,我们发现: # -- Begin MAIN__ ........ # -- End MAIN__ 确确实实没有发现computation函数调用的汇编代码,哈哈,看来我的推测是对的。 下面这段比较小的代码,大家可以自己用编译器编译一下,我用ifort编译了一下,和上面是一样的,通过汇编语言可以发现,开启O2时,汇编代码的MAIN中没有出现调用perform函数的内容。当然,如果我说的不对,希望大家指教,呵呵。 subroutine perform(value, n) integer n real(kind = 8) value(n) integer i do i = 1, n value(i) = 2.0*i enddo return end subroutine program main integer, parameter :: n = 10 real(kind = 8) value(n) call perform(value,n) end 事实上,这个例子表明,编译器的优化选项确实有一定的危险性,尽管在这个例子中,并没有什么问题,但是在投产级别的软件中启动优化选项时的确要慎重,一般不要启用O3这种激进的优化,即使启用也一定要试验确定代码无误后才行 |
» 猜你喜欢
博士读完未来一定会好吗
已经有6人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
心脉受损
已经有3人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有8人回复
申请2026年博士
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有5人回复
» 本主题相关价值贴推荐,对您同样有帮助:
linux下面如何安装fortran 编译器和编译fortran 程序
已经有8人回复
请热心人能提供一个带imsl库的intel visual fortran编译器下载链接
已经有6人回复
请问安装fortran编译器之前必须先安装visual studio 吗
已经有9人回复
大家都用什么fortran编辑器,推荐一下,最好是能加亮或修改语句颜色的
已经有15人回复
急求可用的fortran编译器
已经有13人回复
求初学者能用的fortran编译器
已经有6人回复
【求助】CUDA支持的Fortran编译器现在只有PGI吗?
已经有5人回复
【求助】FEDORA12下用FORTRAN编写程序需要下一个FORTRAN编译器么
已经有18人回复
【求助】求Fortran90编译器?
已经有11人回复
【求助】求Fortan90或Fortran95编译器,安装PWscf用的。
已经有6人回复
【求助】20金币求VASP编译软件 Fortran编译器和单机安装VASP4.6的过程
已经有4人回复
【求助】win7 的 用什么fortran 编译器啊?【已完成】
已经有14人回复

ifmc1234
木虫 (著名写手)
- 应助: 18 (小学生)
- 金币: 2797.9
- 散金: 6001
- 红花: 14
- 帖子: 1761
- 在线: 572.6小时
- 虫号: 825500
- 注册: 2009-08-10
- 专业: 理论和计算化学
3楼2010-09-12 19:21:14
hakekill
木虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 1709.3
- 帖子: 131
- 在线: 19小时
- 虫号: 246017
- 注册: 2006-04-29
- 性别: GG
- 专业: 水环境与生态水利
2楼2010-09-12 19:06:22
coolrainbow
木虫 (著名写手)
未来国家冻凉
- 程序强帖: 2
- 应助: 1 (幼儿园)
- 贵宾: 0.1
- 金币: 3979.5
- 散金: 10
- 红花: 50
- 帖子: 1137
- 在线: 272.3小时
- 虫号: 239560
- 注册: 2006-04-07
- 性别: GG
- 专业: 理论和计算化学

4楼2010-09-12 21:00:35
maomao1210
金虫 (正式写手)
- 程序强帖: 5
- 应助: 2 (幼儿园)
- 金币: 1431.3
- 散金: 242
- 红花: 16
- 沙发: 1
- 帖子: 991
- 在线: 441.5小时
- 虫号: 253215
- 注册: 2006-05-20
- 性别: MM
- 专业: 考古理论
5楼2010-09-13 09:08:38













回复此楼
