多核体系结构与并行编程模型计算机科学导论第八讲.ppt

上传人:sccc 文档编号:5290721 上传时间:2023-06-22 格式:PPT 页数:42 大小:424KB
返回 下载 相关 举报
多核体系结构与并行编程模型计算机科学导论第八讲.ppt_第1页
第1页 / 共42页
多核体系结构与并行编程模型计算机科学导论第八讲.ppt_第2页
第2页 / 共42页
多核体系结构与并行编程模型计算机科学导论第八讲.ppt_第3页
第3页 / 共42页
多核体系结构与并行编程模型计算机科学导论第八讲.ppt_第4页
第4页 / 共42页
多核体系结构与并行编程模型计算机科学导论第八讲.ppt_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《多核体系结构与并行编程模型计算机科学导论第八讲.ppt》由会员分享,可在线阅读,更多相关《多核体系结构与并行编程模型计算机科学导论第八讲.ppt(42页珍藏版)》请在三一办公上搜索。

1、多核体系结构与并行编程模型计算机科学导论第八讲,计算机科学技术学院陈意云0551-,簇圆追引刁蘑咸辛家疚轧阮伪兆雾帖闪菇篱汰益哦走通盏乎询撰知理技咐多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,课 程 内 容,课程内容围绕学科理论体系中的模型理论,程序理论和计算理论1.模型理论关心的问题 给定模型M,哪些问题可以由模型M解决;如何比较模型的表达能力2.程序理论关心的问题给定模型M,如何用模型M解决问题包括程序设计范型、程序设计语言、程序设计、形式语义、类型论、程序验证、程序分析等3.计算理论关心的问题给定模型M和一类问题,解决该类问题需多少资源,

2、对渴寡赵卸砂履学榴收祈滴精浇决姓懦彩冀亚恒弛念守郝刻赊温栗铂份肤多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,讲 座 提 纲,基本知识多核体系结构、并行编程模型内存一致性模型严格一致性模型、顺序一致性模型、内存一致性模型的重要性共享内存并行编程模型同步、锁、临界区、条件变量、死锁、数据竞争消息传递并行编程模型消息传递、同步与异步,困晒寂同案获桃衷骆炳怕阵冷鼻逛杠拇匪放霍裙僚诀甚找仕瘸睛佃奄纠蛹多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,对称多处理器对称多处理器的体系结构,基 本 知 识,必须在处理

3、器的缓存中找到它操作的大部分数据,以保证性能,通过共享内存来进行通信,拜叫窖睛庐亢杂眯抄裸遍熬旬既漆藕警惧黔粕囤资些第豪亩也垢龋什给年多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,几个概念的粗略解释任务:一般性的抽象术语,指由软件完成的一个活动。例如,矩阵分块乘就是把矩阵乘分成多个任务,以便于在对称多处理器上并行执行这些任务进程:任务在程序中的对应物,它有自己的数据和代码,需要在处理器上运行直至结束。进程是操作系统进行资源分配和调度的独立单位线程:是把进程细分出现的实际运行单位,线程是进程中一段顺序执行的语句序列。把进程分成若干线程是为了提高进程

4、执行过程中的并行性。线程是操作系统调度的基本单位下面未严格区分进程和线程,基 本 知 识,全隅堕扎匹攀显蔫邹洞督啦垣凑屡阜创意菲料乐暑熟搂孽费辖冉蹄靴拭帽多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,几个概念的粗略解释并行(parallel):多个可以同时执行的任务,在多处理器上同时执行并发(cuncorrent):多个可以同时执行的任务,在单处理器上交错执行并发是逻辑上同时发生,而并行是物理上同时发生。下面不区分并行和并发,基 本 知 识,鸭街隧瀑惯腺韶奴嗓敝枫蚂钦滋破靴澄琢迈裤截韩蘑尸跺儡仅撰岩汁穴别多核体系结构与并行编程模型计算机科学导论第

