基于多核的程序优化技术.ppt_第1页
基于多核的程序优化技术.ppt_第2页
基于多核的程序优化技术.ppt_第3页
基于多核的程序优化技术.ppt_第4页
基于多核的程序优化技术.ppt_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于多核的程序优化技术,多核架构及编程技术,内 容,1、编译回顾 2、基于多核的程序优化技术,编译回顾,什么是编译? 用高级语言编制的程序,计算机不能立即执行, 必须通过一个“翻译程序”加工,转化为与其等价的 机器语言程序,机器才能执行。编译过程是指将高级语言程序翻译为等价的目标程序的过程。 编译的作用?,源程序,编译程序,源程序的中间形式,输入数据,解释程序,输出数据,编译过程的5个基本阶段:,编译过程是指将高级语言程序翻译为等价的目标程序的过程。,代码优化,代码优化: 指编译程序为了生成高质量的目标程序而做的各种加工和处理。 目的:提高目标代码运行效率 时间效率:减少运行时间 空间效率:减少内存容量 原则: 严格遵循“不能改变原有程序语义”原则。,优化的分类,从优化的层次,与机器是否有关: 独立于机器的优化 与目标机无关的优化,通常是在中间代码上进行的优化。 与机器有关的优化: 充分利用系统资源(指令系统,寄存器资源)。 从优化涉及的范围,可以分为: 局部优化: 是指在基本块内进行的优化。 循环优化: 对循环语句所生成的中间代码序列上所进行的优化。 全局优化: 跨越多个基本块的全局范围内的优化。,并行编译基础,并行编译系统: 就是能够处理并行程序设计语言,能够实现串行程序并行化,具有并行优化能力的编译系统。 并行编译技术的主要内容: 串行程序的向量化和并行化。,向量化: 将串行程序中可向量化部分改写成用向量运算表示的等价程序; 其编译技术已趋成熟 并行化: 将串行程序中可并行化部分改写成在多处理机上并行执行的等价程序; 难度大,涉及数据的私有化、分布和通信,以及并行任务划分等问题。 借助于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 计数器监控器,两种跟踪位置的方法,Problem: 我需要知道你在哪花费了多长时间 Statistical Solution: 我每30分钟呼叫你 Instrumentation Solution: 每个地方有一个特殊的电话点,你每到一个地点向我报告,第一种方法:我固定时间间隔给你电话,优点: 低开销: 没有太多的中断 没有建站点的开销 无论你在那里都能精确定位 缺点: 如果你的双手拿满东西,我必须等待 你可能第一次没有听到铃声,所以我不能精确确定我呼叫你时,你在那里,由于你不经常去有一些地方,我可能根本不知道你去过,第二种方法: 当你到了,你打电话给我。,优点: 你到达新的地方我能立刻知道 我知道你在一个地方呆了多长时间 我知道你到达同一个地方多少次 缺点: 不知道你在街道内做了什么 粒度:站点 浪费了大量时间打电话 建立站点扩大了街道空间,如何识别热点?,Sampling Data Collector The Statistical Solution 描述执行的一个侧面(柱状图) 低开销 Call Graph Data Collector The Instrumentation Solution 函数的时间信息 函数调用者和被调用者的关系 比sampling的开销高,三种性能监控方式的比较,VTune Projects(项目),什么是 Project ? Project 由一个或多个Activities组成 什么是Activity ? 包含你应用程序的信息和希望运行的数据收集器信息。,项目的组织如下,My Cool Project 1 Activity 1 ( Call Graph ) Call Graph Results - 3 Apr, 2007,3:30 PM Call Graph Results - 4 Apr, 2007,3:30 PM Activity 2 ( Counter Monitor ) Counter Monitor Results - 3 Apr, 2007,4:30 PM Activity 3 ( Sampling) Sampling Results - 5 Apr, 2007,8:30 AM Run o Clockticks Instructions Retired Run 1 Mispredicted Branches Retired,取样,打断处理器的执行,获得执行上下文 中断可以是周期性的, 如每秒1,000次采样 采样的触发 Event Based Sampling (EBS). 采样事件:处理器相关事件,如 L2 Cache Misses, Branch Mispredictions, Floating-point instructions retired, etc.,举例: gzip 采样分析,介绍 EBS 与 Sampling 用户界面 gzip是一个开放源压缩程序文件,选择一个新的项目,选择“Sampling Wizard”,点击 OK,选择Win32*/Win64*/Linux* Profiling 选择按钮,然后确定,记住:每个活动都有自己的应用/模块轮廓(profile),打开应用程序: gzip.exe 命令行选项: -f testfile.dat 选中 Modify default co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论