并行程序优化面面观2016-1-21详解.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
广东省计算科学重点实验室 并行程序优化面面观 叶纬材,关文超 中山大学广东省计算科学重点实验室 内容提要 影响并行程序运行速度的N方面 加速程序运行的方法 程序优化方法及举例 影响并行程序运行速度的N方面 硬件性能 CPU,加速器 内存速度与容量 I/O 和网络 … 算法性能 计算复杂度、通信复杂度、并发度等 支持环境 OS、MPI软件包、数学库、编译器等 程序实现 后摩尔定理世代的处理器发展趋势: 多核(Muti-core)与 众核(Many-core) 及对程序运行的影响 一个芯片上有多个处理核心 每个核心都有独立的计算单元,缓存 多核处理器:每个核心都是一个完整的CPU 众核处理器:每个核心主要是ALU,控制电路是共享的 配备向量处理单元 多个核心共享相同的内存、网络资源 存在严重资源竞争 抢内存、网络控制器和带宽 负载均衡要求更高 核心越多 != 运行速度越快 Q:什么程序不可以加速? Q:加速程序运行可以不改代码吗? FAQ 加速程序运行的方法1 根据“运行特征”选硬件 什么特征? 浪潮公司的分析特征 加速程序运行的方法2 根据“运行特征”选硬件 什么特征? 如何获取? 性能监控 任务管理器,top PARAMON gprof TAU Vtune Valgrind Vampir… PARAMON Valgrind massif 加速程序运行的方法3 根据“运行特征”选硬件 根据算法造硬件 高性能序列比对专用机(FPGA)中科院 加速程序运行的方法4 根据“运行特征”选硬件 根据算法造硬件 选取合适的支持环境 编译器和编译参数 数学库、MPI库和运行参数 OS裁剪 修改算法 修改程序实现 获取“热点”(运行时间最长的代码段),用gprof,TAU等 热点分析的结果(Vtune) 程序优化方法及举例——编译器的选择 有什么编译器可用? GCC (GNU C Compiler Suite)开源 ICC (Intel C Compiler) 商业 PGI 商业 Open64 开源 … GCC常用编译参数 优化层次 + 处理器型号 + 特殊要求 -O3 –march=native -flto -march=native -msse2 -ftree-loop-linear -ftree-vectorize -fforce-addr -mfpmath=sse 练习一:简单矩阵乘法 给定两个稠密 N 阶方阵 A, B, 求 C = A*B 请用 C 语言实现 请用 gcc 编译器配合不同的参数进行编译,单进程运行,比较运行时间 参数1:gcc matrixM.c -o matrixM 参数2:gcc matrixM.c -o3 matrixMo3 参数3:gcc matrixM.c -o3 -march=core2 matrixMo3m 取 N = 16384 算法伪代码 程序优化方法及举例——削弱内存墙的影响 内存墙,指的是内存性能严重限制CPU性能发挥的现象。(百度) CPU比内存速度快太多了 如果内存速度与CPU一样,太贵了,功耗太高了 多核世代,出现“抢内存”(fake sharing) CPU “停工待料” 内存的性能指标主要有“带宽”(Bandwidth)和“延时”(Latency)——与网络性能指标一样 如何削弱内存墙的影响?合并内存访问 程序优化方法及举例——削弱内存墙的影响 Prof. Mike Giles, cuda lectures, Oxford Univ. 练习二:块状矩阵乘法 给定两个稠密 N 阶方阵 A, B, 求 C = A*B 请用 C 语言实现 请用 gcc 编译器配合不同的参数进行编译,单进程运行,与练习一比较运行时间 参数1:gcc matrixM.c -o matrixM 参数2:gcc matrixM.c -o3 matrixMo3 参数3:gcc matrixM.c -o3 -march=core2 matrixMo3m 取 N = 16384,每一块的大小为32*32 程序优化方法及举例——向量化(SIMD) SIMD SSE/SSE2 Toolbox Solutions for Real-Life SIMD Problems Intel 2001 程序优化方法及举例——向量化(SIMD)1 为何要向量化? 后摩尔定律世代提升处理器性能的主要途径: 多核化 + 向量化 Intel CPU最主要的计算能力来源

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档