- 1、本文档共43页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于多核的程序优化技术.ppt
基于多核的程序优化技术 内 容 1、编译回顾 2、基于多核的程序优化技术 编译回顾 什么是编译? 用高级语言编制的程序,计算机不能立即执行, 必须通过一个“翻译程序”加工,转化为与其等价的 机器语言程序,机器才能执行。编译过程是指将高级语言程序翻译为等价的目标程序的过程。 编译的作用? 代码优化 代码优化: 指编译程序为了生成高质量的目标程序而做的各种加工和处理。 目的:提高目标代码运行效率 时间效率:减少运行时间 空间效率:减少内存容量 原则: 严格遵循“不能改变原有程序语义”原则。 优化的分类 从优化的层次,与机器是否有关: 独立于机器的优化 与目标机无关的优化,通常是在中间代码上进行的优化。 与机器有关的优化: 充分利用系统资源(指令系统,寄存器资源)。 从优化涉及的范围,可以分为: 局部优化: 是指在基本块内进行的优化。 循环优化: 对循环语句所生成的中间代码序列上所进行的优化。 全局优化: 跨越多个基本块的全局范围内的优化。 并行编译基础 并行编译系统: 就是能够处理并行程序设计语言,能够实现串行程序并行化,具有并行优化能力的编译系统。 并行编译技术的主要内容: 串行程序的向量化和并行化。 向量化: 将串行程序中可向量化部分改写成用向量运算表示的等价程序; 其编译技术已趋成熟 并行化: 将串行程序中可并行化部分改写成在多处理机上并行执行的等价程序; 难度大,涉及数据的私有化、分布和通信,以及并行任务划分等问题。 借助于OpenMP。 多核软件栈 并行编程模型 并行语言 并行编译器 并行语言运行时 可伸缩的执行环境 多核处理器。 普遍并行编程 多核编程和编译是一重大挑战: 一般的程序员经常需要为多核处理器编程,即使对专家来说,并行编程也是一件难事。 如何使并行编程变得容易? 并发控制 并行化。 并发控制 通常会使用锁。——锁不可取。 锁存在根本性的问题: 容易出错: 忽略关键锁、死锁、有限级倒置、护送问题。 难以优化性能: 粗粒度锁会妨碍并行,细粒锁会导致高开销。锁的程序/库线程不能随意构成。 事务型内存: 基本的原子结构:HPCS语言(Fortress、X10、chapel)提供原子结构以取代锁。 多线程的两种方法 本地线程(Native Threading) OpenMP线程 优化关键 选择关键的代码(费时间的代码)进行多线程设计。 如果不能确定程序的主要计算部分(?) 借助于Intel? VTune? Analyzers来进行程序分析。 一些要点 建议使用Intel C++ 编译器进行编译程序。 使用Intel? Math Kernel Library (Intel MKL) ? Intel MKL 函数库中提供了VML 函数, 这些函数可以对超越函数(sin, cos, exp, log等)进行优化。提高程序性能。 现在串行上要调试通过,然后再进行多核多线程的编程工作。 多线程后,用Intel线程监测器进行查找线程错误:资源竞争、线程死锁等问题。 用Intel Thread Profiler工具开定位程序中负载不失衡或开销过大的问题。 首先用OpenMP进行并行编程。 前面讲过,这里不再详细描述。 VTune? Performance Analyzer 6.0 优化过程-Intel VTuneTM的使用 有助于: 找到算法的瓶颈 由数据规划引起的瓶颈 应用结构的瓶颈 系统级以及硬件的瓶颈 术语-热点(hotspot) hotspot是你的代码花费很长时间执行的区域。 通过定位hotspot,VTune性能分析工具可以帮助你分析应用程序的性能。 但是简单的知道hotspot的位置是不够的,你必须知道什么导致hotspot的产生,怎样改进 通过对热区的进一步分析,你可以跟踪关键的函数调用,监控特殊的处理器事件,如cache miss Hotspot与Bottleneck的区别 Bottleneck 是系统中性能受到约束的位置 VTune? Performance Analyzer帮助你找到并删除 Bottlenecks. 找到软件Hotspots 是一个分析方法,帮助你定位 Bottlenecks. 性能优化方法 有三种数据收集器 Sampling 取样 call graph 调用曲线图 counter monitor 计数器监控器 如何识别热点? Sampling Data Collector – The Statistical Solution 描述执行的一个侧面(柱状图) 低开销 Call Graph Data Collector– The Instrumentation Solution 函数的时间信息 函数调用者和被调用者的关系 比sampling的开
文档评论(0)