多核架构及编程技术.ppt_第1页
多核架构及编程技术.ppt_第2页
多核架构及编程技术.ppt_第3页
多核架构及编程技术.ppt_第4页
多核架构及编程技术.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

多核架构及编程技术 魏博文数计学院学号 1315063011 多核所属体系 并行计算体系 并行计算机是由一组处理单元组成的 通过相互之间的通信与协作 以更快的速度共同完成一项大规模的计算任务 20世纪60年代初 晶体管以及磁芯存储器的出现 处理单元变得越来越小 存储器也更加小巧和廉价 这些技术导致了并行计算机的出现 这一时期的并行计算机多是规模不大的共享存储器系统 例如IBM360 二十世纪70年代末期 同一个处理器开始设置多个功能相同的功能单元 流水线技术也出现了 这些并行特性的应用大大提高了并行计算机系统的性能 并行计算机的分类 Flyrm根据指令流和数据流的不同组织方式 把计算机系统的结构分为以下4类 单指令流单数据流 SingleInstructionstreamSingleDatastream SISD 单指令流多数据流 SingleInstructionstreamMultipleDatastream SIMD 多指令流单数据流 MultipleInstructionstreamSingleDatastream MISD 多指令流多数据流 MultipleInstructionstreamMultipleDatastream MIMD 指令流是指机器执行的指令序列 数据流是指指令流调用的数据序列 包括输入数据和中间结果 并行是个广义的概念 并行是一个广义的概念 根据实现层次的不同 可以分为几种方式 从系统结构的角度 并行计算机目前有以下几种 1 分布式存储器的SIMD处理机 含有多个同样结构的处理单元 PE 通过寻径网络以一定方式互相连接 2 向量超级计算机 共享式存储器SIMD 集中设置存储器 共享的多个并行存储器通过对准网络与各PE相连 3 对称多处理器 SMP 一个计算机上汇集了一组处理器 各处理器之间共享内存子系统以及总线结构 4 并行向量处理机 PVP 有专门定制的向量处理器 通过向量处理和多个向量处理器并行处理两条途径来提高处理能力 5 集群计算机 随着微处理器和网络技术的进步而逐渐发展起来的 它主要用来解决大型计算问题 是一种并行或分布式处理系统 由很多连接在一起的独立计算机组成 像一个单集成的计算机资源一样协同工作 6 网格计算是伴随着互联网技术而迅速发展起来的 专门复杂科学计算的新型计算模式 多核处理器 并行计算机与超级计算机技术 为多核计算机的出现奠定了基础 集成电路的进步也为多核芯片提供了物理条件 多内核是指在一枚处理器中集成两个或多个完整的计算引擎 内核 多核技术的开发源于工程师们认识到 仅仅提高单核芯片的速度会产生过多热量且无法带来相应的性能改善 先前的处理器产品就是如此 他们认识到 在先前产品中以那种速率 处理器产生的热量很快会超过太阳表面 即便是没有热量问题 其性价比也令人难以接受 速度稍快的处理器价格要高很多 现代计算机 转向多内核方向发展的原因 从功耗角度看多核 美国IT公司多核处理器的发展 多核处理器架构下几个显著的优点 控制逻辑简单 相对超标量微处理器结构和超长指令字结构而言 单芯片多处理器结构的控制逻辑复杂性要明显低很多 高主频 由于单芯片多处理器结构的控制逻辑相对简单 包含极少的全局信号 因此线延迟对其影响比较小 因此 在同等工艺条件下 单芯片多处理器的硬件实现要获得比超标量微处理器和超长指令字微处理器更高的工作频率 低通信延迟 由于多个处理器集成在一块芯片上 且采用共享Cache或者内存的方式 多线程的通信延迟会明显降低 这样也对存储系统提出了更高的要求 低功耗 通过动态调节电压 频率 负载优化分布等 可有效降低CMP功耗 设计和验证周期短 微处理器厂商一般采用现有的成熟单核处理器作为处理器核心 从而可缩短设计和验证周期 节省研发成本 多核架构下的编程技术 多核架构下的多线程程序设计与传统的单核下的多线程程序设计有着一定的差别 在单CPU下 是多个线程在同一个CPU上并发地执行 而在多核下 则是由多个线程在多个核上并行地执行 目前的程序设计中对于多核的利用并没有达到预期的效果 要做到这一点 就必须将应用程序看作是众多相互依赖的任务的集合 将应用程序划分成多个独立的任务 并确定这些任务之间的相互依赖关系 这就称为分解 decomposition 分解的类别 任务分解 对应用程序根据其执行的功能进行分解的过程称为任务分解阳 taskdecomposition 根据这种方法 就能够对众多的独立的任务进行分类 如果其中两个任务能够同时运行 那么开发人员就应该对其进行调度 形成二者之间的并行执行 数据分解 数据分解也称为数据级并行 data levelparallelism 是将应用程序根据各个任务所处理的数据而非按任务来进行分解的方法 即以数据为中心 一般而言 能够按照数据分解方式进行分解的应用程序都包含多个线程 这些线程分别对不同的数据对象执行相同的操作 数据流分解 在很多情况下 当对一个问题进行分解时 关键问题不在于采用一些什么任务来完成这个工作 而在于数据在这些任务之间是如何流动的 这个时候就要采用数据流分解方式 如典型的生产者 消费者问题 多核下的编程模型 OpenMP和PFX OpenMP OpenMulti Processing 是用于共享内存并行系统的多线程程序设计的一套指导性注释 CompilerDirective 支持的编程语言包括C语言 C 和Fortran OpenMP提供了对并行算法的高层的抽象描述 程序员通过在源代码中加入专用的pragma来指明自己的意图 由此编译器可以自动将程序进行并行化 并在必要之处加入同步互斥以及通信 当选择忽略这些pragma 或者编译器不支持OpenMP时 程序又可退化为通常的程序 一般为串行 代码仍然可以正常运作 只是不能利用多线程来加速程序执行 OpenMP的第一个标准于1997正式发表 目前已经有面向Fortran C C 的编程接口规范OpenMP基于Fork Join模型 将程序划分为并行区和串行区 不同处理器间通过共享变量完成数据交换 在最新3 0版本之前一般面向循环结构的并行化 在3 0版本之后加入了一个称为任务处理的新功能 大大扩展了OpenMP的使用范围 微软 NET4的PFX 面对程序设计中的并行趋势 为了降低开发者进行并行程序设计的难度 提高开发者的生产率 微软在 NET4中加入了 并行扩展 PFX ParallelExtensionsforthe NETFramework 主要包括以下几个部分 任务并行库 TPL TaskParallelLibrary 将开发并行程序的抽象级别从低级别的 线程 thread 提升到高级别的 任务 Task 开发人员从而只需规定好计算机要执行的任务 然后由 NET去管理 这一并行库包含了数据的并行和任务的并行 并行语言集成查询 PLINQ ParallelLanguageIntegratedQuery 这是 NET3 0引入的LINQ的升级 产品 让LINQ可以并行执行 只是目前只针对LINQtoObject有效 也就是说可以并行的查询和处理内存中的数据对象 CoordinationDataStructures CDS 主要是用于对并行工作间的协作和状态共享提供支持 包括一系列因满足线程安全而无需加锁保护的常用数据结构 比如线程安全的队列 堆栈等 两种模型对比 OpenMP通过在所支持的编程语言中加入特定的编译指令 使得实现了OpenMP标准的编译器可以根据这些编译指令生成相应的并行代码 这种实现方式的好处在于 一旦编译器不支持这些编译指令 或者在编译时选择关掉并行开关 那么程序还可以按照串行的方式执行 但缺点在于 这样做就不得不为每种支持的编程语言设定特定的编译指令 而且需要修改所有的现有编译器 这个工作量将会非常巨大 PFX采用了另一种实现方式 他将自身以函数库的形式作为 NET

温馨提示

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

评论

0/150

提交评论