作者Geigemachen ()
看板CSSE
标题[疑惑]双核心程式执行一天以後越跑越慢..
时间Mon Dec 21 01:23:17 2009
我分享使用Intel Visual Fortran Compiler Professional试用版
进行编译双核心程式的心得与疑难。
不用修改原始程式码,装对compiler还有其他软体元件,在编译时加对正确的选项参数
就好了。
最令我困惑的现象是,前几个小时CPU使用率满载100%,程式执行得很快,
连续执行一天以後就慢得几乎不会动,删除暂存档,重开机,或是关机几小时冷却
再开机,还是快不起来。
步骤与现象:
1.首先安装Microsoft visual studio (我用2003安装不顺,2005则很快成功)
2.下载Intel Visual Fortran Compiler Professional,试用期30天
http://software.intel.com/en-us/articles/intel-visual-fortran-compiler-
professional-edition-for-windows-evaluation/
3.启动compiler
(1)视窗版:比较容易,省略不提
(2)命令列版:
a)点选程式集中的Fortran Build Environment for applications,
(省略此动作,直接进入命令列编译,会让link失败,如同Microsoft visual
studio安装部份失败时却仍然安装且启动compiler时所产生的错误讯息)
画面跳入命令列以後到C:\Program Files\Intel\Compiler\11.1\051\bin\ia32
目录找到ifort.exe
4.编译选项
使用ifort编译双核心程式,加入正确的选项。我选的命令与选项如下:
(连着不要换行:)
ifort [目的档名不加.exe] /O3 /Qparallel /Qpar-runtime-control
/Qdiag-enable:par [Fortran来源档名,含副档名]
最佳化程度选项:
/O3 很积极最佳化最快运算速度,即使对某些程式而言速度不会更快,
仍增大程式码最佳化以进行加速
/O2 最佳化最快运算速度,对某些程式而言速度不会更快,
不增大程式码也不再继续最佳化
/Qparallel 指定编译时把回圈运算分给不同的多核心CPU进行自动平行运算
/Qpar-runtime-control 让编译器产生执行控制码,进行有效的自动平行运算
/Qdiag-enable:par 显示编译时有关平行运算部分的细节与诊断讯息。
系统预设不显示,无法在编译时被通知是否有进行平行化。
以上选项参数的细节可用ifort/help查讯
5.编译後的速度与可携性
我把编译成功的双核心.exe在安装Intel compiler的电脑#1上执行成功,
速度颇快,是单核心程式执行速度的2-5倍。CPU使用率也从50%上升到100%。
信心满满地移植到另一台的双CPU电脑电脑#2执行,却发现.exe的可携性不好,
程式执行会中断,出现"找不到libiomp5md.dll"的错误讯息。
我就把搜寻电脑
#1compiler资料夹,找到这个档案:
C:\Program Files\Intel\Compiler\11.1\051\bin\ia32\
libiomp5md.dll
把它拷贝到电脑#2上.exe的同一个资料夹,从此这个恼人的错误讯息就消失了。
电脑#2也享受到了类似的加速效果,CPU使用率也从50%上升到100%。
6.超过24小时CPU使用率达到100%的後果:执行速度慢到不会动!?
因为研究工作需要,我需要在两台电脑上连续执行大量程式,常常超过24小时。
我在电脑#1 #2 上都执行双核心程式,超过24小时CPU使用率达到100%,
程式执行速度逐渐变慢,一天後比刚开机就执行的单核心的程式还慢
(同样的程式,单核心程式要连续3-4天以上不关机,才会变得这麽慢)。
(A)重新启动系统,清除暂存档
为了厘清系统记忆体资源配置造成的影响,我就清除系统暂存档(发现暂存档不大),
两台电脑都重新开机,重新执行一样的程式,结果还是慢到几乎不会动。
(B)关机冷却几小时,再重新启动系统
为了厘清硬体上电路过热造成的影响,我就把电脑关机冷却几小时,拿去寒风
比较强的地方冷却,本来很热的风扇与CPU区域也被冷却得凉飕飕的,再重新开机,
执行同样的程式。但是系统仍然变得很慢,慢到几乎不会动。
这就令我很困惑了,怎麽连续执行1天以前,与1天以後,速度可以差到这麽多?
是软体还是硬体上的问题呢?有没有人编译双核心程式时有解决这种变慢现象的
好方法呢?
多谢各位指点了,欢迎分享程式执行加速的心得
--
鱼防水,无法呼吸啊......
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.151.62
--
上月球!月球是中国人吴刚不可分割的一部分
抓嫦娥!此女意图分裂中国领土脱离中国掌握
杀玉兔!玉兔为资产阶级之玩物!日帝之玩偶!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.151.62
※ 编辑: Geigemachen 来自: 118.160.151.62 (12/21 01:15)
※ 编辑: Geigemachen 来自: 118.160.151.62 (12/21 01:22)
--
--
Urah, hanevel, v'chinor!
A-irah shahar!
琴瑟啊,觉醒吧!
吾将唤醒清晨!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.160.151.62
※ 编辑: Geigemachen 来自: 118.160.151.62 (12/21 01:23)
1F:推 TroyLee:搞不好是 OS 的问题...换 Linux 看看? 12/21 02:04
好建议,我学长也早有这个打算;为了顾及其他使用者,只好让Linux与Windows共存
我去查查Windows与Linux双系统并存的风评如何,说不定划得来.
Windows的弱点就是跑久了容易当机,或是程式几乎不执行,变慢
※ 编辑: Geigemachen 来自: 118.160.151.62 (12/21 02:11)
※ 编辑: Geigemachen 来自: 118.160.151.62 (12/21 02:19)
2F:推 leicheong:也建议用process explorer看handles和各objects数有没有 12/21 08:23
3F:→ leicheong:不正常增加, r/w/o delta是不是在正常范围内等 (在程式 12/21 08:24
4F:→ leicheong:执行初期撷取数据来比较就可以了) 12/21 08:25
好建议,我查了这个软体发现蛮详尽的,多谢你了
※ 编辑: Geigemachen 来自: 118.160.151.62 (12/21 13:11)