精华内容
下载资源
问答
  • 计算机并行计算考试重点总结

    千次阅读 2016-12-06 22:21:28
    **计算机体系结构由程序设计者看到的...计算机系统的层次结构 现代并行计算机的组成 ü硬件核心:处理机、存储器和外围设备组成了计算机系统。 ü互连:外围设备可以直接或通过局域网和广域网与主机相连。 ü映射

    **计算机体系结构由程序设计者看到的计算机系统的属性,抽象的概念性的结构和功能属性。
    计算机组成:是计算机体系结构的逻辑实现。
    计算机实现:是计算机组成的物理实现。
    重点内容
    计算机系统的层次结构 现代并行计算机的组成
    ü硬件核心:处理机、存储器和外围设备组成了计算机系统。
    ü互连:外围设备可以直接或通过局域网和广域网与主机相连。
    ü映射是一种算法结构与硬件结构相匹配的双向过程。包括处理机调度、存储器映象、处理器间的通信等..存在的问题:不能以通用和可移植方式进行并行程序设计。将着眼点放在语言执行的效率、对不同机器的可移植性、与现有的顺序语言的兼容性、并行性的表达和编程的简便性
    改进编译器:预处理程序、预编译器、并行化编译器
    ü预处理程序:采用顺序编译器和目标计算机的低层程序库实现高级并行结构。
    ü预编译器:需要程序流分析、相关性检查和有限的优化来检测并行性。
    ü联接过程的效果取决于预处理程序、预编译器、并行化编译器、加载程序
    和操作系统支持的功效。由于程序行为的不可预测,现有的编译器在检测
    所有类型的并行性时都不是完全自动或完全智能进行的。有效的办法:p将编译器命令插入源代码,帮助编译器做出较好的结果。这样,用户可与编译器进行交互重构,这已被证明对提高并行计算机性能是十分有用的。
    物理结构
    üMISD(多指令流单数据流)机在执行不同的指令流时,同一数据流通过处理机线性阵列就是所谓 流水线执行特定算法的脉动阵列(Systolic arrays)。
    并行计算机有两大类:共享存储型多处理机、消息传递型多计算机
    早期的超级计算机可分为:
    流水线向量机:用带有少量带有向量硬件,但性能很高的处理机来装备.
    SIMD计算机:强调开发大规模数据并行性
    pSIMD计算机开发的是PE之间的空间并行性;p存储器分布的SIMD计算机由同一阵列控制部件控制的PE阵列组成;p程序和数据通过主机装入控制存储器;
    p指令是送到控制部件进行译码;ü标量操作或控制操作,则将直接由与控制部件相连的标量处理机执行;ü向量操作,则将它广播到所有PE并行地执行;p划分后的数据集合通过向量数据总线广播到所有PE的本地存储器;pPE通过数据寻径网络互连。数据寻径网络执行PE间的通信,如移数、置换和其它寻径操作。控制部件通过执行程序来控制数据寻径网络。PE的同步由控制部件的硬件实现;p所有PE在同一个周期执行同一条指令;p可以用屏蔽逻辑来决定任何一个PE在给定的指令周期执行或不执行指令
    共享存储器模型:是一种PE使用共享存储器的SIMD计算机。PE和存储器之间的通信网络是一个对准网络,它也受控制部件控制。
    抽象机模型的概念与意义
    ü并行计算机的理论模型是从物理模型抽象的;
    ü为开发并行算法提供了一种方便的框架;
    ü用这些模型可求得并行计算机的理论性能界限;
    ü可在芯片制作前估算芯片区的VLSI复杂性和执行时间。
    计算机求解一个规模为s的问题的算法复杂性取决于:Ø执行时间Ø存储空间
    一个抽象机模型用语义属性和性能属性进行描述
    语义属性:同构性、同步性、交互机制、地址空间、存储器模型、原子操作(不可分,有限)
    性能属性:包括机器规模、时钟频率、工作负载、执行时间(顺序/并行)、速度、加速比、效率以及利用率等
    语义属性具有较长的延续性,并行计算机换代时仍保持不变。
    性能属性高度依赖系统结构平台,随着计算机换代而改变。
    并行程序的操作类型:计算操作、并行性操作、交互操作
    并行程序的开销源:并行性开销、通信开销、同步开销、不平衡开销
    并行随机存取机模型 PRAM:用途:可用来开发并行算法和分析可扩展性及复杂性。MIMD、细粒度、严格同步、零开销、共享变量。特点:在PRAM上的一个并行程序由n个进程组成,其中第i个进程留驻在第i个处理器上,且由一串指令所组成。在每个基本时间步(称为周期),每个处理器执行一条指令。指令包括数据传送、算/逻、控制流以及I/O指令,在典型的顺序计算机中均有这些指令。①规模为1的PRAM退化为传统的RAM机。这种机器为SISD机。②当处理器多于1个时,一个PRAM将访问多个数据流,且通常可执行多个指令流。因此PRAM是一个MIMD机。 MIMD的特例:
    如果在每一周期,所有处理器必须执行相同指令,即只有一个指令流时,则PRAM就成为单指令流、多数据流(SIMD)机器。
    SPMD计算:单程序、多数据,所有进程执行同一程序,而由进程指标加以参数化。
    SIMD和SPMD间的差别是,在SPMD计算中,同一周期可以执行不同指令。
    ①进程同步是严格的,任何处理器的存储器写操作或转移操作之前,必须完成其他处理器的存储器读操作。②PRAM是在指令级同步的。③实际的MIMD并行机是异步的。每个进程有自己的速率,与其他处理器进程速率无关。 在PRAM模型中,进程间通过共享变量(或共享存储器)进行交互,进程间通过共享变量进行交互的异步MIMD机,常称为多处理机。
    进程间通过消息传递进行交互的异步MIMD机,常称为多计算机
    ①理论PRAM模型中,所有进程对所有存储单元均有相等的访问时间。这种机器为均匀存储器访问(UMA)。②若采用非均匀存储器访问(NUMA),将演变为异步PRAM模型(APRAM)。③ PRAM模型不合适多计算机。
    多计算机中,每个处理机有它自己的分离地址空间。这些机器被称为具有多地址空间。正是由于此原因,多计算机的处理机间通信不是通过共享变量,而是借助消息传递。
    存储器模型:主要目的是协调写冲突问题,有四种PRAM模型方案。 ①EREW-PRAM模型——互斥读、互斥写。禁止一台以上处理机同时读、写同一存储单元。 这是限制最大的PRAM模型。②CREW-PRAM模型——并发读、互斥写。用互斥使写冲突避免。可以并行读同一存储单元。③ERCW-PRAM模型——互斥读、并发写。允许互斥读或并行写同一存储单元。④CRCW-PRAM模型——并发读、并发写,允许在同一时刻并行读或者并行写。PRAM模型常用EREW和CRCW规则优点:PRAM模型略去很多细节,形式简单,便于开发并行程序,在此模型基础上开发的并行算法易于改进成实用的并行算法。缺点:与物理模型存在差异,实际上,这种并行计算机是不存在的。原因在于零通信开销和指令级同步的不现实假设。共享存储器的SIMD机是与PRAM模型最接近的结构
    块同步并行模型 BSP特点:(1)一个BSP程序有n个进程,每个驻留在一个结点上。基本时间单位是周期(或时间步)。(2)程序按严格的超步序列执行。(3)同步路障迫使进程等待。(4)BSP计算机是MIMD系统。(5)BSP模型是超步级的松同步。(6)在一个超步中,不同进程以不同速率异步执行。(7)BSP模型交互机制是共享变量或是消息传递。
    h关系的定义:(1)一个h关系是任何通信操作的抽象,在其中,每个结点最多发出h个字到各结点,并且每个结点最多接收h个字。(2)在一个BSP计算机中,实现任何h关系的时间不会超过gh个周期,g是由机器平台决定的一个常数。一个超步执行时间的确定计算时间w:处理器中完成计算操作所需的最大周期数;路障同步开销为L;通信开销为gh周期,g是实现h关系的比例系数,常数;执行一个超步的时间为:w+gh+L
    优点:与PRAM模型相比,BSP模型更为实际,更接近物理模型,BSP模型除了用于进程管理的并行性开销外,它考虑了所有其他开销
    阶段并行模型基本描述:一个并行程序以一系列阶段加以执行,当前阶段的所有操作未完成之前,不能开始下一阶段操作
    三类阶段的定义:并行化阶段主要涉及进程管理的开销阶段;计算阶段一个或多个处理器执行若干局部计算操作;交互阶段完成交互操作所执行的任务。。特点:不同的计算阶段可以不同的工作速度执行不同的工作负载;不同的交互操作可取不同的时间
    可扩展性范围包括资源可扩展性是指通过增加处理器数、更多的存储部件(高速缓存,主存,磁盘)以及增加软件等方法,使系统具有更高性能或功能。涉及三方面:Ø规模可伸缩性、Ø资源扩展、Ø软件可扩展性。
    ü当前的并行计算机规模的扩展:Ø加入更多处理器、Ø增加互连网络、接口以及通信软件在内的子系统、有效地利用更大并行性,即如何为扩大的系统进行编程
    ü计算机系统中发展最快的部件是处理器进展最慢的部分是程序设计语言
    SMP和MMP只具有有限的空间可扩展性;ü因特网则具有最好的空间可扩展性
    可扩展设计原理:ü独立原理ü平衡设计原理ü可扩展性设计原理、时延隐藏原理
    独立原理:应努力使系统中的各个组成部分(硬、软件)相互独立如果无法达到完全独立,则应尽力使相关程度减至最小并使相关性尽量清晰。优点:ü使独立扩展成为可能,ü使异构可扩展性成为可能、要求部件不受制于一个特别的体系结构或系统
    ü消息传递接口(MPl)是使用少量独立(正交)语言特征的成功范例。üMPI基于4个相互正交的主要概念:数据类型、通信操作、通信子集、虚拟拓扑
    实现独立原理的两种通用技术:ü将体系结构和实现分开、ü使用标准组件
    平衡设计原理:ü应努力最小化任何性能瓶颈ü应避免不平衡系统的设计ü应避免单点失效,即一个部件失效将使整个系统崩溃
    Amdahl法则:处理速度应与存储器容量和I/O速度相平衡 实现:ü粗略地估计每秒一百万指令(MIPS)的计算速度,应与1MB存储器容量和1Mb/s的I/O速率相平衡
    并行系统50%法则ü并行程序性能取决于:Ø负载不平衡;Ø并行化开销;Ø通信启动开销(t0);Ø以及每字节通信开销(tc);ü50%法则:4个开销因素的每一个使性能衰减都不大于50%,那么就认为此并行系统是平衡的
    单结点速度P1”表示的是“计算速度”;“渐进带宽r∞=1/tc”表示的是“通信速度”。
    设计“平衡的”由两个慢速部件(处理器速度、网络速度)构成的系统。优于设计“不平衡的‘一个快速(处理器速度)一个慢速(网络速度)构成的系统。平衡设计可以改善系统的性能
    ü计算机系统设计理念:Ø在设计一个可扩展的系统时,应该从一开始就将可扩展性作为主要目标,而不是设计完成后再来考虑这一问题。Ø为系统将来可能扩展以提供更高性能或缩小以使价格降低或是有更大的成本有效性作好准备。
    可扩展性设计的两种流行方法:过度设计、向后兼容性
    过度设计:是指系统在设计时不单纯地只是为了满足目前系统的最低需要,设计必须包括一些附加特性,以期在未来的扩展系统中性能得到改进
    ü地址空间大小:即处理器能直接访问的字节单元数。
    向后兼容性:在设计硬件或软件部分时,必须兼顾缩减系统的需求。向后兼容性并不表示一个旧系统的所有特性都应保留。应该剔除陈旧的特性,在应用过度设计技术时,应考虑成本问题且不应对未来期待过多,虽然有时过度设计确实能减少总的开发和生产成本。
    缺少合适的并行软件是阻碍主流用户接纳并行计算的主要原因。并行系统软件和应用软件不仅数量很少,而且功能性也相当原始。困难:p并行编程中有许多不同的模型是一个更复杂的智力活动。并行程序的环境要比串行程序落后得多
    编程模型(虚)即是程序员在开发一个并行程序时所见到和使用的模型。自然模型(实)是由一个特定并行计算机平台所提供的、用户可见的最低层的编程模型,其他的编程模型可在此自然模型上加以实现
    环境工具是指任何硬件和软件的实用程序,以帮助用户程序的开发和执行,ü是那些通常与操作系统或程序设计语言无关的工具集
    ü大多数程序基于命令式机器模型,中心概念是状态更新ü一个命令式程序可看成是一个状态机(或一个自动机)
    程序变量集:数据变量、控制变量
    ü开始时,进程为不存在状态。当它的创建者,父进程执行进程创建操作后,它才出现。一个新创建的子进程准备执行,但仅在被调度后,它方可开始运行(执行其代码)。
    ü重量级的并行进程不适用于可扩展并行计算机,除非并行进程具有粗计算粒度。要开发较细粒度并行性,必须使用轻量级进程
    OS进程和线程间的主要差别:在重量级的OS进程中,多个线程能共存于进程(包括进程描述符)的同一地址空间,并且共享;当创建一个(重量级)进程时,通常它有一个单线程,称为基本线程;通过执行一个线程创建操作,任何进程能创建另外的线程
    颗粒度是指在两次并行性操作之间所执行的计算负载。
    单线程:从程序员的观点,一个数据并行程序中由一个进程执行,具有单一控制线;使得一个数据并行程序就像一个顺序程序。并行操作子聚合数据结构上:数据并行程序的一个单步(语句),可指定同时作用在不同数据组元素或其他聚合数据结构上的多个操作;松散同步(LooselySynchronous):在数据并行程序的每条语句之后,均有一个隐含的同步,这种语句级的同步是松散的(相对于SIMD机器每条指令之后的紧同步而言);全局命名空间:数据并行程序中的所有变量均驻留在单一地址空间内,所有语句可访问任何变量,只要满足通常的变量作用域规则;隐式相互作用:因为数据并行程序的每条语句之末存在着一个隐含的路障,所以不需要一个显式同步;通信可由变量指派而隐含地完成。隐式数据分配:程序员不必要明确地指定如何分配数据,可将改进数据局部性和减少通信的数据分配方法揭示给编译器
    分别对应数据并行模型 消息传递模型 共享变量模型
    并行程序的并行度(degree of parallelismDOP)通常定义为可同时执行的分进程数。
    颗粒度;指在两次并行性操作或交互操作之间所执行的计算负载
    通信操作类型:数据交换、同步操作、聚集操作
    宏基准程序
    NPB基准程序组由5个核心(EP、MG、CG、FT和IS)和3个模拟应用(LU、SP和BT)程序组成。
    核心程序:EP 基准程序、MG基准程序、CG基准程序、FT基准程序、IS基准程序。模拟应用程序:BT、LU、SP
    PARKBENCH基准程序组:低层基准程序、核心基准程序、压缩应用基准程序、HPF编译器基准程序
    并行STAP程序组:APT、HO-PD、BM、EL等4个基准程序的结构
    用户经常提到6种性能:执行时间;速度;吞吐率;利用率;成本有效性;性能/成本比
    工作负载(W):是程序中的计算操作数 Ppeak:是处理器的峰值速度
    处理速度;是指单位时间的工作负载(W)的处理,W 表示“工作负载”,其单位是“Mflop(兆
    浮点运算)”,处理速度:Pn=W/Tn,其单位是Mflop/s
    提高系统吞吐率的两个方法:流水化、无相关的分配
    利用率 Un=Pn/(nPpeak)指一个给定计算机实际可达到速度与峰值速度之比
    成本有效性:单位成本实现的工作负载。衡量单位: Gflop/$
    3个指标来测量程序C的计算工作负载:执行时间;执行的指令数;执行的浮点操作数;
    存储器层次结构的主要指标:存储器容量、存储器时延、存储器带宽
    并行性开销的来源:进程管理、分组操作、进程查询操作。交互开销的来源:同步、聚集、通信

    并行程序中的开销可分为3类:负载不平衡开销、并行性开销、交互开销。执行一个并行程序所需的时间为: T= Tcomp+Tpar+Tinteract
    并行性开销的来源:进程管理、分组操作、进程查询操作
    交互开销来源:同步、聚集、通信
    数据并行:在理想环境下于每个时钟内可并发地执行500到3500个算术操作。
    指令级并行:并行度较低。指令级并行性的极限约在5左右,很少超过7。一个合理设计的超标量处理器上,可期待每周期并发执行2.0到5.8条指令。
    加速比分析:
    n是并行系统中处理器数。W是问题规模(给定问题的总计算量)Ws=W1为顺序工作负载,Wp为并行工作负载 。为顺序分量比例,=Ws/W;1-为并行分量比例Ts=T1为顺序执行时间,Tp为并行执行时间。S为加速比;E为效率。
    考虑开销的加速比说明:
    并行加速比不仅受限于程序的顺序分量,而且也受并行程序运行时的平均开销影响。
    Amdahl定律结论:固定负载加速比随顺序瓶颈α和平均开销的增加而急剧下降。顺序瓶颈问题不能用单纯增加机器规模(处理器数目)的办法来解决。
    存储受限的加速定律:基本思想:只要存储空间许可,应尽量增大问题规模,以产生更好和更精确的解(此时可能使执行时间略有增加)
    受限存储器加速比定义:此时工作负载仍然表示为W=αW+(1-α)W。Ø令因子G(n)反应存储容量增加到P倍时工作负载的增加量,扩大后的工作负载为:W’=αW+(1-α)G(n)W**

    展开全文
  • 并行计算和并行计算机体系结构

    千次阅读 2017-12-27 09:39:59
    什么是并行计算 为什么用并行计算 谁在用并行计算 硬件提供了哪些支持 软件提供了哪些支持 总结 参考资料关于并行,你知道多少?思考多少?听到“并行”这个词汇,我最先想到的是在车道上飞驰的汽车,它们是并行...

    关于并行,你知道多少?思考多少?

    听到“并行”这个词汇,我最先想到的是在多车道上飞驰的汽车,它们是并行运行的。它们之间完全独立吗?并不见得,当一个车道上的车要变道时要打开方向灯,相邻车道的车都会减速避让。可见,并行是发生在大部分时间,有时候有串行的成分在里面。从更宏观的层面来看,一般的问题都有“并行”和“串行”两种特性同时存在。其实,再说的直白点,任何一件事情都有独立性的部分,也有相关性的部分。哦,对了。我得解释一下“并行”的英文:parallelism。很相关的一个概念是“并发”,其英文:concurrency。顺便解释一下这两个概念,并行侧重于同时处理多个任务的能力,并发则侧重于并发的关键是你有处理多个任务的能力,不一定要同时。并发是一种设计理念,让一件事情完成的效率最高,并发设计的好的话,并行占比高,整个事情完成的效率就高。详细的见参考资料3Concurrency is not parallelism
    说实话,这个话题太大,网上资料也很丰富。我写这篇文章的目的是激发大家关于“并行”的思考,然后做一个概况性质的介绍,让大家对“并行”有一个正确的感性认识。

    并行这个概念太大,我们下面把范围缩小,重点讨论并行计算的话题。

    冯诺依曼计算机体系结构

    冯诺依曼计算机体系结构

    什么是并行计算?

    我们都知道计算实际上是一系列确定的步骤。聊并行计算哪能少了串行计算,直接上图:
    串行计算
    并行计算也得看图说话:
    并行计算

    这里我们假定了要解决的问题完全可分为4个独立运行的部分,由4个processors来独立运行。实际问题中,独立性和关联性是一个“太极”关系,就涉及到划分的粒度和通讯的频率等等问题。

    为什么用并行计算?

    1. 现实世界中存在大量并行
      . 自然社会中,每时每刻都在发生大量的有相互关联的事件。
      . 相比于串行计算模型,并行计算模型更有利于我们为现实世界建模。
      . 下面有好多并行的例子。
      自然社会中的并行例子

      更直接的原因

    2. 使用并行技术可以节约大量的时间&金钱
      并行节约时间和成本
      tag:大规模的运算集群可以由比较廉价的计算机组成用于完成大规模的计算任务,比如阿里巴巴的双十一。利用的通用的便宜的X86服务器组成超大规模nodes运算集群。

    3. 可以用来解决超大规模的问题
      Grand Challenge Problems
    4. 提供高并发性
      想想阿里,百度,腾讯可以同时为多少人提供服务吧。
    5. 可以充分利用网络上的计算资源(非本地计算资源)
      SETI@home
      Folding@home
      了解下这两个开源项目,你就明白啥意思了。

    6. 让你更了解你所使用的并行计算机硬件架构,充分发挥它的性能
      intel SMP

    7. 目前,随着网络数据量越来越大,大数据下所需要的计算力会更大
      全球对计算力的需求一直在成上升趋势,且大规模计算机集群提供的运算力也在逐年提升。
      大规模集群运算力
      数据来源:top500.org

      有了上面这些原因,相信你也对高并发程序设计感兴趣了吧。

    谁在用并行计算?

    1. 科学、工程领域
      科学和工程
    2. 工业、商业
      工业、商业
    3. 全球各种各样的APP
      各种APP

    硬件提供了哪些支持?

    其实,硬件从下面这些方面都提供了并行支持。
    1. 片内级
    . 片内级并行
    . 片内多线程
    . 单片多处理器
    2. CPU级
    . UMA对称多处理器系统
    . NUMA多处理器系统
    . COMA多处理器系统
    3. 计算机级
    . MPP—大规模并行处理器
    . 集群计算

    上个图,一目了然。
    并行计算机分类

    硬件上来说,我们现在使用的手机和笔记本实际上都是单CPU多核心的,比如我的笔记本是4核8线程的,就是说我的电脑有一个CPU,这个CPU有4个core,每个core上还提供了intel的超线程技术。那从操作系统这一级来看我拥有8个独立的cpu可以同时使用。
    4核8线程CPU

    这种架构就是标准的SMP系统,所有的核平等共享Cache,interrupt,和硬件资源。
    UMA
    PowerPC CPU硬件架构图
    这个是PowerPC结构的CPU结构图。
    看懂套路了吗?提高性能的方式也就两个:1,增强当个core的频率(每秒执行指令的次数)2,增加core的数量。
    单个CPU增加核心也是有瓶颈限制的,因为SMP中共享总线需要很高的bindwidth,还需要解决总线竞争问题。
    那咋继续提升性能呢?哦,你可能也想到了,解耦,然后增加CPU的个数,CPU之间也建立bus。intel有一种技术叫QPI,就是互联CPU用的。那CPU之间共享内存,读取自己CPU的内存不用通过QPI总线,肯定比读取挂在另一个CPU上的内存要快,所以叫NUMA。
    NUMA
    NUMA往细了分还可以分为CC-NUMA、NC-NUMA等。
    那这种耦合度的扩展限制在CPU互联bus上,可扩展性差一些,那要接着增强计算能力,咋办?老办法,解耦,把多个机器利用bus互联。这就产生了MPP(Massively Parallel Processors)、COW(Cluster of
    Workstations)。
    MPP

    但是,目前超大规模的集群运算,一般单个节点都是SMP的,或者是NUMA的,然后用高性能BUS将不同的机器再互联起来。

    我们目前市面上见到的4路服务器、16路服务器,一般是NUMA架构的服务器,见到的8单元服务器,一般是指COW架构的服务器。

    软件提供了哪些支持?

    通过上面关于硬件并行的介绍,我们也了解到要想合理的发挥这些机器的性能,还是需要了解这些机器的硬件架构,主要是要理解耦合性和内聚性,以及在软件设计时充分考虑如何利用这些硬件特性,才能设计出高效、经济的软件系统。
    等会,什么时候软件设计人员开始需要了解硬件细节了?其实,大部分硬件细节都通过OS,系统库给封装了,对软件开发人员透明。这个其实也是个很有争议的话题:能否在不了解底层细节的情况下,开发出好的软件?
    我的想法是,计算机体系结构是分层的,我们必须站在中间这一层看问题,比如你是做OS的,你往上要看应用,往下要看硬件。要想把一个工具发挥到极值,还是需要了解你所使用的工具的,所谓人剑合一就是这个意思。
    扯远了,在我们常见的SMP系统上,单个机器是符合冯诺依曼计算机体系结构的,各个core的抽象是在OS这一层做的。os+开发库,可以让软件开发人员透明地使用并行开发方法,比如我们常用的并发库—POSIX Threads。当然还有其他的一些线程库。这个我们很熟悉,但是到了NUMA架构的机器上,是谁做的抽象呐?答案还是OS,因为到目前为止的体系架构仍然还是硬件级共享内存的。你想linux kernel就可以识别NUMA架构的计算机,安装多个CPU,比如说安装2个16核的CPU,OS起来后,你可以看到你可以直接利用的cpu是32个。也就是说基于这种架构硬件的软件开发和在普通的PC机上无太大区别。
    但是到了COW或者MPP时,由于是多个独立的主机通过高速bus互联的架构,是一种非共享内存的模型,每个主机运行独立的OS,读取另外主机的内存只能通过Message方式,需要定义read、write原语。实现这种的有一个开源库叫OpenMPI。当然其他的也有很多,只是原来在SMP、NUMA上的程序要想移植到非硬件共享的平台上来,一般有两个方法:1,修改原有的软件,让其适应在非硬件共享内存的平台上运行。2,针对非硬件共享内存的平台做软件抽象,使应用程序看起来像是在共享内存环境下运行—就是使用虚拟机技术。使用虚拟机技术可以在不同层次中做共享内存抽象。
    shared memory模型

    总结

    说了这么多,感觉说明白了。其实说白了,并行计算机架构就是在解决一个事情:如何利用多个core来实现更高的运算能力。这和这一个问题是等价的:利用什么组织架构来管理很多人,让这些人发挥更大的改造自然的能力。
    在摩尔定律失效的当下,在不同层次研究并行计算的架构就显得很重要了,我个人感觉在传统IC的基础上有以下两个方向可以继续保持摩尔定律:1,研究更专用,更高效的并行架构,包括微指令层、指令层、IC层、CPU层、整机层。2,研究如何编写更高效的软件。目前,因为原来摩尔定律带来的诟病,有太多的不合格程序员在写着不合格的程序,其中就包括我在内。

    参考资料

    链接打不开的话,请注意开车方式。

    Introduction to Parallel Computing
    Structured Computer Organization(Andrew S.Tanenbaum)
    Concurrency is not parallelism

    展开全文
  • 并行计算复习第一篇 并行计算硬件平台:并行计算机

    并行计算复习

    第一篇 并行计算硬件平台:并行计算机


    Ch1 并行计算与并行计算机结构模型

    1.1多核处理器与线程级并行

    1.何谓多核处理器?

    将功能复杂的单一核处理器划分为若干个功能相对简单的多个处理器内核,这些多处理器集中在一块芯片上,最初称为单芯片多处理器CMP,Intel公司将其商用名定为多核处理器

    2.多核处理器的意义:
    • 解决单处理器瓶颈:密集晶体管集成,功耗剧增;设计指令级并行体系结构来利用晶体管资源,但软件与硬件设计复杂
    • 具有自己的优势:CMP设计验证周期短、开发风险成本低,相对较低的主频功耗也相对较低、单处理器程序移植容易,通过布局能够改善多处理器内核之前延迟和带宽
    3.微处理器中的并行方式
    • ILP:指令级并行,单处理器同时执行多条指令,包括乱序执行、分支预测、指令多发射、硬件预取等技术
    • TLP:线程级并行,多处理器多线程执行
    • 多任务OS:多进程多线程分时间片轮转或抢占式,OS管理
    • SMT:同时多线程技术,超标量与多线程的结合,同时发射多个线程中的多条不相关指令
    • CMP:单芯片多处理器
    • 虚拟计算技术:异构平台,剥离指令集结构和处理器依赖关系(运行时虚拟化JVM、系统虚拟化)
    • Intel超线程技术:单核心模拟双核心环境执行多线程,是一种SMT

    1.2 并行计算机体系结构

    1.并行计算机结构模型

    (1)结构类型

    • SISD:单指令流单数据流计算机(冯诺依曼机)
    • SIMD:单指令流多数据流计算机
    • MISD:多指令流单数据流计算机
    • MIMD:多指令流多数据流计算机

    (2)几种MIMD

    • PVP并行向量处理机:多VP(向量处理器)通过交叉开关和多个SM(共享内存)相连
    • SMP对称多处理机:多P/C(商品微处理器)通过交叉开关/总线和多个SM(共享内存)相连
    • MPP大规模并行处理机:处理节点有商品微处理器+LM(分布式本地内存),节点间通过高带宽低延迟定制网络互联,异步MIMD,多个进程有自己的地址空间,通过消息传递机制通信
    • COW工作站机群:节点是完整操作系统的工作站,且有磁盘
    • DSM分布共享存储处理机:高速缓存目录DIR确保缓存一致性,将物理分布式LM组成逻辑共享SM从而提供统一地址的编程空间

    注:对称指所有处理器都能同等地访问I/O很同样的运行程序(如OS和I/O服务程序),而非对称主从式是仅有主处理器运行OS和控制访问I/O并监控从处理器执行

    2.并行计算机访存模型
    • UMA(Uniform Memory Access)均匀存储访问:物理存储器被所有处理器均匀共享,所有处理器对所有SM访存时间相同,每台处理器可带有高速私有缓存,外围设备共享。
    • NUMA非均匀存储访问:共享的SM是由物理分布式的LM逻辑构成,处理器访存时间不一样,访问LM或CSM(群内共享存储器)内存储器比访问GSM(群间共享存储器)快
    • COMA(Cache-Only MA)全高速缓存存储访问:NUMA的特例、全高速缓存实现
    • CC-NUMA(Coherent-Cache NUMA)高速缓存一致性NUMA:NUMA+高速缓存一致性协议
    • NORMA(No-Remote MA)非远程存储访问:无SM,所有LM私有,通过消息传递通信
    3.Cache一致性协议
    • 监听总线协议:总线连接通信,写无效和写更新策略
    • 基于目录的协议:目录记录共享数据缓存状态,读缺失时查看目录D,写更新时通知目录D
    4.其他并行计算概念

    衡量并行计算机性能单位:

    • PFLOPS:每秒1千万亿 (=10^15) 次的浮点运算
    • TFLOPS:每秒1万亿 (=10^12) 次的浮点运算
    • GFLOPS:每秒10亿 (=10^9) 次的浮点运算

    TOP500前500名超级计算机排名指标(GFLOPS):

    • Rmax:Maximal LINPACK(Linear system package) performance achieved
    • Rpeak:Theoretical peak performance

    Ch2 并行计算机系统互连与基本通信操作

    2.1 并行计算机互连网络

    互连网络是并行计算机系统中各处理器与内存模块等之间传输的机制

    1.静态互连

    处理单元间有固定连接的网络,程序执行期间这种点到点的连接不变

    • 一维线性阵列LA/LC:二邻近串联
    • 二维网孔MC:四邻近连接(Illiac连接、2D环绕)
    • 树连接TC:二叉树、星型网络、二叉胖树(节点通路向根节点方向逐渐变宽,解决通信瓶颈)
    • 超立方HC:3立方、4立方
    • 立方环:3立方顶点用环代替
    2.动态互连

    交换开关构成的,可按应用程序要求动态改变连接组态

    • 总线:连接处理器、存储模块、I/O外围设备等的一组导线和插座,分时工作、多请求总线仲裁,多总线(本地、存储、数据、系统)和多层总线(板级、底板级、I/O级)
    • 交叉开关:高带宽的开关控制的专用连接通路网络,NxN的开关网络同时只能接通N对源目的通信
    • 多级互联网络MIN:每一级用多个开关单元,各级之间有固定的级联拓扑
    3.标准网络互连
    • FDDI光纤分布式数据接口
    • 快速以太网
    • Myrinet:商用千兆位包开关网
    • InfiniBand:交换式通信结构

    2.2-2.5 通信代价公式

    1.选路

    (1)消息格式

    消息是由一些定长的信包组成,信包包括了

    • 选路信息R
    • 顺序号S
    • 多个数据片D

    (2)存储转发选路SF

    SF中信包是基本传输单位,中间节点必须收齐信包中所有分片且存储在缓冲器后才可能传向下一节点

    长度为m的信包,穿越l条链路,SF基本通信时间公式:

    tcomm(SF)=ts+(mtw+th)l

    其中ts是启动时间,th是节点延迟时间,tw是传输每个字节的时间(带宽倒数)

    (3)切通选路CT

    CT中信包切片传输(包头和数据片),类似流水线

    长度为m的信包,穿越l条链路,CT基本通信时间公式:

    tcomm(CT)=ts+mtw+lth

    2.SF一到多播送

    (1)一维环

    最远的节点是瓶颈:

    tonetoall(SF)=(ts+mtw)p/2

    (2)带环绕的Mesh

    先完成行SF环绕播送,再完成列的SF环绕播送(即两次节点个数为p的一维环SF):

    tonetoall(SF)=2(ts+mtw)p/2

    (3)超立方
    同理带环绕的Mesh,可推知:

    tonetoall(SF)=3(ts+mtw)p13/2

    3.CT一到多播送

    (1)一维环

    CT通信时间与中继节点无关,采取先按高维播送,再按中维播送,最后按低维播送:

    tonetoall(CT)=i=1log(p)(ts+mtw+th×p/2i)=(ts+mtw)log(p)+th(p1)

    (2)带环绕的Mesh

    tonetoall(CT)=(ts+mtw)log(p)+2th(p1)

    (3)超立方

    tonetoall(CT)=(ts+mtw)log(p)

    2.SF多到多播送

    (1)一维环

    p-1次环路传播:

    talltoall(SF)=(ts+mtw)(p1)

    (2)带环绕的Mesh

    先行环路多播,再列环路多播

    talltoall(SF)=(ts+mtw)(p1)+(ts+mptw)(p1)=2ts(p1)+mtw(p1)

    (3)超立方

    talltoall(SF)=tslog(p)+mtw(p1)


    Ch4 并行计算性能评测

    4.1 基本性能指标(见书)

    4.2 加速比性能定律

    约定:

    • p是处理器数
    • 问题规模W=程序中串行分量Ws+可并行部分Wh
    • f为串行部分比例,f=Ws/W
    • S为加速比
    1.Amdahl加速定律

    固定负载加速比公式:

    SlimpS=Ws+WpWs+Wpp=1f+1fp=1f

    若考虑并行额外开销W0

    SlimpS=Ws+WpWs+Wpp+W0=1f+1fp+W0W=1f+W0W

    2.Gustafson

    实际应用中增多了处理器不会固定问题规模,而是保持总时间不变的情况下去增大问题规模:

    S=Ws+pWpWs+pWpp=Ws+pWpWs+Wp=f+p(1f)

    若考虑并行额外开销W0

    S=Ws+pWpWs+pWpp+W0=Ws+pWpWs+Wp+W0=f+p(1f)1+W0/W

    3.Sun&Ni定律

    问题规模增加了,相应的存储容量也要增加p倍,令因子G(p)为存储容量增加到p倍时工作负载的增加,则有加速比:

    S=Ws+G(p)WpWs+G(p)Wpp=f+(1f)G(p)f+(1f)G(p)/p

    若考虑并行额外开销W0

    S=Ws+G(p)WpWs+G(p)Wp+W0p=f+(1f)G(p)f+(1f)G(p)/p+W0/W

    展开全文
  • 同时性和并行性是物质世界的一种普遍属性,具有实际物理背景的计算问题...并行计算机并行计算机即能在同一时间内执行条指令(或处理个数据)的计算机,并行计算机是并行计算的物理载体。1966年M.J.Flynn提出了著名

    同时性和并行性是物质世界的一种普遍属性,具有实际物理背景的计算问题在许多情况下都可以划分成能够并行计算的多个子任务,例如:根据几十个常用应用软件的统计,60%80%的标量计算可以被向量化,而90%左右的串行计算可以并行化。因而,并行计算机成了实现高性能计算、解决挑战性计算问题的希望和途径。本文分两个部分对传统的并行计算做初步介绍:并行计算机及并行计算环境MPI

    并行计算机

    并行计算机即能在同一时间内执行多条指令(或处理多个数据)的计算机,并行计算机是并行计算的物理载体。1966M.J.Flynn提出了著名的Flynn分类法,根据指令流与数据流方式的不同将计算机系统分类。指令流是指机器执行的指令序列;数据流指指令调用的数据序列,包括输入数据和中间结果。据此,可以把计算机系统分成:

    单指令流单数据流SISD(Single Instruction Stream Single Data Stream);

    单指令流多数据流SIMD(Single Instruction Strema Multiple Data Stream);

    多指令流单数据流MISD(Multiple Instruction Stream Single Data Stream);

    多指令流多数据流MIMD(Multiple Instruction Stream Multiple Data Stream);

    SISD计算机就是传统的单处理器计算机,指令顺序执行,一次只执行一条指令并且只对一个操作部分分配数据。后三类从广义上来说均属于并行计算机系统,MISD系统在概念上说来可以存在,但这种在指令级并行、数据级串行的系统目前尚无实例。SIMDMIMD是并行计算机开发的主流。

    SIMD系统是多个处理单元在同一控制器下工作的计算机系统,系统中各处理单元执行相同的指令流,但作用于不同的数据流上,如向量计算机和阵列计算机均属此类。由于系统在同一控制器的控制下进行工作,各计算部件必须执行相同的指令,就限制了这类系统的应用范围。

    MIMD系统则是多个处理机各自执行不同的指令流,并分别作用于不同的数据流上。根据各处理机间耦合程度的不同,MIMD系统又可分为共享存储(Shared Memory)的多处理机系统(Multiprocessor)和分布存储(Distributed Memory)的多计算机系统(Multi-computer)两类。前者各处理机通过总线、开关阵列或多级网络等方式共享一个公共的存储器,分散在各个处理器中的应用程序的各部分之间可以方便地通过共享的存储变量来交换数据并实现各种互斥和同步操作。由于受到存储器带宽的限制,这类共享存储多处理机系统的可扩展性(Scalability)较差,一般很难达到较大的规模和非常高的性能。后者各处理机有自己的局部存储器,构成一个单独的节点,节点之间通过互连网互相连接。每台处理机只能直接访问局部内存,不能访问其它处理机的存储器,它们之间的协调以消息传递的方式进行。它具有很好的扩展性,可以最以限度扩大处理机的数量,是当前解决高性能计算的有效途径。现在并行计算机的主流分布存储的大规模并行机MPP和集群(Cluster)就属于此类型。

    20世纪70年代初到现在,出现了各种不同类型的并行机,包括向量机、SIMD计算机和MIMD计算机。随着计算机的发展,曾经风行一时的向量机和SIMD计算机现已退出历史舞台,而MIMD类型的并行机却占了主导地位。

    当代的主流并行机是可扩展的并行机,包括共享存储的对称多处理机(SMP)和分布存储的大规模并行机(MPP)与集群(Cluster)。下面对它们的系统结构特点进行分析:

    对称多处理机SMP SMPsymmetrical Multi processing)是共享存储的并行机,指在一台计算机上汇集多个CPU,各CPU之间共享内存以及总线结构,可同时处理不同任务的计算机结构如下图。在这种结构中,一台计算机不再由单个CPU组成,而同时由多个处理器运行操作系统的单一副本,并共享内存和其他资源。系统将任务队列对称的分布于多个CPU之上,从而极大的提高了整个系统的数据处理能力。所有的处理器都可以平等的访问内存、I/O和外部中断。

    对称多处理器系统的优点是并行化的效率较高,相对容易编写并行程序,容易设计出小粒度、负载平衡、高效的并行程序,延迟较小。其缺点是存储器带宽的增长跟不上处理器速度或存储容量的步伐,扩展性低,一般处理器的数目不超过100个,价格昂贵。

    大规模并行机MPP  MPP(Massively  Parallel Processor)是指使用数个拥有独立内存空间的CPU构成的,同时执行一个任务的计算机结构如下图。它由成百上千的功能相同的处理机通过互连网络连接而成,各处理器可以直接访问自己节点内部的存储器,通过消息传递方式获得或传送其他节点的数据。目前的代表机型有Inter 的ParagonXP/SCrayT3D、国产YII3和曙光系列等。

          大规模并行机的优点就是扩展性强,可以不限度的增加处理机的数目。其缺点是难为其开发并行程序,程序员需要根据系统的特点来平衡并行程序的粒度和结点间通信量,价格昂贵,用的都是专用系统配件,专用的互连网络。

      集群(Cluster Cluster是指把两个以上高性能的工作站或高档次PC用通用的网络(如EthernetFDDIATM)连接在一起,并配以相应的支撑软件,构成一个分布式并行计算机系统如下图。它是把多个独立的计算机系统通过高速通信网络互连,统一调度、协调处理,实现高效并行处理的系统。集群并行系统中的每个计算机系统可以称为节点机,每个节点机有自己的存储器和I/O设备,因此集群并行计算系统具有基于网络的分布式资源。

     

    与其他并行机相比,集群有以下特点:

    1)可扩展性强。只要在网络上增加一台新计算机,就可提高系统能力,处理能力容易扩展,可以不受限的增加。

    2)系统结构灵活:将不同性能的工作站使用不同的体系结构和各种互连网络构成同构或异构的工作站机群系统,从而弥补单一体系结构适应面窄的弱点,可更充分地满足各类应用要求。

    3)易于实现。只需将现成的计算机系统用高速通信网络连接起来就可构成集群并行系统。

    4)最小化资源竞争。通过最小化共享资源达到减少由资源竞争带来地系统干扰,减少系统由于资源竞争引起地效率下降。

    5) 可充分利用分散的计算资源。因为工作站本身就是一台单独可用的计算机,当工作站闲置时就可用于加载并行计算任务,而且这样也会降低投资风险。

    6)性能/价格比高。据美国Oak Ridge国际实验室的一组实用并行程序测试,由11IBM RS/6000工作站组成的并行系统的浮点运算速度可以达到07Gflops。这个运算速度已经接近某些巨型机的速度,但价格却远远低于巨型机系统。

    因而,强大的计算能力和相对低廉的价格使得集群系统在大规模科学与工程机算中占据了主要地位。199711Top500列表中只有一个集群系统,而到了20047月,这个数目激增到291,约占58.2%,而且这种趋势还将继续。

    并行计算环境MPI

    MPI 是英文Message Passing Interface 的缩写, 是基于消息传递编写并行程序的一种用户界面。它提供了一种与语言和平台无关,可以被广泛使用的编写消息传递程序的标准。 MPI吸取了众多消息传递系统的优点,以语言独立的形式来定义这个接口库, 并提供了与CFortranJava语言的绑定. 这个定义不包含任何专用于某个特别的制造商、操作系统或硬件的特性. 由于这个原因, MPI在并行计算界被广泛地接受。它几乎被所有并行计算环境(共享和分布式存储并行机、MPP、机群系统等)和流行的多进程操作系统(UnixWnidows)所支持,基于它开发的应用程序具有最佳的可移植性。MPI是目前高效率的超大规模并行计算(1000个处理器)最可信赖的平台,工业、科学与工程计算部门的大量科研和工程软件(气象、石油、地震、空气动力学、核能等)目前已经移植到MPI平台,发挥了重要作用。现已成为目前国际上最流行的并行编程环境之一

    MPI的定义是多种多样的,但不外乎下面三个方面。它们限定了MPI的内涵和外延

    1MPI是一个库,而不是一门语言。许多人认为MPI就是一种并行语言,这是不准确的。但是按照并行语言的分类,可以把FORTRAN+MPIC+MPI看作是一种在原来串行语言基础之上扩展后得到的并行语言。MPI库可被FORTRAN77/C/Fortran90/C++调用。从语法上说,它遵守所有对库函数/过程的调用规则,和一般的函数/过程没有什么区别。

    2MPI是一种标准或规范的代表,而不特指某一个对它的具体实现。迄今为止,所有的并行计算机制造商都提供对MPI的支持,可以在网上免费得到MPI在不同并行计算机上的实现。一个正确的MPI程序可以不加修改地在所有的并行机上运行。

    3MPI是一种消息传递编程模型,并成为这种编程模型的代表和事实上的标准。MPI虽然很庞大,但是它的最终目的是服务于进程间通信这一目标的。 

      作为一种有效的、容易理解的编程模型,消息传递模型已被广泛的应用到并行计算中,同时也产生了许多消息传递系统工具,如P4PVMExpress等。虽然在通过消息完成进程间通信的底层概念上这些系统是相同的,但在语法和精确的语义方面,它们之间又有着很大的差异。这急需要一种统一的标准对其他进行规范。在这种背景下,MPI产生了。

      许多组织对MPI标准的建立作出了贡献,这些组织主要来自美国和欧洲,大约有60位代表,分属40多个不同的单位,包括了并行计算机的多数主要生产商以及来自大学、政府、实验室和工厂的研究人员。

    MPI的标准化开始于1992年在威吉尼亚的威廉姆斯堡召开的分布存储环境中消息传递标准的讨论会,由DongarraHempelHeyWalker建议的初始草案于199211月推出,并在19932月完成了修订版,就是MPI1.019956月推出的MPI1.1对原来的MPI作了进一步的修改、完善和扩充。

    但是当时推出MPI标准时,为了能够使它尽快实现并迅速被接受,许多需要但实

    现起来比较复杂的功能都没有定义,比如并行I/O。当MPI被广泛接受之后,扩充并提高MPI功能的要求就越来越迫切了。于是在1997年的7月,在对原来的MPI作了重大扩充的基础上,又推出了MPI的扩充部分MPI2,而把原来的MPI各种版本称为MPIlMPI-2的扩充很多,但主要是三个方面:动态进程管理、远程存储访问和并行I/O

      由于MPI是一个库而不是一门语言,因此对MPI的使用必须和特定的语言结合起来进行。FORTRAN是科学与工程计算的领域语言,而C又是使用最广泛的系统和应用程序开发的语言之一,因此对FortranC的支持是必须的。

    因此在MPI-1中明确提出了MPIFortran77C语言的绑定,并且给出了通用接口和针对Fortran77C的专用接口说明。MPI-1的成功说明MPI选择的语言绑定策略是正确和可行的。在MPI-2中除了和原来的Fortran77C语言实现绑定之外,进一步与Fortran90C++结合起来提供了四种不同的接口,为编程者提供了更多选择的余地。

    到目前为止,已经有很多厂商和研究机构都实现了MPI标准,拥有自己的MPI程序运行系统,大致分为两类:建立在厂家专用的环境之上MPI实现如IBM SP2POE/MPL,Intel ParagonOSF/Nx等。

     MPI 提供两种数据传输机制:阻塞式(blocking)和非阻塞式(non-blocking) 通信。阻塞式通信调用可以保证资源安全的重复使用,诸如缓冲区(包括接收缓冲区、发送缓冲区等)的使用。这种方式简化了通信握手和资源轮询的繁琐过程。而非阻塞式通信调用则允许通信和计算的叠加。在适当硬件的支持下,数据复制可以与通信同时进行。然而,非阻塞式调用的返回却不能保证资源的再利用。

    阻塞式和非阻塞式调用都可以实现以下的通信方式:标准型(standard )、缓冲型(buffered)、同步型(synchronous)和就绪型(ready)。

     

    在消息传递编程模型中,而传递原语中,消息的大小是一个很重要的参数,以往的编程平台要求程序员给出消息的总字节数以确定消息的大小,但由于异构机在表示同一类型的数据时,所采用的机器字长可能是不一样的,这样就不可避免地给消息传递带来问题,即表示相同类型的同样个数的数据所占缓冲区内存总字节数随机器的不同而变化,从而使得并行程序对硬件有极强的依赖性,在程序移植时,用户不仅需要深入了解机器特性,还有可能需要修改每一条消息传递原语,不利于并行程序的交流及并行计算技术的推广。

    MPI针对上述问题MPI 预定义了它的数据类型。MPI 的编程者也可以构造自己的派生数据类型。当这些数据类型在同构的分布式并行环境之间通信时,不需要数据的转换就可以直接使用,在异构的计算机群之间通信还需要用位(Byte)传输,然后进行数据的转换才可以实现不同体系结构计算机之间的通信,这时要用到MPI_BYTE MPI_PACKED两个函数调用。Fortran C 语言中不同的数据类型在MPI 标准中有不同的表示:

    MPI支持的数据类型

    MPI C data types

    MPI Fortran data types

    MPI_CHAR

    signed char

    MPI_CHARACTER

    Character(1)

    MPI_SHORT

    signed short int

     

     

    MPI_INT

    signed int

    MPI_INTEGER

    integer

    MPI_LONG

    signed long int

     

     

    MPI_UNSIGNED_CHAR

    unsigned char

     

     

    MPI_UNSIGNED_SHORT

    unsigned short int

     

     

    MPI_UNSIGNED

    unsigned int

     

     

    MPI_UNSIGNED_LONG

    unsigned long int

     

     

    MPI_DOUBLE

    double

    MPI_REAL

    real

    MPI_FLOAT

    float

    MPI_DOUBLE_PRECISION

    double precision

    MPI_LONG_DOUBLE

    long double

     

     

     

     

    MPI_COMPLEX

    complex

     

     

    MPI_LOGICAL

    logical

    MPI_BYTE

    8 binary digits

    MPI_BYTE

    8 binary digits

    MPI_PACKED

    用于MPI数据打/解包

    MPI_PACKED

    用于MPI数据打/解包

     

    MPI的一个关键特征就是通信集(Communicator)通信集表明通信的上下文,或者说是通信在哪些进程之间进行是合法的,保证不同的通信集之间的通信不互相干扰。MPI中,进程以组内的相对序列号rank来标识,如果没有编程者的明确指定,MPI 有一个缺省的通信集的名字MPI_COMM_WORLD ,这个通信集是预先定义的。通信集参数则说明所涉及的进程组,使用该通信子的通信操作限制在该进程组的进程之间。这样,一组进程集上的库代码被用于另一组进程集时,库代码无需改动,而只要重新定义描述该进程集的通信集。每一个通信集定义了一个唯一的进程组通信上下文。由上下文和区别消息的标志一起来进一步区别不同进程上下文的具有同一个标识的消息。上下文由系统严格管理,对用户是透明的,有力地保证了库代码的消息通信互不干扰。

    MPICH一种最重要的MPI实现, 也是最著名、应用最广泛的。它由Argonne国家实验室和密西西比州立大学(Mssissiippi State Unviersity)共同开发的开放源代码软件。目前MPICH的最新版本是MPICH-2.1.x ,常用版本是MPICH1.2.x, 它支持部分的MPI-2的特征。本文研究的就是在MPICH1.2.x基础上构建的并行计算环境容错。

    MPICH的优点就是在可移植性和性能这两个方面得到最好的平衡。MPICH几乎可以运行在几乎所有的硬件平台,如MPPSMP、集群系统等;而且在不同的软件平台,如unixLinuxSun0SHP-uxWindowsNT等,都有可用的版本。

    这些皆得益于MPICH的层次结构。它将不同性质的功能在不同层次实现,将不同性质的代码在不同层次实现,回避了可移植性和性能的冲突点,将二者的实现分离开来。MPICH的分层的界面的标准在于硬件平台的独立性。因为,一方面MPI标准中的接口定义都是平台无关的,另一方面要实现MPI标准必须以具体的平台为基础,所以代码很自然的就有两种不同的属性。

    MPICH的最上层就是MPI的标准接口,供用户调用的API;它主要由集合通信(collective communication)函数组成,它们通过点对点函数实现。如:MPI_SendMPI_RecvMPI_Scatter等。

    中间层在MPICH中被称为抽象设备层(ADI),它的功能是指定欲发送或接收的消息、数据的传输、消息队列的管理和提供运行环境信息。ADI一方面将代码按照与硬件无关和与硬件有关的原则分开,另一方面又充当着二者的纽带,完成功能映射,因而ADI之上的所有代码都是独立于硬件平台的,可以被各种系统共享,ADI之下就是各种平台相关的实现方法。ADI可以直接在网络接口层面上实现,也可以通过下一层接口实现。MPICH采用的是后一种方法,它充分利用了消息传递系统P4。它的接口函数通常有MPID_InitMPID_SendDatatypeMPID_SendContigMPID_RecvDatatype等。

         底层则是与特定通信环境相关的接口,例如工作站机群上的p4通信库、曙光1000上的NX库、曙光3000上的BCL通信库等

     

    展开全文
  • 并行计算机未来发展前景

    千次阅读 2016-11-24 20:37:47
    20世纪60年代初期, 由于晶体管以及磁芯...现代计算机的发展历程可以分为2个时代:串行计算时代和并行计算时代。并行计算是在串行计算的基础上发展起来的。并行计算将一项大规模的计算任务交由一组相同的处理单元共同完
  • 并行计算计算机集群

    千次阅读 2011-11-12 15:44:53
    并行计算计算机集群 (2011-10-09 11:56:37) 标签: 校园 分类: 工作篇 并行计算模型 并行计算模型通常指从并行算法的设计和分析出发,将各种并行计算机(至少某一类并行...
  • 原文转自:从串行到并行,从并行到分布式 1. 概念 假设有AB两个任务,则串行、并行、并发的区别如图1所示。 串行 A和B两个任务运行在一个CPU线程上,在A...在道程序环境下,并行性使个程序同一时刻可在不同...
  • 服务器并行计算pai值C#原代码(模拟超级计算机) 稍后上传....
  • 并行计算分布式计算网格高性能计算机资料收集    并行计算是相对于串行计算来说的,所谓并行计算分为时间上的并行和空间上的并行。时间上的并行就是指流水线技术,而空间上的并行则是指用个处理器并发的执行...
  • 计算机指令级并行

    千次阅读 2012-12-17 22:17:46
    提高桌面级计算机指令级并行度的方法 ... 作者:未知 厚朴教育来源:转载 点击数:525 更新时间:2011-7-24 ... 并行计算从其并行的粒度来看,分为指令级、循环级、过程级、子程序级、作业级;而从并行计
  • [并行计算] 1. 并行计算简介

    万次阅读 多人点赞 2017-07-20 15:30:07
    这篇帖子旨在为并行计算这一广泛而宏大的话题提供一个非常快速的概述,作为随后教程的先导。因此,它只涵盖了并行计算的基础知识,实用于刚刚开始熟悉该主题的初学者。
  • 并行计算

    千次阅读 2012-04-15 09:23:22
    并行计算 求助编辑百科名片 并行计算或称平行计算是相对于串行计算来说的。所谓并行计算可分为时间上的并行和空间上的并行。 时间上的并行就是指流水线技术,而空间上的并行则是指用个处理器并发的执行...
  • 计算范式之并行计算

    万次阅读 2017-12-03 22:33:47
    在说我的主题云计算之前,我还行拓展一个很老的知识点,就是并行计算,这个概念应该是四五十年的历史了,在计算机里面应该是算是old的了。 摩尔定律大家都知道,简单说每年翻一倍,但这个定律过去几年随着intel CEO...
  • Matlab 并行计算学习初步

    万次阅读 多人点赞 2018-08-09 08:19:57
    Matlab 并行计算学习 1. 简介 高性能计算(High Performance Computing,HPC)是计算机...并行计算(Parallel Computing)是指同时使用多种计算资源解决计算问题的过程,是提高计算机系统计算速度和处理能力的一种...
  • TensorFlowGPU并行计算

    万次阅读 2016-09-19 19:11:32
    1. TensorFlow指定特定GPU或者CPU进行计算:说明:示例计算机为单CPU(编号为0),单GPU(编号为0),安装的TensorFlow为GPU版。本文的结构如下: 默认为GPU #0 指定CPU #0 指定GPU #1 指定GPU #0 + CPU #0 1.1 默认...
  • IEEE1284信号及脚序 IEEE-1284定义了一对一的异步双向并行接口。其中PC机使用A型接头,DB-25孔型插座,包括17条信号线和8条地线,信号线又分为3组,控制线4条,状态线5条,数据线8条。 打印机使用B型接头,为36PIN 0...
  • 并行计算及并行算法

    万次阅读 多人点赞 2018-06-13 22:27:31
     简单地说,并行计算就是在并行计算机上所做的计算。从普通意义上讲,它和常说的高性能计算、超级计算等是同义词。并行计算的初衷是为了努力仿真自然世界中一个序列中含有众多同时发生的、复杂且相关事件的事务状态...
  • 用Python实现核心并行计算

    千次阅读 2019-07-03 15:06:24
    用Python实现核心并行计算 原文链接 平常写的程序,无论是单线程还是线程,大多只有一个进程,而且只能在一个核心里工作。所以很应用程序即使正在满载运行,在任务管理器中CPU使用量还是只有50%(双核CPU)或...
  • 并行计算机的现状与发展趋势

    千次阅读 2012-04-15 09:22:21
    并行计算机的现状与发展趋势 ...曾任计算所副总工程师、国家并行计算机工程技 术研究中心副主任等职,两次荣获国家科技进步一等奖。 最近几年,超级计算机领域连续出现了一些令人担忧的事情(见表1)。 @@150970
  • 并行计算分类

    千次阅读 2016-10-13 18:39:20
    并行计算分类
  • 并行计算导论 pdf

    热门讨论 2011-01-11 13:00:55
    本书是并行计算,特别是分布式并行计算环境和消息传递并行 编程的入门教材,目的是促进并行计算技术在我国的应用。书中介 绍了并行计算的基础知识、Linux/UNIX 的基本使用、基于Linux 机 群的并行计算平台的建立、...
  • 并行计算π值

    千次阅读 2018-04-19 10:37:22
    并行计算π值并行计算定义 并行计算或称平计算是相对于串行计算来说的。它是一种一次可执行个指令的算法,目的是提高计算速度,及通过扩大问题求解规模,解决大型而复杂的计算问题。所谓并行计算可分为时间上的...
  • 并行计算vs分布式计算

    千次阅读 2014-06-17 20:57:53
    一般认为,集中在同一个机柜内或同一个地点的紧密耦合处理机系统或大规模并行处理系统是并行处理系统,而用局域网或广域网连接的计算机系统是分布式处理系统。松散耦合并行计算机中的并行操作系统有时也称为分布式...
  • 并行计算圆周率π

    千次阅读 2016-10-19 10:21:44
    简单说明除了“数据挖掘与机器学习”,学院还开了“分布与并行计算”这门课,同样也是要求我们计算机1、2班的同学都选修这门课。 采用并行的方式计算π,是这门课的第二个实验内容,看起来很简单,实际上也很简单,...
  • 科普:并行计算、分布式计算、集群计算和云计算 ...为执行并行计算,计算资源应包括一台配有处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解...
  • 计算机体系结构/并行与分布计算/存储系统  中国计算机学会推荐国际学术刊物   (计算机体系结构/并行与分布计算/存储系统) 一、A类 序号 刊物简称 刊物全称 出版社 ...
  • 计算机并行与串行数据的处理

    千次阅读 2011-04-20 22:38:00
    计算机处理数据方式是并行的,网络传输数据是比特流,即串行的数据。在计算机端接收数据时,需要将串行的数据转换为并行数据,计算机是如何处理的?下面从程序的角度进行解说。首先是硬件上进行转换。网卡上一个硬件...
  • 为执行并行计算,计算资源应包括一台配有处理机(并行处理)的计算机、一个与网络相连的计算机专有编号,或者两者结合使用。并行计算的主要目的是快速解决大型且复杂的计算问题。    并行计算可以划分成时间并...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 182,159
精华内容 72,863
关键字:

多计算机并行计算