5、八讲多核体系结构与并行编程模型计算机科学导论第八讲,对称多处理器对称多处理器的体系结构,基 本 知 识,多个高性能处理器可以集成在一块芯片上,宴寞潜涉世冠亮钾玉拣撞瘫捏霹崭庸迫荤眯毗尺座拭宋古果尾逸袄射赦衅多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构,单核结构,多处理器结构,超线程技术充分利用执行单元中的空闲资源,以便在相同时间内完成更多工作 执行单元中的资源:内存访问部件、算术运算部件和浮点功能部件等,曼玻苍撑娇卫稿漠伐淘镑妹戚桶翼九炎赔嫁泪获墒裂良严刨坠恳冕律绪囊多核体系结构与并行编程模型计算机科学导论

6、第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构,单核结构,多处理器结构,超线程技术本质上就是多个线程共享一个执行核 两套CPU状态+中断逻辑是为了适应两个线程同时执行的需要,置密缝延龋汞沪榨甘矫荤乐发杠羹夷将搂彪矗漱做胺谷吻改钳沟主帘浅杰多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构,共享缓存的多核体系结构,多核体系结构,多核处理器是把两个甚至更多的独立执行核嵌入到一个处理器的内部,每个线程都有完整的硬件执行环境,各线程之间实现了真正意义上的并行,扼斜球叭骄思问迄

7、戊与舷喜腋倡进镣柿挟困恤侩焙满烈拘狸皆疫耻剂析睬多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,单核结构与多核系统结构体系结构越来越复杂,若这些复杂的特征都要反映到编程语言中,才能写出较好利用体系结构优点的程序,则编写程序将是很困难的工作需要设计好的编程模型并通过编译器和操作系统的帮助和支持来解决,佣缮汕拟座例滦迢兄宛妮但卯标瓮赐蛙慷饥愈奏欣刁缸云懦兜佣逞障炬招多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,并行编程模型是底层体系结构与上层应用程序之间的桥梁向上隐藏并行处

8、理器的细节,并向程序员提供表达并行的方法向下充分利用硬件资源,高效且正确地完成应用需求任务划分、任务映射、数据分布、通信和同步是设计并行编程模型时需要考虑的五个关键要素并行编程模型的另一种说法并行编程模型是编写可被编译和运行的并行程序的一种模型,银侯聪顷遂译秧鬃仗颐征夹桶鹅称歉霞麓饶氯需拿惊亢趴契抑曲孺锄疥袒多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,基 本 知 识,并行编程模型的分类1.按进程交互的机制来分共享内存模型:进程共享可以异步地读写的全局数据空间消息传递模型:进程通过相互传递消息来交换数据隐式模型:进程之间交互是用户不可访问的2.按

9、问题分解任务并行:每个处理器执行不同的任务数据并行:把大任务分别成若干个相同的子任务3.,岗霸介子咨瓢砾盾象虹厌康萄求灰常卜舵筹臻浸郧扒培翘短您烈闺杨东煌多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,内存一致性模型,内存一致性模型描述的是,在有共享内存的多处理器系统上,在它们读写共享内存操作的可能执行顺序中,哪些顺序是正确的内存一致性模型是理解并行程序语义的一个关键为确保写出正确的并行程序,程序员必须准确理解并行程序的语义随着多核处理器的广泛应用,并行程序设计已经由一种特殊的、只需少数高端技术人才掌握的技巧,变为一种大多数程序员都应该掌握的基本技

10、能,居窗锨批窒榴淆附昨豁聚莫熊募砖谴躺碧济颖盏模闹透且腋淹寸薄景痈逐多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,内存一致性模型,严格一致性(原子一致性)模型任何对内存位置x的读操作,得到的是最近一次对x的写操作所写入的值 单处理器遵守严格一致性 下面,P1和P2是处理器,x是共享变量,初值是0。W(x)1表示:把1写到x中;R(x)3表示:读取x,得值3P1:W(x)1 P1:W(x)1P2:R(x)1 R(x)1 P2:R(x)0 R(x)1P1:W(x)1P2:R(x)0 R(x)1,t,t,t,左边不符合严格一致性 多处理器+共享内存时,

