大家都知道,MATLAB中有一个Profiler,能够协助大家剖析M文档,找到提升的短板。假如提升后MATLAB中的运转時间无法忍受,要是没有更强的优化算法可选择,能够考虑到应用MATLAB的外界第三方接口开展试着。假如程序流程中有很多循环系统和矩阵计算,那麼同一程序转换成Fortran MEX后,速率应该会提升10倍或者100倍。

假如MEX运作迟缓该怎么办?能否像在MATLAB中剖析M文档一样剖析MEX,找到短板开展提升?通过几回探寻,小编总算找到2个好方法。

MEX有c和Fortran二种语言表达版本号。下列方式致力于剖析Fortran MEX文档,也可以适用C MEX。所需手机软件如下所示:微软公司Visual Studio标准版,MATLAB,intelVisual Fortran,intelVTune特性解析器或intelVtune放大仪。

方式1:应用Visual Studio的特性专用工具。

在MATLAB选用mex编译程序获得MEX文档(后缀名.mexw32或.mexw64)。留意要用-g电源开关来编译程序。比如:mex -v -g source.F。仅有那样才分析时才会剖析在其中启用的各subroutine。开启VS,先后挑选专用工具->特性专用工具->特性指导从下拉列表中挑选“剖析动态链接库(.DLL)”,点一下“下一步”点一下“DLL途径”输入框上方的按键,从下边文件属性框挑选“全部文档”,寻找要分析的MEX文档,点一下“明确”。还可以立即键入途径。比如:C:\……\source.mexw32点一下“可执行程序途径”输入框上方的按键,寻找matlab.exe文件,点一下“明确”。与上一步一样,也可同时键入途径。比如:C:\Program Files\MATLAB\R2008a\bin\matlab.exe点一下“下一步”,挑选“取样”,“下一步”,“进行”。仅有选“取样”才可以额外到MATLAB过程。在VS右边的“特性任务管理器”中右键最高层,挑选“额外/分离出来”,随后从弹出窗口的提示框中挑选MATALB过程,点一下“额外”。在MATLAB中运作你的程序流程,在程序流程完毕后回到VS,在“特性任务管理器”中右键最高层,挑选“额外/分离出来”,随后从弹出来的提示框中挑选MATLAB过程,点一下“分离出来”。VS会得出特性汇报。点一下“涵数”标识,找到你的MEX文档,点右侧的 。这时便会见到具体的数据分析报告。Exclusive Percent 比较大的涵数便是你源码中必须想方设法提升的总体目标

该方式的剖析結果只有统计函数,不可以统计代码行的加载频次和時间耗费。要分析编码行,能够应用下列方式。

方式2:应用intelVtune特性解析器。

改动mexopts.bat:该文件默认设置部位为C:\Documents and Settings\你的登录名\Applilcation Data\MathWorks\MATLAB\R2008a\mexopts.bat。寻找并开启该文件,在文档中寻找 set OPTIMFLAGS= …… 在之后加上 -Zi。用-g电源开关mex你的Fortran MEX源代码。如 mex -v -g source.F开启Intel Vtune Performance Analyzer(IVPA)并创建剖析新项目。在IVPA中挑选File-New Project,挑选Quick Performance Analysist Wizard,点一下OK。在弹出来的提示框中,选定No Application To Launch。这时先不必点Go。开启MATLAB,运作程序流程启用你需要分析的MEX文档。运作后回到IVPA,点一下GO。IVPA会对CUP中使用的全部过程开展剖析,因此剖析是尽量少开别的程序流程。默认设置的剖析时间20秒。假如觉得時间不足,能够在Tuning Browser中右键项目规划,挑选Properties,随后改动Duration值。IVPA剖析进行后,从Process目录中寻找MATLAB双击鼠标。一层层的双击鼠标进到,直至找到你的MEX过程。双击鼠标进到,随后点一下鼠标右键,挑选View As – Horizontal Bar Chart,就可以寻找最用时的程序段。双击鼠标程序段的名字,便会调研源代码。根据右侧的Clockticks和Instructions Retired列中的数据就可以搜索编码中的短板所属。

方式3:应用intelVTune放大仪。

改动mexopts.bat:该文件默认设置部位在C:\Documents and Settings\你的登录名\Applilcation Data\MathWorks\MATLAB\R2008a\mexopts.bat。寻找并开启该文件,在文档中寻找 set OPTIMFLAGS= …… 在之后加上 -Zi。用-g电源开关mex你的Fortran MEX源代码。如 mex -v -g source.F开启Intel VTune Amplifier 。挑选File-New-Project;Project Name栏中给project取个名字,例如叫MexProfile;Location栏是剖析結果储存部位,维持默认设置或选一个部位;点一下下边的Create Project按键。在弹出来的xxx – Project Properties提示框中的Target控制面板中,Target type选Attach to Process;随后到Windows资源管理器中查一下MATLAB的PID(要是没有运行MATLAB,先运行;假如资源管理器中沒有PID,查看更多菜单栏-挑选列-选定PID),键入PID后点一下OK。点一下菜单栏上的New Analysis图吧(向右箭头);在MATLAB中运作包括要分析MEX的程序流程;随后点一下AM中的Start逐渐分析。分析一段时间或程序流程完毕后点一下Stop,手机软件会全自动剖析分析結果。 剖析进行后转换到Bottom-up控制面板,双击鼠标你需要查询的涵数名字,就可以查询各编码行的用时剖析結果。寻找短板开展提升。

纯私人的方式也许并不是最好是的,但起码能够完成对MEX编程代码的剖析。欢迎您克服缺点。有更强办法的热烈欢迎共享。

评论(0条)

刀客源码 游客评论