您好,欢迎访问三七文档
二、并行计算硬件,性能评测§并行计算机系统结构–Flynn分类SIMD/MIMD–并行计算机结构模型1)PVP(ParallelVectorProcessor)§含有为数不多、功能强大的定制向量处理器(VP),定制的高带宽纵横交叉开关及高速的数据访问。§通常不使用高速缓存,而是使用大量向量寄存器及指令缓存,使得该系统对程序编制的要求较高。§只有充分考虑了向量处理特点的程序才能在该系统上获得较好的性能。§银河I,NEC地球模拟器,GPU。。。2)SMP(SymmetricMultiprocessor)§采用商品化的处理器,这些处理器通过总线或交叉开关连接到共享存储器。§每个处理器可等同地访问共享存储器、I/O设备和操作系统服务§扩展性有限§曙光1号,IBMRS/6000,多核处理器。。。3)MPP(MassivelyParallelProcessor)§处理节点采用商品微处理器§系统中有物理上的分布式存储器§采用高通信带宽和低延迟的互连网络(专门设计和定制的)§能扩展至成百上千乃至上万个处理器§异步MIMD,构成程序的多个进程有自己的地址空间,进程间通信消息传递相互作用§Tianhe,K-Computer,CrayXT5,BlueGene。。。。4)Cluster(集群)§分布式存储,MIMD,工作站+商用互连网络,每个节点是一个完整的计算机,有自己的磁盘和操作系统,而MPP中只有微内核§优点:–投资风险小–系统结构灵活–性能/价格比高–能充分利用分散的计算资源–可扩展性好§问题–通信性能–并行编程环境§IBMCluster1350/1600。。。–内存访问模式1)UMA(UniformMemoryAccess)均匀存储访问。–物理存储器被所有处理器均匀共享;–所有处理器访问任何存储字取相同的时间;–每台处理器可带私有高速缓存;–外围设备也可以一定形式共享。2)NUMA(NonuniformMemoryAccess)非均匀存储访问。–被共享的存储器在物理上是分布在所有的处理器中的,其所有本地存储器的集合就组成了全局地址空间;–处理器访问存储器的时间是不一样的;访问本地存储器LM或群内共享存储器CSM较快,而访问外地的存储器或全局共享存储器GSM较慢(此即非均匀存储访问名称的由来);–每个处理器可带私有高速缓存,外设也可以某种形式共享。3)NORMA(No-RemoteMemoryAccess)非远程存储访问。–所有存储器私有;–节点间通过消息传递进行数据交换。§多核处理器–多核技术概述多核计算环境–多个复杂度适中,相对低功耗的处理核心并行工作–CPU时钟频率基本不变–计算机硬件不会更快,但会更“宽”–操作系统、应用程序设计??双核技术VS.超线程技术§双核是真正意义上的双处理器–不会发生资源冲突–每个线程拥有自己的缓存、寄存器和运算器§一个3.2GHzSmithfiled在性能上并非等同于3.2GHzP4withHT的2倍–HT使处理器的性能至少提升了1/3–双核的性能相当于2块non-HT处理器§双核技术与HT技术在性能上的对比§Ex1:两个floatingpoint线程(Smithfieldclient)–每个线程拥有自己的FPU,没有资源冲突–尽管性能上没有提升太多,但仍然优于HT§Ex2:一个integer线程与一个floatingpoint线程–性能大幅度提升–没有资源冲突§并行计算性能评测1)参数定义§P:处理器数;§W:问题规模(计算负载、工作负载,给定问题的总计算量);–Ws:应用程序中的串行分量,f是串行分量比例(f=Ws/W);–WP:应用程序中可并行化部分,1-f为并行分量比例;–Ws+Wp=W;§Ts:串行执行时间,Tp:并行执行时间;§S:加速比,E:效率。2)加速比性能定律§Amdahl定律§Gustafson定律§SunandNi定律04OpenMPOpenMP概述§OpenMP是一种面向共享内存以及分布式共享内存的多处理器多线程并行编程语言。§OpenMP是一种能够被用于显式制导多线程、共享内存并行的应用程序编程接口(API)。OpenMP编程模型:Fork-JoinFork-Join执行模式在开始执行的时候,只有主线程程存在。主线程在运行过程中,当遇到需要进行并行计算的时候,派生出(Fork)线程来执行并行任务。在并行执行的时候,主线程和派生线程共同工作。在并行代码结束执行后,派生线程退出或者挂起,不再工作,控制流程回到单独的主线程中(Join)。编译制导语句(CompilerDirective)并行域共享任务同步数据域–数据共享属性子句–threadprivate子句–数据拷贝子句并行域并行域中的代码被所有的线程执行共享任务共享任务结构将它所包含的代码划分给线程组的各成员来执行–并行for循环–并行sections–串行执行for编译制导语句for语句指定紧随它的循环语句必须由线程组并行执行;Sections编译制导语句1)sections编译制导语句指定内部的代码被划分给线程组中的各线程2)不同的section由不同的线程执行single编译制导语句single编译制导语句指定内部代码只有线程组中的一个线程执行。线程组中没有执行single语句的线程会一直等待代码块的结束,使用nowait子句除外parallelfor编译制导语句Parallelfor编译制导语句表明一个并行域包含一个独立的for语句parallelsections编译制导语句parallelsections编译制导语句表明一个并行域包含单独的一个sections语句critical制导语句critical制导语句表明域中的代码一次只能执行一个线程reduction子句reduction子句使用指定的操作对其列表中出现的变量进行规约初始时,每个线程都保留一份私有拷贝在结构尾部根据指定的操作对线程中的相应变量进行规约,并更新该变量的全局值语句格式–reduction(operator:list)运行库例程与环境变量
本文标题:并行计算复习摘要
链接地址:https://www.777doc.com/doc-2456033 .html