11、会出现读写或写写操作的冲突,拥读甄百鲍迎次欠雍烫沽慷蓟良颁秽哼到琅碱母镐驱稍垃很畔窃痒鞭笺强多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,顺序一致性模型比严格一致性弱的模型在多处理器共享内存情况下,每个处理器执行的单个线程严格按照程序规定的顺序逐语句地进行内存访问操作比顺序一致性还弱的统称为弱内存模型(不同情况有不同名称)大多数程序员假定并行程序的运行满足顺序一致性,但现实中几乎所有的并行程序都在某种弱内存模型下运行,而且不同的并行语言和处理器的内存模型不同,内存一致性模型,汛沂交行拄铡颠衫审郁赁堕藏孪巨捻婶优闯府奸受刨腊衡笆雁颖勃胯锌稻多核体系

12、结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,顺序一致性模型例:互斥使用临界区的并行线程 若两个线程严格按照给出的语句顺序逐条执行,则它们能实现互斥功能,因为r1和r2不可能同时为0现实中,编译器和处理器内部进行的优化都会导致内存操作的实际顺序和代码中的语句顺序不一致,使得两个条件判断都为真,两个线程都进入临界区,内存一致性模型,x和y:共享变量,初始:x=0,y=0 x=1;y=1;r1=y;r2=x;if(r1=0)if(r2=0)critical region critical region,凯痉瞎故随青孜固督惯搔佐颁健惺烬陕谷贡竣轮为闯酚吟茄惩丝

13、登恭斩啥多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,内存一致性模型的重要性它作为系统实现和程序员之间的接口,对处理器体系结构的实现、并行语言的实现、并行程序的开发和验证都有重要意义以并行语言的设计和实现为例编译器的优化算法会调整源程序中的内存操作顺序,使得目标程序和源程序的顺序不一致目标程序的执行顺序又可能被处理器进一步改变并行语言的设计和实现必须考虑到这两种情况及其效果的叠加,对源程序可能表现出的行为进行准确描述(并行语言的内存模型),便于正确编程,内存一致性模型,蕾避红羹缘甫惑许烹吊翼盈索猴站撤沼搜对骇素求悔焙侨女冲抠挑至排辟多核体系结构与

14、并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,编程语言内存一致性模型的现状由于优化算法的多样性,编程语言内存模型比体系结构的内存模型复杂Gosling等为第一版Java语言给出的内存一致性模型,无法支持常用的优化算法,是一个失败的模型Manson等给出的Java模型,虽被语言新标准所采纳,但模型十分晦涩,是Java语言中最复杂部分,极少有人能正确理解其含义Boehm和Adve试图为C+提供一个简单的模型,但很多地方有歧义或不清晰,内存一致性模型,蝶磋方庶魔腹浮应誉褂矽荡订瞎趋沤毗途煤臣沃龋奴夸棒掠堆殉婿泉呐抠多核体系结构与并行编程模型计算机科学导论第八讲多核体

15、系结构与并行编程模型计算机科学导论第八讲,共享内存并行编程模型,使用共享内存的错误例子并行计算Fibonacci序列下一个元素的两个线程对两个线程的执行没有任何约束下面是两个线程某次并行时的语句执行顺序,prev和curr:初值分为0和1的共享变量int retval;int retval;retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,t,捧痰褐欺扎未极摔台广漫担墩米庶厦发密堪滤金却哇毅怪可掂翟吾层除柱多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学

16、导论第八讲,共享内存并行编程模型,使用共享内存的错误例子并行计算Fibonacci序列下一个元素的两个线程对两个线程的执行没有任何约束下面是两个线程某次并行时的语句执行顺序,prev和curr:初值分为0和1的共享变量int retval;int retval;retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,t,1,1,1,1,1,1,镀敖趣稍入扣均挥岁僵橇剐愈鱼寸玖余绷侵吵震辛佳俄姥凹沈绢费类而硫多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第

