第A章OpenMP并行程序设计.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第A章OpenMP并行程序设计.ppt

5.A.1多核出现的背景 处理器的频率 以前是处理器性能的唯一标尺 在摩尔定律指引下保持高速发展 CPU速度每18个月提高一倍 而价格下降为原来的二分之一 主频提高遭遇瓶颈 由于晶体管数量倍增,会导致硅芯片所需要的电能、耗费功率大幅提升,甚至成几何级数的增加 3GHz成为了无法逾越的一道坎 Intel发布3.8GHz的产品,宣布停止4GHz的产品计划 AMD频率超过2GHz以后无法大幅度提升 5.A.1 双核处理器的发展 高端的RISC处理器中 在上个世纪末,HP和IBM已经提出双核处理器的可行性设计,成功推出了拥有双内核的HP PA8800和IBM Power4处理器 Sun在2003年10月微处理器论坛中,发表双核心UltraSPARCⅣ处理器 x86平台 AMD和Intel在2004年公布了各自的双核计划 AMD率先在服务器和工作站领域引入双核架构 Intel率先在台式机领域引入双核技术! 多核出现的背景(续) 5.A.1多核体系结构 多核 片上多处理器CMP(Chip Multiprocessor) 在一块硅晶片上,集成多个计算核心 每个计算核心都是一个完整而独立的计算单体 核之间通过特定的硅晶片内通信方式互连 例如总线、共享缓存 考虑多个处理核之间的功能分工、通信方式、存储层次和制造工艺等约束 CMP最早出现在1991年的Datawave结构中 设计可并行的处理器来解决视频处理中的大量数据计算 根据处理器中各个核类型的不同,多核芯片可以分为 同构多核体系(Homogeneous CMP) 异构多核体系(Heterogeneous CMP) 5.A.1 CPU的主要性能指标 前端总线(FSB) 总线频率,CPU与内存直接数据交换速度 数据传输最大带宽取决于所有同时传输的数据的宽度和传输频率 前端总线的速度指的是数据传输的速度 CPU的位和字长 字长 CPU在单位时间内(同一时间)能一次处理的二进制数的位数 目前主流是32位,也有64、128位 字节和字长的区别 8位称为一个字节 字长的长度是不固定的 对于不同的CPU、字长的长度也不一样 5.A.1 CPU的主要性能指标-缓存 内存是非常慢的期间,需要缓存(cache)加速 L1 Cache(一级缓存) CPU第一层高速缓存 可分为数据缓存和指令缓存 L2 Cache(二级缓存) L3 Cache(三级缓存) 一般用于服务器 5.A.1多核的处理器结构 5.A.1 四核处理器的典型结构(同构) 左图:每二核共享二级缓存 右图:四核共享二级缓存 5.A.2 并行编程模型——多核平台下的并行开发 双核甚至多核处理器需要多线程化 大多数应用用C或C++编写的 根据单线程设计 多线程优化 需要耗费大量劳动力的改写过程 重头再来 多核迫使软件开发朝并行化方向发展 RISC架构的多核系统上已经形成了比较成熟的多线程系统并行处理能力 在x86架构下,应用程序的开发者还停留在单线程的开发模式下。 5.A.2多核程序的挑战 程序是否具备扩展性 程序能否更精确 产品是否易于编程和维护 并行开发模式 打破串行的编程过程“一步一步”的模式 首先要进行分析和拆解 然后才能进行程序的编写 程序设计并行规划 为双核,四核、八核、十六核等更多核芯规模开发 针对多核的开发过程与传统的开发模式的不同 需要性能优化工具 5.A.2并行编程模型 现状 科学计算 部分程序员可以进行并行编程,大部分程序是MPI程序,OpenMP也有一定比例 服务器 服务器程序大部分采用多线程(PThread, Java Thread或Win32 Threads )模型 桌面系统 除少数应用(图像处理,3D制作)外,大部分程序是串行程序 5.A.2并行编程模型 多内核处理器所带来的变化 科学计算 MPI程序可以在多内核系统上直接执行(优化MPI) OpenMP将更加流行 如何同时支持多内核共享内存系统和集群系统? 服务器 原有的多线程程序可以直接执行 桌面系统 OpenMP对于大多数桌面系统程序员来说过于复杂,对新的高效并行程序设计语言有强烈需求 5.A.2自动并行化 广义的自动并行化,指开发人员无需考虑并行性,仅设计串行程序,由软件或硬件系统自动将串行程序转换为并行程序 编译器辅助的自动并行化 硬件推测执行 并行库 5.A.2自动并行化 编译器辅助的自动并行化 自动向量化很成功 线程级的自动并行化效果不够理想 4处理器的SMP系统上平均加速比30% 多内核处理器系统的出现 降低了对自动并行化技术的期望,4 core 30%可以接受(没有其它编译优化可以提高30%的性能) 并行库 INTEL MKL,SCALAPACK,PNL等,将优化算法在函数库中实现 应用范围依然有限 5.A.2多核与并行的关系 可以在多核平

文档评论(0)

我的文档 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档