您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文化 > 哈工大_软件学院_《并行程序设计》课程实验报告之一
《并行程序设计》课程实验报告实验1:Intel多核编译器及Vtune性能分析器姓名***院系软件学院学号***任课教师张伟哲指导教师苏统华实验地点软件学院五楼机房实验时间2015-4-1实验课表现出勤、表现得分实验报告得分实验总分操作结果得分一、实验目的要求:需分析本次实验的基本目的,并综述你是如何实现这些目的的?1.掌握Intel®compiler的特点和基本使用方法;2.掌握在Windows下如何使用Intel®compiler提高应用程序的性能;3.掌握Intel®compiler的主要优化选项和参数的使用二、实验内容该部分填写在实验过程中,你都完成了哪些工作。一、Intel®C++Compiler的使用1.配置IntelC++Compiler(icl)编译器环境设置(VisualStudio*.NET*环境);2、使用MSVC*和IntelC++Compiler编译器分别编译示例程序,并记录程序执行时间,分析实验结果;3、使用高级优化参数(-O3)对程序进行优化编译,记录结果并予以分析;4、使用过程间优化参数(-Qipo)进行程序优化编译,记录结果并予以分析;5、使用配置向导优化(PGO)进行程序优化编译,记录结果并予以分析;6、使用矢量化优化参数(-Qxp)进行程序优化编译,记录结果并予以分析;7、使用多个优化参数(-O3、-Qxp、IPO和PGO)进行程序优化编译,记录结果并予以分析。二、Intel®VTunePerformanceAnalyzer的使用1、关闭病毒扫描和监控程序;2、运行IntelVTunePerformanceAnalyzer,并新建工程项目;3、启动SamplingWizard,选择Windows*/Windows*CE/LinuxProfile,选择Automaticallyadjusttunning;4、选择gzip.exe程序的完整路径,并载入到VTuneSampling中,配置入下图5、采样(通过SamplingWizard建立工程)并分析采样结果;6.在实验报告中记录如下实验结果:①gzip.exe中哪个函数消耗了最多的时间?②gzip.exe中哪个函数CPI最高?③gzip.exe源代码中中消耗时间最长的函数里,哪一行时钟周期最多?④gzip.exe是多线程程序吗?7、采用CallGraph方式(通过CallGraphWizard建立工程)对应用程序gzip.exe进行重新采样并找出关键路径(实验报告中要给出截图),并找出开销时间最大的函数(SelfTime)及函数调用过程(关键路径),并对程序进行分析;三、Intel®MKL数学函数库的使用与性能1、演示原始计算、一级BLAS、二级BLAS、三级BLAS的性能特征和它们之间的差异。2、蒙特卡罗法计算圆周率三、实验结果记录实验结果。1.1(1)略(2)使用cl.exe使用icl.exe(3)使用–O3(4)使用Qipo(5)使用PGO第一次编译使用profile数据再次编译(6)使用–QxP(7)使用多个优化参数1.21.函数deflate消耗了最多的CPU时间2.函数bi_reverseCPI最高3.第679行消耗的时钟周期最多4.是多线程程序,如下图1.3(1)N=1000单线程:双线程:四线程:八线程:十六线程:(2)运行pimonte_rand运行pimonte_VSL四线程:十六线程:问题:1.为什么不是1:1的直接替换rand()函数?VSL库生成随机数使用流的概念,因此不能直接使用原来的函数2.设置blocksize的目的是什么?每次生成blocksize个随机数,避免一次性生成2亿个随机数占用太多内存,影响性能3.参数BRNG和VSL_BRNG_MCG31的作用是什么?表示使用MCG31这个基本随机数生成器来产生随机数。4.对这个程序来说,它们是最好的选择吗?实验程序使用两亿个随机数,使用VSL_BRNG_MCG31计算出的圆周率与使用C语言库函数计算出的结果相差不大,因此可能有更好的随机数生成算法,使得计算结果更加精确。5.能用多线程实现吗?可以,计算不同的随机数互不影响,可以使用多线程并行进行。四、思考题思考题1:IntelC++Compiler的基本特点?IntelC++编译器的主要特点是自动向量化器,它能够生成SSE、SSE2和SSE3的SIMD指令及其适用于Intel无线MMX和MMX2的嵌入式变种。思考题2:如何使用IntelC++Compiler进行应用程序优化,基本步骤包括?在编译时加入优化参数,可以实现应用程序的优化。思考题3:IntelC++Compiler的优化性能参数主要有哪些,其优化性能体现在?(实验结果予以说明)优化参数有-O3,-Qipo,-Qxp,PGO等思考题4:IntelVTunePerformanceAnalyzer的主要功能?①Intel®VTune™PerformanceAnalyzer帮助分析软件和硬件性能瓶颈;②VTunePerformanceAnalyzer可以收集、分析并显示各种性能数据,包括从系统总体性能到您的应用程序中某个特定函数的指令;③昭示潜在的软件性能问题,提供有关改进软件性能的方法和措施的建议。思考题5:如何使用IntelVTune性能分析器找到应用程序gzip.exe中的Hotspot?通过对应用程序运行数据进行采样,可以在Vtune的采样结果页面找到花费执行时间较长的代码区域。思考题6:试述如何使用Callgraph根据总时间找到关键路径;根据占处理器时间找Hotspot根据Callgrath找到各层函数中最耗时的函数,所得即为关键路径,其中占CPU最多的函数即Hotspot.思考题7:分析使用Intel®MKL的主要功能?Intel®MKL包含了一整套高度优化、线程安全的数学函数,面向高性能的工程、科学与财务应用。英特尔MKL的集群版本包括ScaLAPACK与分布式内存快速傅立叶转换,并提供了线性代数(BLAS、LAPACK和SparseSolver)、快速傅立叶转换、矢量数学(VectorMath)与随机号码生成器支持。思考题8:试分析如何使用Intel®MKL库提高系统运算效能,其引入环节应如何选取,并分析多线程对性能影响?使用MKL库可以调用其中的高性能数学函数,以提高系统运算效能。引入MKL库需要根据原来代码的需求,选取适当的函数进行引入。多线程对于性能提升有一定的作用。五、实验心得体会指导教师评语:日期:
本文标题:哈工大_软件学院_《并行程序设计》课程实验报告之一
链接地址:https://www.777doc.com/doc-2581791 .html