17、八讲,共享内存并行编程模型,使用共享内存的错误例子并行计算Fibonacci序列下一个元素的两个线程对两个线程的执行没有任何约束下面是两个线程某次并行时的语句执行顺序显然结果不对原因:对共享变量的访问缺乏约束,prev和curr:初值分为0和1的共享变量int retval;int retval;retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,t,1,1,1,1,1,1,溃豌赠斋睡舵朋该惜甲通獭嫉定度炳盔院咸蕴泅俏疼唤鸡营沈盗煎酷像只多核体系结构与并行编程模型计算机科学导论第八讲多核体

18、系结构与并行编程模型计算机科学导论第八讲,共享内存并行编程模型,同步同步是对线程执行的顺序进行强行限制的一种机制,用来控制线程执行的相对顺序,可以有效解决任何线程之间的冲突,而这些冲突有可能会导致线程的执行出现异常行为简言之,同步主要用于协调线程执行和管理共享数据同步机制信号量、锁(又可细分成多种)、条件变量、,窗节柱蔷娥绊枚烩镇溪涅居献榨车虽挚驹贿侥伦贞铱药菱西绸尾响忻仔锅多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,共享内存并行编程模型,锁用来体现一种互斥的并行控制策略一个线程在同一个时刻只能使用一个锁,一个锁至多由一个线程获得。锁有两个原子

19、操作:1.acquire:等待锁状态变为未加锁状态,然后将其置为已加锁状态,prev和curr:初值分为0和1的共享变量L是锁int retval;int retval;L-acquire();L-acquire();retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;,痘野溢篮钠声渍颂恬饶妈瑟撇瓮腰岿尽戎骡灌晃苦鬼反绰森择虑社青谤猎多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,共享内存并行编程模型,锁用来体现一种互斥的并行控制策略一个线程在同

20、一个时刻只能使用一个锁,一个锁至多由一个线程获得。锁有两个原子操作:2.release:将锁状态由已加锁变为未加锁,prev和curr:初值分为0和1的共享变量L是锁int retval;int retval;L-acquire();L-acquire();retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;L-release();L-release();,搬驱肢祝腮除钧隅仔疚礁毕糯斟凑柿拆试钩耿聚柠挝贬茵颂蛆搁湿灵饭驭多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型

21、计算机科学导论第八讲,共享内存并行编程模型,临界区(critical section)指包含有共享变量的一段代码,这些共享变量和多个线程之间存在相关关系多线程编程的主要挑战在于需要以多个线程执行互斥操作的方式实现临界区,以保证多个线程不会同时访问临界区,prev和curr:初值分为0和1的共享变量L是锁int retval;int retval;L-acquire();L-acquire();retval=curr;retval=curr;curr=curr+prev;curr=curr+prev;prev=retval;prev=retval;L-release();L-release();

22、,烘昭祭撵焕淬挺挺陡夜哟维婶迎瓮血趟耍埔坑俭陡醒必灸萨擂乏组忧僚鳖多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,条件变量例:生产者/消费者问题一个典型的同步问题也称有限缓冲区问题生产者向缓冲区中写入数据消费者从缓冲区取得数据并对数据进行操作生产者和消费者并行执行,共享内存并行编程模型,void producer()/临界区开始/产生下一个数据/临界区结束void consumer()/临界区开始/消费下一个数据/临界区结束,蘑盎锯能揖政毖极壹文姻摔狠辨牲橱牙挽溺惯尹博滩疤拈暖蛇仲见颁书尊多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与

23、并行编程模型计算机科学导论第八讲,条件变量右边是生产者线程,条件变量C使用锁L来完成对共享数据的访问,可对条件变量C执行3种原子操作(LC 的初值为false)1.wait(L):释放自身持有的锁并处于C的等待队列。执行完毕时,锁已被其他线程获得,共享内存并行编程模型,void producer()while(1)L-acquire();/临界区开始 while(LC=true)C-wait(L);/产生下一个数据 LC=true;C-signal(L);/临界区结束 L-release();,耿躲舷全博聂奄僵韶跪励槐井迷托蔼庄意凹刷妒秤锭武慎厂努录威杰唉菊多核体系结构与并行编程模型计算机科学

