作者micklin (离乡背井的米克)
看板CSSE
标题Re: [疑惑]双核心程式执行一天以後越跑越慢..
时间Mon Dec 21 15:01:03 2009
※ 引述《Geigemachen ()》之铭言:
: 我分享使用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天以上不关机,才会变得这麽慢)。
所以你的程式是本来就会越跑越慢?
如果你的程式跑到一定的步骤後就会变慢,
那你加速後, 本来3-4天会变慢的, 1天以後就变慢, 听起来很合理....
作业系统是?
[以下恕删]
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.237.96