网站大量收购独家精品文档,联系QQ:2885784924

《并行程序设计》实验指导书之一.docxVIP

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

《并行程序设计》实验指导书之一

实验1.1使用intel编译器生成优质代码

实验目的

1.掌握六步骤的优化过程;

2.掌握利用编译器选项来优化代码;

3.掌握针对不同CPU使用自动向量化进行性能调优;

实验要求

1.熟练掌握C语言;。

2、熟练掌握Intel编译器的使用;

3、熟练掌握nmake程序管理工具。

实验内容

实验步骤:

步骤一:不使用优化技术构建应用程序

1.如果测试的计算机支持TurboBoost或Hyper-Threading技术,最好先关闭它们,否则CPU时钟频率会动态调整。在bios里关闭:重启计算机,开机时按F2进入BIOS设置页面,在advanced里找到cpu电源设置或speedup设置,如果没有,说明计算机不支持TurboBoost及Hyper-Threading,那就不需要修改。

2.在所有程序-IntelParallelStudioXE2015中,打开Intel编译器的命令行提示符窗口。

3.新建一个文件夹,将code1.1文件夹中的代码拷贝进去。

4.用Intel编译器构建intel.noopt.exe应用程序(先清理,再编译):

nmakeclean

nmakeTARGET=intel.nooptCFLAGS=/Od

5.运行intel.noopt.exe程序并且记录执行结果,选取最短时间作为结果进行记录。

步骤二:使用通用优化

1.参考上述命令,用Intel编译器构建应用程序(提示:通用优化的CFLAGS选项是/O1)

2.执行intel.01.exe应用程序并记录运行结果

3.用/O2、/O3、/Ox选项重复1、2步

步骤三:使用处理器相关的优化

在这个步骤中使用自动向量化选项来构建样例应用程序。

1.不使用选项,构建和运行应用程序,这时的结果和步骤二一样。

增加Qvec-到CFLAGS选项中以关闭自动向量化

4.(可选)通过产生向量化报告来查看向量化的差异(CFLAGS为/Qvec-report:2)

增强自动向量化选项

5.使用各种/Qx选项(SSE、SSE3、SSSE3、SSE4.1、SSE4.2、及AVX),

nmakeclean

nmakeCFLAGS=-/QxSSE2target=intel.SSE2

产生可移植的应用,并记录实验结果。

6.使用QaxAVX选项重新构建应用程序

nmakeclean

nmakeCFLAGS=-/QaxAVXtarget=intel.axAVX

7.运行程序,即使所用的CPU不支持AVX,程序也能正常运行,记录实验结果。

步骤四:增加过程间优化

过程间优化(InterproceduralOptimization,IPO)完成对应用程序的静态的拓扑分析。使用/Qip选项将使得分析工作限于同一个源代码内部,使用/Qipo选项则会在命令行列出的所有源代码中展开分析。IPO分析整个程序,对于包含许多频繁调用的中小型函数的程序特别有效。IPO消除或减少重复的计算、低效的内存使用、简化循环。也开展其他优化,例如别名分析、死函数的消除、无用变量的消除、内联函数。IPO能重新编排函数以获得更好的内存布局和局部性。

过程间优化

1.使用/Qipo选项来构建和运行应用程序:

2.记录运行时间

3.重复1、2步,添加使用的平台上最高级别的自动向量化(SSE2、SSE3、SSSE3、SSE4.1、SSE4.2和AVX),记录运行时间

步骤五:性能测评指导的优化

到目前为止,前面的所有优化都是静态的,即分析了代码但是没有运行它们。性能测评指导的优化PGO(Profile-GuidedOptimization)使用动态的方法。用典型数据来运行未经优化的代码一次或多次,每次都收集性能测评的信息。这些测评的信息接着被用于优化以产生最终可执行文件。

使用PGO的3个步骤

打开PGO功能

nmakereallyclean

nmakeCFLAGS=/Qprof-genTARGET=intel.pgo.gen

执行intel.pgo.gen.exe程序,记录实验结果

在所运行的程序的目录下查看,应当能看到刚创建的.dyn文件

重新构建应用程序,告诉编译器需要使用刚才产生的动态信息:

nmakeclean

nmakeCFLAGS=/Qprof-useTARGET=intel.pgo

4.运行intel.gpo.exe,记录实验结果,对比一下性能

步骤六:自动向量化的调优

编译code1.2中的test.cpp程序,要求自动向量化器产生报告:

icl/ctest.cpp/Qvec-report2/c

查看项目目录下的.optrpt文件,找到循环没有向量化的提示信息。

使用GAP,看看能不能提供一些其他

文档评论(0)

155****4925 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档