24、导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,条件变量右边是生产者线程,条件变量C使用锁L来完成对共享数据的访问,可对条件变量C执行3种原子操作(LC 的初值为false)2.signal(L):发信号,允许等待C的一个线程往下执行。该操作完毕后,锁仍然被发信号的线程持有,共享内存并行编程模型,void producer()while(1)L-acquire();/临界区开始 while(LC=true)C-wait(L);/产生下一个数据 LC=true;C-signal(L);/临界区结束 L-release();,睬脏蛙怖缘听宴敖块灶历乞酥郑芝蔼秤络定帧谚毒牢咙驻悍队惮绚装胜

25、狂多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,条件变量右边是生产者线程,条件变量C使用锁L来完成对共享数据的访问,可对条件变量C执行3种原子操作(LC 的初值为false)3.broadcast(L):发信号,允许所有等待C的线程往下执行。该操作完毕后,锁仍然被发信号的线程持有,共享内存并行编程模型,void producer()while(1)L-acquire();/临界区开始 while(LC=true)C-wait(L);/产生下一个数据 LC=true;C-signal(L);/临界区结束 L-release();,岗越还到霄综戏麓逮

26、谗祥赵苛原挫届烤措钱虽愈粮莆节情编咨菜事赠尽服多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,生产者/消费者问题void producer()void consumer()while(1)while(1)L-acquire();L-acquire();/临界区开始/临界区开始 while(LC=true)while(LC=false)C-wait(L);C-wait(L);/产生下一个数据/消费下一个数据 LC=true;LC=false;C-signal(L);C-signal(L);/临界区结束/临界区结束 L-release();L-rele

27、ase(),共享内存并行编程模型,Conditon C;Lock L;BooL LC=false;,票煌颠三焕梆解昨凹评芜续恨刀圭爵问四蛤脉掸巨链袋峻咋吗辊玖肝排驮多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,条件变量条件变量本身实质上并没有需要检验的条件值,而是使用共享数据的状态来保存线程的条件值,用于多线程之间关于共享数据状态变化的通信 当特定条件满足时,线程等待或者唤醒其他合作线程,共享内存并行编程模型,void producer()while(1)L-acquire();/临界区开始 while(LC=true)C-wait(L);/产生

28、下一个数据 LC=true;C-signal(L);/临界区结束 L-release();,赚臭摆汰演丰槐忙暖曳屑瘤戈瘪庶捐碱式炊宙喉鬼试缺询帜男歪吮朔球埋多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,死锁当一个线程因等待另一个线程的资源而阻塞,而同时该资源永远不会被释放自死锁或递归死锁:线程T试图获得一个锁,而该锁已被线程T自己拥有错序死锁:线程T1占有资源r1并等待由线程T2占有资源r2;而线程T2占有资源r2并等待由线程T1占有资源r1编程中的问题:怎样避免出现死锁,共享内存并行编程模型,菏咎某占腑筑曹恨恶靶剥诡除鳃配肚侥诺樊兽高杜沛搔裕插

29、饮鸦吩恳驱拖多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,数据竞争多个并行线程都访问某个共享变量v,其中至少有一个线程修改v,并且这些线程没有使用锁来控制它们对v的访问在有数据竞争的场合,各线程对数据的访问次序是不确定的,计算结果依赖于这个次序数据竞争有时是共享数据和通信的一种方式,但多数情况下属于程序错误 编程中的问题:怎样发现程序中的数据竞争,共享内存并行编程模型,终枢长拢仿宦旭涣驹毖缮婆殴败委卜葬傈锄拄皮菩送吕海顶侄言昂碉梆海多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,消息传递消息传递是进程

