《并行计算机系统》PPT课件.ppt
《《并行计算机系统》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《并行计算机系统》PPT课件.ppt(96页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第九章 并行计算机系统的程序设计第一节并行计算机系统的数据通信第二节Cache与存储器的数据一致性第三节多处理机的同步第四节并行程序设计模型第一节 并行计算机系统的数据通信n数据包数据包q寻径信息q序号q数据内容q校验位q协议号q时间戳存储转发store-and-forward电路交换circuitswitching虚拟切换virtualcut-through虫孔寻径wormholeMPInMessagepassinginterfacen用于多处理器系统和集群系统q进程通过调用库函数进行消息收发通信q支持异构计算n标准的消息传递函数库q点到点通信函数q群集通信函数q不是一种语言n消息传递机制q
2、点对点通信q群集通信MPI的点对点通信机制n发送操作模型发送操作模型q标准的标准的n同步或缓存的(取决于实现)q缓存的缓存的n把发送缓存复制到缓存后返回q同步的同步的n缓存被接收方读取后返回q就绪的就绪的n在接收方就绪时启动发送(启动发送后即返回)n发送发送/接收操作模型接收操作模型q阻塞的阻塞的n等到消息复制到缓存后返回q非阻塞的非阻塞的n启动发送/接收后即返回MPI点对点通信函数例子nMPI_INITq启动MPI计算nMPI_FINALIZEq结束MPI计算nMPI_COMM_SIZEq确定进程数nMPI_COMM_RANKq确定自己的进程号nMPI_SENDq标准地发送一条消息nMPI_
3、BSENDq发送一条缓存的消息nMPI_SSENDq发送一条同步的消息nMPI_RESENDq发送一条就绪的消息nMPI_ISENDq标准地发送一条非阻塞消息nMPI_IBSENDq发送一条缓存的非阻塞消息nMPI_ISSENDq发送一条同步的非阻塞消息nMPI_RESENDq发送一条就绪的非阻塞消息nMPI_RECVq标准地接收一条消息nMPI_IRECVq非阻塞地接收一条消息nMPI_BCASTq广播一条消息nMPI_WAITq等待发送/接收完成nMPI_TESTq测试发送/接收是否完成MPI的聚合通信机制n同步方式同步方式q同步发送和阻塞接收q所有进程都完成调用时返回(屏障同步)n特异方
4、式特异方式 distinguishedq一对多通信n散播n广播q多对一通信n归约q求最大值、最小值、总和、乘积等n收集MPI群集通信函数例子nMPI_Bcastq一对多广播同样的消息nMPI_Gatherq多对一收集各个进程的消息nMPI_Allgatherq全局收集nMPI_Scatterq一对多散播不同的消息nMPI_Alltoallq每个进程给所有其他进程发送一个消息q每个进程从所有其他进程接收一个消息nMPI_Reduceq多对一归约nMPI_Reduce_scatterq归约并散播nMPI_Barrierq屏障同步第一节 并行计算机系统的数据通信1.存储转发store-and-for
5、wardn问题:延迟大,缓存多第一节 并行计算机系统的数据通信2.电路交换circuitswitching问题:冲突多,利用率低第一节 并行计算机系统的数据通信3.虚拟切换virtualcut-through问题:缓存多flits第一节 并行计算机系统的数据通信4.虫孔寻径wormhole问题:死锁和活锁第一节 并行计算机系统的数据通信n虫孔寻径与存储转发的比较例例9-1n设多处理器计算机中两个结点之间的距离为10,一个处理器发出的消息包含100个片段(flit),假设每个时钟周期可以在连路上传递一个片段,问在存储转发和虫孔寻径两种方式下消息的传递最快分别需要花费多少时间?解:解:存储转发方式
6、,消息传递时间为10*100=1000个时钟周期虫孔寻径方式,消息的第一个片段在网络上的传递时间为10个时钟周期,后99个片段增加99个时钟周期,共109个时钟周期。第二节 Cache与存储器的数据一致性n共享存储器多处理机系统的问题q访存冲突与数据一致性q数据多个副本之间的相同性数据的一致性类型n串行一致性n弱化一致性n处理机一致性n松散一致性数据一致性串行一致性串行一致性sequentialconsistencyn处理机P对于存储单元X的写操作之后进行的读操作,其间如果没有其它处理机对X进行写访问,则总是返回由P写入的数值。n在一个处理机P1对于单元X进行写操作之后,另一处理机P2对于单元
7、X的读操作只要两者足够分离并且没有其它对于X的写操作发生,就能够返回P1写入的数值。n对于同一单元的写操作是顺序进行的,即两个处理机对于相同单元进行的写操作的顺序从任何处理机看都相同。如果数值1和2依次写入一个位置,处理机不可能先读得2,再读得1。数据一致性n弱化一致性弱化一致性weakconsistencyq程序通过同步操作强调一致性,使得在这些同步点上数据保持一致,而不要求数据随时都是一致的。n处理机一致性处理机一致性processorconsistencyq每个处理机发出的写操作被其它处理机看到的都保持原顺序,但两个不同处理机的写操作顺序可被其他处理机以不同的顺序看到。n松散一致性松散一
8、致性releaseconsistencyq采用acquire-release同步操作使得数据保持一致,从而减少对硬件一致性处理的要求。数据一致性的实现n软件方法q编译分析q避免cache共享数据n总线监测q各cache设置监测部件nMESI协议n目录表法q全映射q有限目录q链式目录nSCI总线监测n所有cache不断监测总线上的每一个地址q总线使得写操作变成串行的qCache失效时需要确定数据块的位置nwriteinvalidateprotocolqinvalidatesothercopiesonawrite.q多次写操作时只需一次invalidatenwriteupdateorwritebr
9、oadcastprotocolqupdateallthecachedcopiesofadataitemwhenitiswrittenq读操作的命中率高cpu1cpu2cache1cache2MainmemoryMESI协议数据一致性的实现n目录表法q链式目录nSCIscalablecoherenceinterfaceIEEE1596-1992数据一致性对cache性能的影响n影响cache性能的因素q单个处理器cache失效的数据传输q数据通信引起的传输n导致invalidations和后继cache失效n一致性失效处理机数量Cache容量块大小数据一致性对cache性能的影响一致性失效n真共
10、享失效真共享失效true sharing misses q由cache一致性操作的通信引起q对共享数据的第一个写操作引起invalidationn伪共享失效伪共享失效false sharing misses q由每个cache块只有一个有效位引起q一个块中其他数据的写操作引起cache块读操作的失效qCache块是共享的,但是数据字并没有共享数据一致性对cache性能的影响n一致性失效的例子q假定数据字x1和x2在同一个数据块中n数据块在P1和P2之间共享q假定以下事件序列第三节 多处理机的同步多线程并行程序设计面临的挑战n同步q给线程执行顺序施加约束的强化机制q影响程序的正确性和性能q可能导
11、致死锁n通信q线程间的数据传递n负载平衡q线程之间执行时间的平衡n可伸缩性q线程数量增加的挑战Issues in MIMD multiprocessors architecturesn多线程程序运行中的问题nData racesqUncertaintyofdataaccessordernSynchronizationqCostofdataaccessordernThread stallsqForgettingunlockofmutexnDead locksqUnlimitedprocessorstallnFalse sharingqSlowdownprocessors并行程序设计面临的挑战n数
12、据竞争q数据相关性险象q以下两个if语句的表达式可能都为真吗?数据竞争之二线程1线程2原始代码t=x;x=t+1;u=x;x=u+2;并行情况1t=x;/xis0 x=t+1;/xis1u=x;x=u+2;/xis2并行情况2t=x;x=t+1;/xis1u=x/xis0 x=u+2/xis2并行情况3t=x;/xis0 x=t+1;/xis1u=x;x=u+2;/xis3数据竞争之三nif(list-next=NULL)ninsert(list-next,node1)nif(list-next=NULL)ninsert(list-next,node2)node2node1数据竞争的解决n变量
13、局部化q将变量改为线程局部的q如将全局和分解为部分和n用临界区控制共享变量的访问q通过锁、信号量等实现q每个共享数据用一把锁n互斥机制同步机制n临界区criticalsectionq访问共享数据的程序段q在某段时间内仅允许一定数目的线程访问的一段代码q大多数情况下一次只有一个线程能够进入同一个临界区q可采用互斥机制实现同步机制n共享存储器型多处理机q信号量nPV操作q互斥机制n锁n条件变量q屏障n栅栏n消息传递型多处理机q消息的发送和接收信号量n通过PV操作在线程间传递同步信息qP操作将一个变量减1n减后的变量小于0时线程被阻塞qV操作将一个变量加1n加后的变量大于或等于0时释放一个线程q变量
14、初始化为0或1n互斥量MutexqPV操作都是原子的n不可中断的操作n用于保护共享的资源q生产者-消费者问题锁n两个基本的原子操作qAcquiren原子地等待锁的状态变成打开的状态n将打开的锁状态变成关闭的状态q这时该线程获得了锁qReleasen原子地将锁的状态从关闭状态变成打开的状态q这时线程释放了锁锁的类型n互斥量q用PV操作上锁和解锁q有阻塞q可以加上时间属性n递归锁q可以递归地获得的锁q用于递归程序n读写锁q多读单写锁n限制写操作只能由一个线程执行q用于对共享变量的读写操作n自旋锁q非阻塞的锁q用于多处理机系统和多核系统阻塞型锁机制的问题 n优先级的颠倒priorityinversi
15、onq当一个低优先级的线程占用了一个锁之后,需要同一个锁的高优先级线程就只能等待。n护航Convoyingq当一个线程拥有一个锁而被切换出去时其他的线程如果需要同一个锁的话都不能运行下去q其他线程都围着拥有锁的线程团团转n死锁Deadlockq锁的拥有和依赖关系形成一个环死锁及其解决n死锁的原因q对资源(锁)的访问是独占的q线程在已经持有一个资源时继续请求其他资源q所有线程都不放弃已经持有的资源q线程对资源的请求形成一个环n解决方法q复制需要独占访问的资源q按照一定的顺序获取资源n有序嵌套q无法获取其他资源时放弃已持有的资源q调用构件时避免使用锁条件变量n基于信号量机制q但操作不涉及存储的数值
16、n等待的线程被阻塞q条件满足时才被唤醒q而不是循环等待q满足条件时唤醒其他协作的线程n三种操作q等待q发信号q广播栅栏与屏障n栅栏fenceq通过指令实现q保证存储器操作的一致性n保证所有在栅栏之前的访存操作完成n在此之前停下所有在栅栏之后的访存操作n屏障barrierq线程执行的协调机制q通过同步机制实现q运行的线程必须等待所有的线程都运行到指定同步点q然后各线程才继续下一步的运行q需要对到达的线程进行原子的计数操作同步操作中的硬件原语n原子交换atomicexchangeq实现锁n测试并设置test-and-setq实现锁n读取并加1fetch-and-incrementq实现屏障n读取并
17、更新test-and-updateq实现PV操作原子交换原子交换n将一个寄存器的数值与一个存储器中的数值进行交换n难以在并行机中实现nitrequiresbothamemoryreadandawriteinasingle,uninterruptibleinstructionnhardwarecannotallowanyotheroperationsbetweenthereadandthewritewithoutdeadlockAB原子交换原子交换n解决方案q用两条指令实现n链接装载loadlinkedn条件存储storeconditionalq返回一个数值q表示其存储操作是否成功n两条指令按顺
18、序执行q如果链接装载指令指定的存储单元在对应的条件存储指令执行之间被改变,则存储指令执行时失败。q如果处理机在这两条指令之间进行了上下文交换,则该条件存储指令也将失败。派生原语1.原子交换exchR4,0(R1)try:mov R3,R4;move exchange value from R4 to R3ll R2,0(R1);load linkedsc R3,0(R1);store conditionalbeqz R3,try;branch store failesmov R4,R2;put load value in R4宏指令macroinstructionR3BR4R2派生原语2.读取
19、并加1:try:ll R2,0(R1);load linkedaddi R2,R2,#1;incrementsc R2,0(R1);store conditionalbeqz R2,try;branch store failsR2BR2+1派生原语3.转锁spinlock处理机用循环方法试图得到的锁n没有没有cache一致性机制时一致性机制时li R2,#1;load immediatelockit:exch R2,0(R1);atomic exchangebnez R2,lockit;already locked?n有有cache一致性一致性机制时机制时lockit:lw R2,0(R1);
20、load of lockbnez R2,lockit;not available-spinli R2,#1;load locked valueexch R2,0(R1);swapbnez R2,lockit;branch if lock wasnt 01L派生原语采用链接装载/条件存储实现转锁lockit:ll R2,0(R1);load linkedbnez R2,lockit;not available-spinli R2,#1;locked valuesc R2,0(R1);storebeqz R2,lockit;branch if store failes1BR2派生原语n屏障同步ba
21、rrierq强制所有的线程等待n直到所有的线程都到达屏障时释放所有的线程n用一个计数器对到达的线程计数(Gather阶段)n用一个信号释放所有的线程(release 阶段)q用两个自旋锁实现n一个用于保护计数器n一个用于锁住线程release派生原语屏障同步的实现lock(counterlock);/*ensure update atomic */if(count=0)release=0;/*first arrival reset release*/count=count+1;/*count arrivals */unlock(counterlock);/*release lock*/if(c
22、ount=total)/*all arrived */count=0;/*reset counter*/release=1;/*release processes*/else/*more to come*/spin(release=1);/*wait for arrivals*/派生原语n问题q屏障可能循环使用q从屏障离开的线程可能再次进入屏障q一个线程可能在另一个线程离开屏障之前又进入屏障n代码的bugrelease派生原语n解决方案q对离开的线程计数n不允许线程在其他线程都离开上一个屏障之前又进入屏障q从而又初始化屏障q传感反相屏障sense-reversingn使用线程局部变量q初始化为
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 并行计算机系统 并行 计算机系统 PPT 课件
限制150内