并行程序优化面面观2016-1-21.ppt_第1页
并行程序优化面面观2016-1-21.ppt_第2页
并行程序优化面面观2016-1-21.ppt_第3页
并行程序优化面面观2016-1-21.ppt_第4页
并行程序优化面面观2016-1-21.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、综合观并行程序优化,叶,关,中山大学计算科学广东重点实验室,执行摘要,影响并行程序运行速度的N种加速程序运行方式,程序优化方法及实例,影响并行程序运行速度的N种方式,硬件性能CPU,加速器内存速度和容量I/O和网络算法性能,计算复杂性,通信复杂性,并发性等支持环境,如操作系统,MPI软件包,数学库, 编译器等程序,后摩尔定理时代处理器的发展趋势:多核和众核及其对程序运行的影响,一个芯片上有多个处理核,每个核有一个独立的计算单元,缓存多核处理器:每个核是一个完整的中央处理器多核处理器:每个核主要是算术逻辑单元,控制电路与矢量处理单元共享。 多个内核共享同一个内存,为了抢占内存,网络资源存在严重的

2、资源竞争。网络控制器和带宽负载平衡需要更多内核!=运行速度越快,问:什么程序不能加速?问:你能在不改变代码的情况下加速程序吗?常见问题,加速程序运行的方法1,根据“运行特性”选择硬件的哪些特性?一、Inspur公司的分析特点、加速程序运行的方法2、根据“运行特点”选择硬件的哪些特点?如何得到它?性能监控任务管理器,gproftau vtune valgrind vampir,param on,valgrind massif,方法3加速程序运行,方法4根据“运行特性”选择硬件并根据算法建立硬件高性能序列,比较中国科学院专用机(FPGA),根据“运行特性”选择硬件并选择合适的支持环境编译器,编译参

3、数数学库、MPI库和操作参数OS裁剪修改算法,修改程序以获得“热点”(运行时间最长的代码段),使用gprof,tau,热点分析(Vtune)的结果、程序优化的方法和示例编译器的选择,有哪些可用的编译器?gcc (GNU C编译器套件)开源ICC(英特尔C编译器)商用PGI商用Open64开源GCC通用编译参数优化级处理器模型特殊要求-O3 March=native-flto-March=native-msse 2-FTR EE-Loop-Linear-FTree-矢量化-FORCE-Addr-MFP Math=SSE,练习1:简单矩阵乘法,给定两个稠密的N阶方阵A和B,求C=A*B,请使用C语

4、言,请使用GCC编译器用不同的参数编译,并在单个中运行比较运行时间参数1: gcc matrixm.c-o matrixm参数2: gcc matrixm.c-O3 matrixmo3参数3:gcc matrixm . c-O3-March=core 2 matrix mo3m,N=16384。算法伪代码、程序优化方法和实例削弱了内存墙的影响,内存墙是指内存性能严重限制了CPU性能的现象。(百度)中央处理器比内存快得多。如果内存速度和中央处理器一样,那就太贵了,功耗也太高了。在多核一代中,“假共享”CPU“停机”内存的性能指标主要包括“带宽”和“延迟”。如何削弱内存墙对网络性能指标的影响?合并

5、内存访问、程序优化方法和示例以削弱内存墙的影响,Mike Giles教授,Cuda讲座,牛津大学,练习2:块矩阵乘法,给定两个密集的N阶正方形A,B,C=A*B,请使用C语言,请使用gcc编译器用不同的参数编译,并在单个进程中运行。与练习1相比,运行时间参数1: gcc matrixm.c-o matrixm参数2:gcc matrix m . c-O3 matrix m . c-O3参数3:gcc matrix m . c-O3-March=core 2 matrix mo3m,N=16384,每个块的大小为32*32。程序优化方法和示例矢量化(SIMD),SIMD,SSE/SSE 2真实S

6、IMD问题工具箱解决方案英特尔2001,程序优化方法和示例矢量化(SIMD)1,为什么要矢量化?后摩尔定律时代提高处理器性能的主要途径:多核矢量化英特尔中央处理器最重要的计算能力来自矢量化技术的实现:上交所、AVX、图形处理器.算法并发性决定了程序矢量化的性能。性能=负载/(负载空闲)具有高并发性和较少的空闲,程序优化方法和示例矢量化(SIMD)2。例如:给定一个N*N的二进制矩阵a,以子矩阵a1:n-1和1:n-1的每个元素为中心,将九个正方形的元素相加。程序优化方法和示例矢量化(SIMD)3,串行简单算法SIMD算法一次计算几个九个正方形,并使用一个32位整数来表示同一行中的32个正方形。

7、首先,根据列将列求和的结果分成四组,然后对列求和的结果进行移位和求和。算法细节作为练习3供大家练习。练习3:对九个正方形的和进行矢量化,给出一个N*N的二进制矩阵,并以子矩阵A1:N-1和1:N-1的每个元素为中心,找出九个正方形的元素和矩阵B。请用C语言实现一个32位并行算法。使用gcc编译器用不同的参数进行编译,在单个进程中运行,并比较运行时间参数1: gcc matrixm.c-o matrixm参数2:gcc matrix m . c-O3 matrix m 3参数3:gcc matrix m . c-O3-March=core 2 matrix mo3m,N=100000,a的初始值随机生成。程序优化方法和示例矢量化(SIMD)4、矢量化效率高,应选择数据结构,程序优化方法和示例矢量化(SIMD)5、自动矢量求和由编译器实现,串行数据依赖性小。例如,下面的代码依赖于数据,不能自动向

温馨提示

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

评论

0/150

提交评论