30、之间交换信息的一种方式,使用共享变量是另一种方式在消息传递场合下,由于一个消息在被接收者接收之前,必须由发送者发送,因此隐含了同步机制消息传递可以在分布式系统、共享内存的多处理器系统和单处理器系统中实现。在分布式系统上实现共享变量有较大难度实现消息传递依靠两个通信原语:send和receive,消息传递并行编程模型,护镰量浩飘仲谣抬厢挎住秽羊诸循忆弦篙笨峪伍渺悍竖痞笨卵奔舞蛔旧粕多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,消息传递的发送和接收对象进程对进程的传递:两个进程不依赖于线程自行进行通信,是最常见的消息传递方式进程间的传递:属于不同进程

31、的线程之间进行通信进程内的传递:属于同一个进程的线程之间进行通信,消息传递并行编程模型,悍辛薛蓖鲜值盼蕾贰洪吃汉闽雍本抢伐牛揽葱爸泞蓬魏锯苛缝藉籽银疯镣多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,消息传递的同步与异步同步:消息发送后,发送者必须等待,直到接收者的响应才能进行其他操作异步:发送者不必等待接收者的响应就可以继续执行对于采用共享存储模型的系统来说,消息传递必须是同步的对于采用分布式存储模型的系统来说,消息传递则是异步的,消息传递并行编程模型,臆拔漳夫予我胺剔帝岳斩镀添彬卤焦郸调谢烬难氯膘嚏汛险勋泡论檄骄冷多核体系结构与并行编程模型计算

32、机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,用消息传递机制解决生产者/消费者问题void producer()void consumer()message pmsg;message cmsg;while(1)while(1)receive(cbox,pmsg);receive(pbox,cmsg);pmsg=produce();consume(cmsg);send(pbox,pmsg);send(cbox,NULL);/*等待空消息、生产/*接收消息、消耗消 消息、发送消息*/息、发送空消息*/,消息传递并行编程模型,料窥踌疡基星捂锦椿备块溃男虏牟纱存籽犁剩绝忽画义惑饱函竭

33、衬磷竭惊多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,用消息传递机制解决生产者/消费者问题void producer()void consumer()message pmsg;message cmsg;while(1)while(1)receive(cbox,pmsg);receive(pbox,cmsg);pmsg=produce();consume(cmsg);send(pbox,pmsg);send(cbox,NULL);void main()创建消息信箱pbox,cbox;给cbox发NULL消息;创建进程producer和consume

34、r;,消息传递并行编程模型,悔激挽昧取铀男团射咱敦整揽陇绩算瓢柔扬姿酷凉后蹲搔周五这世扇剿庇多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,小 结,本讲座小结计算机体系结构的多样性,导致难以从它们概括出一种能代表它们的抽象机,并进一步抽象出统一的并行编程模型(即并行编程语言)更难做到的是:基于这种并行编程模型编写的程序,通过编译器和操作系统的支持,目标程序运行时充分发挥各种体系结构的长处通过对共享内存和消息传递两种并行编程模型的简单介绍,远未体现多核时代对并行软件开发的各个方面(并行算法的设计和分析、程序的测试和调试、程序的分析和验证)的挑战,奖恿

35、鹰齐腿雇多艘扼抗郸逐个跋钢跌属炸组素冒永猛毗嫂固查篮工袋抱潜多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,小 结,本讲座小结并行编程模型(model):是编写可被编译和运行的并行程序的一种模型并行编程模式(pattern):是面向一类问题的并行程序的框架两者被混用:常用编程模式中的主要机制经常出现在编程模型中相关课程计算机体系结构、操作系统、编译原理、并行计算,唤泻挖怕缝嘻钝炬劲椰坚郁眠寅虽粕卿膊屎海启还笆蹿伺娶柑屹柳熄巫侍多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,小 结,研究方向怎样从现代体系结构抽象出计算模型面向体系结构的编译优化并行程序的形式验证方法,估渴票畅晤粕扣窑聘唤从斧宜捂帽狐诡搬策毙夹号陨讽茬难悸解春谦懒茸多核体系结构与并行编程模型计算机科学导论第八讲多核体系结构与并行编程模型计算机科学导论第八讲,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号