来源:国外服务器
时间:2021-09-16 10:32:42
在您之前已被浏览:1 次
导读 :目前正在解读《fortran教程用什么书比较好(运行fortran程序的步骤)》的相关信息,《fortran教程用什么书比较好(运行fortran程序的步骤)》是由用户自行发布的知识型内容!下面请观看由(
国外主机 - www.2bp.net)用户发布《fortran教程用什么书比较好(运行fortran程序的步骤)》的详细说明。
笨笨网美国主机,w ww.2 b p .n e t
大家都知道,MATLAB中有个Profiler,可以帮助我们剖析M文件,找出瓶颈所在以便优化。如果优化后在MATLAB中运行时间还是难以忍受,这时如果没有更好的算法供选择,可以考虑用MATLAB的外部程序接口来试试。如果程序中的循环和矩阵操作比较多,同样的程序转成Fortran MEX后速度通常会有10x甚至100x以上的提高。
如果MEX运行时间还比较慢怎么办?能不能类似于MATLAB中剖析M文件那样,对MEX进行剖析并找出瓶颈予以优化呢?几经摸索,笔者终于发现了两个不错的方法。
MEX有C和Fortran两种。下面的方法针对Fortran MEX文件的剖析,对C MEX可能也适用。需要的软件如下:Microsoft Visual Studio 专业版、MATLAB、Intel Visual Fortran、Intel Vtune Performance Analyzer或Intel VTune Amplifier。
方法一:利用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 FilesMATLABR2008abinmatlab.exe 点击“下一步”,选择“采样”,“下一步”,“完成”。只有选“采样”才能附加到MATLAB进程。 在VS右侧的“性能资源管理器”中右击最顶层,选择“附加/分离”,然后从弹出来的对话框中选择MATALB进程,点击“附加”。 在MATLAB中运行你的程序,在程序结束后返回VS,在“性能资源管理器”中右击最顶层,选择“附加/分离”,然后从弹出的对话框中选择MATLAB进程,点击“分离”。 VS会给出性能报告。点击“函数”标签,找到你的MEX文件,点右边的+。此时就会看到详细的分析报告。Exclusive Percent 较大的函数就是你源代码中需要设法优化的目标 这个方法的分析结果只能统计到函数,不能统计代码行的调用次数和耗时。要剖析到代码行可以用下面的方法。
方法二:利用Intel Vtune Performance Analyzer 修改mexopts.bat:该文件默认位置为C:Documents and Settings你的用户名Applilcation DataMathWorksMATLABR2008amexopts.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列中的数字就可以查找代码中的瓶颈所在。 方法三:利用Intel VTune Amplifier 修改mexopts.bat:该文件默认位置在C:Documents and Settings你的用户名Applilcation DataMathWorksMATLABR2008amexopts.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程序代码的剖析了。不足之处大家欢迎指正。谁有更好的方法也欢迎拿出来分享。
笨笨网美国主机,w ww.2 b p .n e t
提醒:《fortran教程用什么书比较好(运行fortran程序的步骤)》最后刷新时间 2025-03-21 11:17:33,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《fortran教程用什么书比较好(运行fortran程序的步骤)》该内容的真实性请自行鉴别。