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

上传人:仙*** 文档编号:34463222 上传时间:2021-10-21 格式:PPT 页数:49 大小:492.50KB
返回 下载 相关 举报
多核体系结构与并行编程模型计算机科学导论第八讲ppt课件_第1页
第1页 / 共49页
多核体系结构与并行编程模型计算机科学导论第八讲ppt课件_第2页
第2页 / 共49页
多核体系结构与并行编程模型计算机科学导论第八讲ppt课件_第3页
第3页 / 共49页
点击查看更多>>
资源描述
多核体系结构与并行编程模型多核体系结构与并行编程模型 计算机科学导论第八讲计算机科学导论第八讲 计算机科学技术学院计算机科学技术学院 陈意云陈意云 0551-63607043, http:/ 鲁锄纲毯淡哺驰陷抹花册怔削么糙贡贺嫉职又胚泛抵懊藤彼揽抽含痘聪敢多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 课课 程程 内内 容容 课程内容课程内容 围绕学科理论体系中的模型理论围绕学科理论体系中的模型理论, 程序理论和计算理论程序理论和计算理论 1. 模型理论关心的问题模型理论关心的问题 给定模型给定模型M,哪些问题可以由模型,哪些问题可以由模型M解决;如何解决;如何比较模型的表达能力比较模型的表达能力 2. 程序理论关心的问题程序理论关心的问题 给定模型给定模型M,如何用模型,如何用模型M解决问题解决问题 包括包括程序设计范型、程序设计语言、程序设计、程序设计范型、程序设计语言、程序设计、形式语义、类型论、程序验证、程序分析等形式语义、类型论、程序验证、程序分析等 3. 计算理论关心的问题计算理论关心的问题 给定模型给定模型M和一类问题和一类问题, 解决该类问题需多少资源解决该类问题需多少资源 2 本讲座概要介绍并行编程模本讲座概要介绍并行编程模型及一些相关概念型及一些相关概念 吁滋贾死枫破霓汛袁锰请矽脑诸百拢赁痉茄箔遭恒吾嘿畸君拌摘郸族闰阶多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 讲讲 座座 提提 纲纲 基本知识基本知识 多核体系结构、并行编程模型多核体系结构、并行编程模型 内存一致性模型内存一致性模型 严格一致性模型、顺序一致性模型、内存一致性严格一致性模型、顺序一致性模型、内存一致性模型的重要性模型的重要性 共享变量并行编程模型共享变量并行编程模型 同步、锁、临界区、条件变量、死锁、数据竞争同步、锁、临界区、条件变量、死锁、数据竞争 消息传递并行编程模型消息传递并行编程模型 消息传递、同步与异步消息传递、同步与异步 3 挂震回善猜启磨俄毫钮刮搬毯骋偶膜踞赂腿笺近暂甫签影没郊借霉耽锚议多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 对称多处理器对称多处理器 对称多处理器的体系结构对称多处理器的体系结构 二级二级 缓存缓存 内存内存 总线总线 二级二级 缓存缓存 二级二级 缓存缓存 二级二级 缓存缓存 一级一级 缓存缓存 一级一级 缓存缓存 一级一级 缓存缓存 一级一级 缓存缓存 处理器处理器 处理器处理器 处理器处理器 处理器处理器 基基 本本 知知 识识 必须在必须在处理器的处理器的缓存中找缓存中找到它操作到它操作的大部分的大部分数据,以数据,以保证性能保证性能 通过共通过共 享内存来享内存来 进行通信进行通信 4 蜒娘趋绸邦坦颇幂恕陕戏台解屯唤付钞锈沛名齿盒譬脯闲枷卵鬃兴聂焚卿多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 几个概念的粗略解释几个概念的粗略解释 任务:一般性的抽象术语任务:一般性的抽象术语,指由软件完成的一个指由软件完成的一个活动活动。例如例如,矩阵分块乘就是把矩阵乘分成多个矩阵分块乘就是把矩阵乘分成多个任务任务, 以便于在对称多处理器上并行执行这些任务以便于在对称多处理器上并行执行这些任务 进程:任务在程序中的对应物进程:任务在程序中的对应物,它有自己的数据它有自己的数据和代码和代码,需要在处理器上运行直至结束需要在处理器上运行直至结束。进程是进程是操作系统为其进行操作系统为其进行资源分配和调度资源分配和调度的独立单位的独立单位 线程:是把进程细分出现的实际运行单位线程:是把进程细分出现的实际运行单位,线程线程是进程中一段顺序执行的语句序列是进程中一段顺序执行的语句序列。把进程分成把进程分成若干线程是为了提高进程执行过程中的并行性若干线程是为了提高进程执行过程中的并行性。线程是操作系统线程是操作系统调度调度的基本单位的基本单位 下面未严格区分进程和线程下面未严格区分进程和线程 基基 本本 知知 识识 5 任肚脐殆泥函壮母蜜岁揍巫冻萤冠舷灿莹噪掐磕诅鬼少崭空造王妥鼓英条多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 几个概念的粗略解释几个概念的粗略解释 并行并行(parallel): 多个可以同时执行的任务多个可以同时执行的任务,在多处在多处理器上同时执行理器上同时执行 并发并发(cuncorrent):多个可以同时执行的任务:多个可以同时执行的任务,在在单处理器上交错执行单处理器上交错执行 并发并发是逻辑上同时发生是逻辑上同时发生,而并行是逻辑上和物理而并行是逻辑上和物理上都同时发生上都同时发生。下面不区分并行和并发下面不区分并行和并发 基基 本本 知知 识识 t A B t A B 6 娱呈既姐测口忘铰萍叠付呛玄纠票衬施游筒灰葬么垃惰刽馅愉诉奉煽猖遏多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 对称多处理器对称多处理器 对称多处理器的体系结构对称多处理器的体系结构 二级二级 缓存缓存 内存内存 总线总线 二级二级 缓存缓存 二级二级 缓存缓存 二级二级 缓存缓存 一级一级 缓存缓存 一级一级 缓存缓存 一级一级 缓存缓存 一级一级 缓存缓存 处理器处理器 处理器处理器 处理器处理器 处理器处理器 基基 本本 知知 识识 多个高性能处理器多个高性能处理器可以集成在一块芯片可以集成在一块芯片上上 7 取辙绸膳摆灿团裔奄赤课柠蓝货汽馒咆乔沸似呵裙僧噪柱锰晕默狞柜其靴多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 基基 本本 知知 识识 单核结构与多核系统结构单核结构与多核系统结构 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 单核结构单核结构 多处理器结构多处理器结构 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 CPU状态状态 中断逻辑中断逻辑 超线程结构超线程结构 超线程技术充分利用执行超线程技术充分利用执行单元中的空闲资源,以便在单元中的空闲资源,以便在相同时间内完成更多工作相同时间内完成更多工作 执行单元中的资源:内存执行单元中的资源:内存访问部件、算术运算部件和访问部件、算术运算部件和浮点功能部件等浮点功能部件等 8 诞桩鲜目遭利臃己夹遮隆唉澄源侯延钦聪佃坝涟糯苍构庶钮系钱殆尘沤勃多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 基基 本本 知知 识识 单核结构与多核系统结构单核结构与多核系统结构 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 单核结构单核结构 多处理器结构多处理器结构 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 CPU状态状态 中断逻辑中断逻辑 超线程结构超线程结构 超线程技术本质上就是多超线程技术本质上就是多个线程共享一个执行核个线程共享一个执行核 两套两套CPU状态状态 +中断逻辑中断逻辑是为了适应两个线程同时执是为了适应两个线程同时执行的需要行的需要 9 殷烤殿丛钠芳马仔馆偶浑兔作看酸碍瓷静恩叼摇牌被式衷掺伍效担蒋流翼多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 基基 本本 知知 识识 单核结构与多核系统结构单核结构与多核系统结构 共享缓存的多核体系结构共享缓存的多核体系结构 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 多核体系结构多核体系结构 执行单元执行单元 缓缓 存存 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 CPU状态状态 中断逻辑中断逻辑 多核处理器是多核处理器是把两个甚至更多把两个甚至更多的独立执行核嵌的独立执行核嵌入到一个处理器入到一个处理器的内部,每个线的内部,每个线程都有完整的硬程都有完整的硬件执行环境,各件执行环境,各线程之间实现了线程之间实现了真正意义上的并真正意义上的并行行 10 骏筏蚂究拟粱毫姐绩涵全玖然伯驱砾典褒耻旬风喀接嘘塑颐叔芳损啦投脱多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 基基 本本 知知 识识 单核结构与多核系统结构单核结构与多核系统结构 体系结构越来越复杂体系结构越来越复杂,若这些复杂的特征都要反若这些复杂的特征都要反 映到编程语言中映到编程语言中,才能写出较好利用体系结构优点才能写出较好利用体系结构优点 的程序的程序,则编写程序将是很困难的工作则编写程序将是很困难的工作 需要设计好的编程模型并通过编译器和操作系统需要设计好的编程模型并通过编译器和操作系统 的帮助和支持来解决的帮助和支持来解决 采用超线程技术的多核体系结构采用超线程技术的多核体系结构 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 CPU状态状态 中断逻辑中断逻辑 执行单元执行单元 缓存缓存 CPU状态状态 中断逻辑中断逻辑 CPU状态状态 中断逻辑中断逻辑 11 枷狄搅揉公煮叹皑潞聋丹磺陪几皋历绑物阑亮安凑尉泼蚜涛详抗稿败甭仑多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 基基 本本 知知 识识 并行编程模型并行编程模型 是底层体系结构与上层应用程序之间的桥梁是底层体系结构与上层应用程序之间的桥梁 向上隐藏并行处理器的细节向上隐藏并行处理器的细节,并向程序员提供表并向程序员提供表达并行的方法达并行的方法 向下充分利用硬件资源向下充分利用硬件资源,高效且正确地完成应用高效且正确地完成应用需求需求 任务划分任务划分、任务映射任务映射、数据分布数据分布、通信和同步是通信和同步是设计并行编程模型时需要考虑的五个关键要素设计并行编程模型时需要考虑的五个关键要素 并行编程模型的另一种说法并行编程模型的另一种说法 并行编程模型是编写可被编译和运行的并行程序并行编程模型是编写可被编译和运行的并行程序的一种抽象并行机器模型的一种抽象并行机器模型 12 獭绎票瞬血怔藻纱爹莉征抖孟揉混嫁桃验铃羞恃梳焉鞠畴锚肇申衍涧啤裕多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 基基 本本 知知 识识 并行编程模型的分类并行编程模型的分类 1. 按进程交互的机制来分按进程交互的机制来分 共享变量模型:进程共享可以异步地读写的全局共享变量模型:进程共享可以异步地读写的全局变量变量 消息传递模型消息传递模型: 进程通过相互传递消息来交换数据进程通过相互传递消息来交换数据 隐式模型:进程之间交互是用户不可访问的隐式模型:进程之间交互是用户不可访问的 2. 按问题分解按问题分解 任务并行:每个处理器执行不同的任务任务并行:每个处理器执行不同的任务 数据并行:把大任务分解成若干个相同的子任务数据并行:把大任务分解成若干个相同的子任务 3. 13 谢古域吻电溉何咖惮俏汲汰应枕挎催熔诱耕却暴殖慷拿够丈郎腾篇捻怔捌多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型内存一致性模型 并行计算给共享变量读写带来的问题并行计算给共享变量读写带来的问题 串行程序串行程序 并行程序并行程序 x的初值为的初值为0 x在共享存储中在共享存储中,初值为初值为0 x = x + 1 x = x + 1 | x = x + 2 x = x + 2 (注:注:| 分隔两段并行代码分隔两段并行代码) 结果结果 :x = 3 x可能但并非一定是可能但并非一定是3 为什么为什么? 在一个进程执行在一个进程执行x = x +1期间期间,共享的共享的x有可能被有可能被 其它进程读写其它进程读写 14 捎休秋冶哪恋秆娃胖偏羞翰院转蚂憨仓篷莉纹犁眨淄喀金耗况驱卉涂诣蹄多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型内存一致性模型 并行计算给共享变量读写带来的问题并行计算给共享变量读写带来的问题 并行程序并行程序 x = x + 1 | x = x + 2 x结果不等于结果不等于3的情况的情况 x = R x = R x = R R+1 = R R+2 = R x = R R = x R+1 = R R = x R+2 = R R = x R = x 结果:结果:x = 1 结果:结果:x = 2 x = x +1的执行:取的执行:取x到寄存器到寄存器R, R增增1, 把把R存到存到x 各处理器有各自的各处理器有各自的R,不共享;不共享;x是共享的是共享的 15 t 绰缔瞩灌邪甩投溉峪污鹏贪子齐凳呸钡在芥乘蓉谴敢攻辆柳皑抖升是妓琶多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型内存一致性模型 内存一致性模型内存一致性模型 内存一致性模型内存一致性模型(memory consistency model)描述描述程序员和系统之间的一种协议程序员和系统之间的一种协议。若程序员书写的若程序员书写的软件遵循内存操作的专门规则软件遵循内存操作的专门规则,系统就保证内存系统就保证内存表现得有规律并且内存操作的结果可预测表现得有规律并且内存操作的结果可预测 专门规则描述的是专门规则描述的是,在有共享内存的多处理器系在有共享内存的多处理器系统上统上,在它们读写共享内存操作的可能执行顺序在它们读写共享内存操作的可能执行顺序中中,哪些顺序是正确的哪些顺序是正确的 有些模型的专门规则对软件只有少量限制有些模型的专门规则对软件只有少量限制,而有而有些则使普通编程几乎成为不可能些则使普通编程几乎成为不可能。规则限制少的规则限制少的模型没有限制多的模型执行效果好模型没有限制多的模型执行效果好 16 趣把钾帛呀谤夹炙家绢佰墅测置策弹泊潜腻惋够炽驳援贝畴充尽骏论肉潮多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型内存一致性模型 内存一致性模型内存一致性模型 内存一致性模型是理解并行程序语义的一个关键内存一致性模型是理解并行程序语义的一个关键 为确保写出正确的并行程序为确保写出正确的并行程序,程序员必须准确理程序员必须准确理解并行程序的语义解并行程序的语义 随着多核处理器的广泛应用随着多核处理器的广泛应用,并行程序设计已经并行程序设计已经由一种特殊的由一种特殊的、只需少数高端技术人才掌握的技只需少数高端技术人才掌握的技巧巧,变为一种大多数程序员都应该掌握的基本技变为一种大多数程序员都应该掌握的基本技能能 17 恶营蚤肇弦卿批语项津橇怖炎贤邯冈铬糯巾父幌子递律盾鸯镜软险豪咨解多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型内存一致性模型 严格一致性(原子一致性)模型严格一致性(原子一致性)模型 一个进程对任何内存位置一个进程对任何内存位置x的读操作,得到的是的读操作,得到的是 最近一次对最近一次对x的写操作所写入的值的写操作所写入的值 在在下面的图示中下面的图示中, P1和和P2是处理器是处理器, x的初值是的初值是0 W(x)1表示:把表示:把1写到写到x中;中;R(x)3表示:读取表示:读取x, 得到值得到值3 P1: W(x)1 P1: W(x)1 P2: R(x)1 R(x)1 P2: R(x)0 R(x)1 P1: W(x)1 P2: R(x)0 R(x)1 t t t 左下图不符左下图不符合严格一致性合严格一致性 18 迹妮泪狞签迁拘赋疵架喝俘讳篱启喉都邯淀巴刁饭梢禄睛岗点留延结烘冷多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型内存一致性模型 严格一致性(原子一致性)模型严格一致性(原子一致性)模型 一个进程对任何内存位置一个进程对任何内存位置x的读操作,得到的是的读操作,得到的是 最近一次对最近一次对x的写操作所写入的值的写操作所写入的值 单处理器遵守严格一致性单处理器遵守严格一致性 在在多处理器多处理器+共享内存的共享内存的系统中,要实现严格系统中,要实现严格 一致性模型几乎是不可能的一致性模型几乎是不可能的 19 虚驭邯步金门根鹃涵老蔬颂颐贺驴钙挛榴惹惫昨杭弗术纷连谨卑程敷型癣多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 顺序一致性模型顺序一致性模型 比严格一致性弱的模型比严格一致性弱的模型 在多处理器共享内存情况下在多处理器共享内存情况下,所有处理器的内存所有处理器的内存访问操作都按照某个顺序逐个执行访问操作都按照某个顺序逐个执行,并且每个处并且每个处理器执行的单个线程理器执行的单个线程,严格按照程序规定的顺序严格按照程序规定的顺序逐语句地进行内存访问操作逐语句地进行内存访问操作 P1: W(x)1 P2: W(x)2 P3: R(x)2 R(x)1 P4: R(x)2 R(x)1 内存一致性模型内存一致性模型 20 t t t t 左图符合顺序左图符合顺序一致性:一致性: W(x)2先于先于W(x)1发生发生 瑟斟南恶串溺颗侯棠吏萤苍梁委腐裂撤湿带酷雷氨澜毋该匪铲丛迸环挞生多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 顺序一致性模型顺序一致性模型 比严格一致性弱的模型比严格一致性弱的模型 在多处理器共享内存情况下在多处理器共享内存情况下,所有处理器的内存所有处理器的内存访问操作都按照某个顺序逐个执行访问操作都按照某个顺序逐个执行,并且每个处并且每个处理器执行的单个线程理器执行的单个线程,严格按照程序规定的顺序严格按照程序规定的顺序逐语句地进行内存访问操作逐语句地进行内存访问操作 P1: W(x)1 P2: W(x)2 P3: R(x)2 R(x)1 P4: R(x)1 R(x)2 内存一致性模型内存一致性模型 21 t t t t 左图不符合顺左图不符合顺序一致性:序一致性: 不论不论W(x)1和和W(x)2谁先发生谁先发生 烃石摊涕揍每掺淡魔震座炉船叉莎制乍虑哨抓是吕蚂炉拱娃搽奏判辟雏殿多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 顺序一致性模型顺序一致性模型 比严格一致性弱的模型比严格一致性弱的模型 在多处理器共享内存情况下在多处理器共享内存情况下,所有处理器的内存所有处理器的内存访问操作都按照某个顺序逐个执行访问操作都按照某个顺序逐个执行,并且每个处并且每个处理器执行的单个线程理器执行的单个线程,严格按照程序规定的顺序严格按照程序规定的顺序逐语句地进行内存访问操作逐语句地进行内存访问操作 比顺序一致性还弱的有多种弱内存模型比顺序一致性还弱的有多种弱内存模型 大多数程序员假定并行程序的运行满足顺序一致大多数程序员假定并行程序的运行满足顺序一致 性性,但现实中几乎所有的并行程序都在某种弱内存但现实中几乎所有的并行程序都在某种弱内存 模型下运行模型下运行,而且不同的并行语言和处理器的内存而且不同的并行语言和处理器的内存 模型不同模型不同 内存一致性模型内存一致性模型 22 唯俊冷敏臭吨奴丝肾猛谰疆崇噎颇肘很悄劳鸵署撇惹啡袖直眠朗透赃崖笺多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 顺序一致性模型顺序一致性模型 例:互斥使用临例:互斥使用临 界区的并行线程界区的并行线程 若两个线程严格按照给出的语句顺序逐条执行若两个线程严格按照给出的语句顺序逐条执行, 则它们能实现互斥功能则它们能实现互斥功能,因为因为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 23 r1 = y; x = 1; r2 = x; y = 1; t 酝剪沤园符凶彤尼扑捡离岗弓砂僻示鸟函唇友须孜翌藤偷雌碧辑光势舒全多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 内存一致性模型的重要性内存一致性模型的重要性 它作为系统实现和程序员之间的接口它作为系统实现和程序员之间的接口,对处理器对处理器体系结构的实现体系结构的实现、并行语言的设计和实现并行语言的设计和实现、并行并行程序的开发和验证都有重要意义程序的开发和验证都有重要意义 以并行语言的设计和实现为例以并行语言的设计和实现为例 编译器的优化算法会调整源程序中的内存操作顺编译器的优化算法会调整源程序中的内存操作顺序序,使得目标程序和源程序的顺序不一致使得目标程序和源程序的顺序不一致 目标程序的执行顺序又可能被处理器进一步改变目标程序的执行顺序又可能被处理器进一步改变 并行语言的设计和实现必须考虑到这两种情况及并行语言的设计和实现必须考虑到这两种情况及其效果的叠加其效果的叠加,对源程序可能表现出的行为进行对源程序可能表现出的行为进行准确描述准确描述(并行语言的内存模型并行语言的内存模型),便于正确编程便于正确编程 内存一致性模型内存一致性模型 24 幌搀勇歉旗臂香吻沥亮趾害骗郧氏学肤该物堂神逊泪皆崭周脊耽浮艰卤颧多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 编程语言内存一致性模型的现状编程语言内存一致性模型的现状 由于优化算法的多样性由于优化算法的多样性,编程语言内存模型比体编程语言内存模型比体 系结构的内存模型复杂系结构的内存模型复杂 Gosling等为第一版等为第一版Java语言给出的内存一致性模语言给出的内存一致性模型型, 无法支持常用的优化算法无法支持常用的优化算法, 是一个失败的模型是一个失败的模型 Manson等给出的等给出的Java模型模型,虽被语言新标准所采虽被语言新标准所采纳纳,但模型十分晦涩但模型十分晦涩,是是Java语言中最复杂部分语言中最复杂部分, 极少有人能正确理解其含义极少有人能正确理解其含义 Boehm和和Adve试图为试图为C+提供一个简单的模型提供一个简单的模型,但很多地方有歧义或不清晰但很多地方有歧义或不清晰 内存一致性模型内存一致性模型 25 铸刘门少涧太沥审下虑拇硒痛佃您运洪荷荷苍让挤牛潜臼知坛歧感痘刽衬多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 使用共享变量的错误例子使用共享变量的错误例子 并行计算并行计算Fibonacci序列下一个元素的两个线程序列下一个元素的两个线程 对两个线程的执行没有任何约束对两个线程的执行没有任何约束 下面是两个线程某次并行时的语句执行顺序下面是两个线程某次并行时的语句执行顺序 prev和和curr: 初值分为初值分为0和和1的共享变量的共享变量 int retval; int retval; retval = curr; retval = curr; curr = curr+prev; curr = curr+prev; prev = retval; prev = retval; t 26 陡疫未擅槛携砸夸甥卡组挺敢哥魂间击臣饿蜡匈想科砚瓷苫谩苛撵路罪逞多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 使用共享变量的错误例子使用共享变量的错误例子 并行计算并行计算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 27 醛引俩其聘耗苞薯艘绅担够沛厦卤而幕方膨梗峪谭廷秸弟仆狗控易裸疾耗多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 使用共享变量的错误例子使用共享变量的错误例子 并行计算并行计算Fibonacci序列下一个元素的两个线程序列下一个元素的两个线程 对两个线程的执行没有任何约束对两个线程的执行没有任何约束 下面是两个线程某次并行时的语句执行顺序下面是两个线程某次并行时的语句执行顺序 结果应是结果应是 0 +1 = 1 1 +1 = 2 原因:原因: 对共享变对共享变 量的访问缺量的访问缺 乏约束乏约束 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 28 忱益厦豁毁殖件叛蓝诡揉撕迂龙烙外柿登地舞剧忿徊或兵绩质吻守巡湛犁多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 同步同步 同步是对线程执行的顺序进行强行限制的一种机同步是对线程执行的顺序进行强行限制的一种机制制,用来控制线程执行的相对顺序用来控制线程执行的相对顺序,可以有效解可以有效解决任何线程之间的冲突决任何线程之间的冲突,而这些冲突有可能会导而这些冲突有可能会导致线程的执行出现异常行为致线程的执行出现异常行为 简言之简言之,同步主要用于协调线程执行和管理共享同步主要用于协调线程执行和管理共享数据数据 同步机制同步机制 信号量信号量、锁锁(又可细分成多种又可细分成多种)、条件变量条件变量、 29 夜柠椰卷绿埋茫走贾酝罐头棋卧拓绚剿希士傍莆任昨折犬勇励牡募楷绢豺多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 锁锁 用来体现一种互斥的并行控制策略用来体现一种互斥的并行控制策略 一个线程在同一个时刻只能使用一个锁一个线程在同一个时刻只能使用一个锁,一个锁一个锁至多由一个线程获得至多由一个线程获得。锁有两个锁有两个原子操作原子操作: 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; 30 锁状态改锁状态改为为已加锁已加锁,若锁已被占若锁已被占用则等待用则等待,锁的状态保锁的状态保持持未加锁未加锁 t 扇模国饼泣早惫恨袭召涛热照哪挣奇犁艺栗巨初鲜伴犯辨嫉油动烯翅拎边多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 锁锁 用来体现一种互斥的并行控制策略用来体现一种互斥的并行控制策略 一个线程在同一个时刻只能使用一个锁一个线程在同一个时刻只能使用一个锁,一个锁一个锁至多由一个线程获得至多由一个线程获得。锁有两个原子操作:锁有两个原子操作: 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(); 31 t 辣交棱辊位撵瞬腊竞匠屏淫倾慰嗅干噎憋瘤蚜萌仑置纶锁急金厂寂蒜征敞多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 锁锁 用来体现一种互斥的并行控制策略用来体现一种互斥的并行控制策略 一个线程在同一个时刻只能使用一个锁一个线程在同一个时刻只能使用一个锁,一个锁一个锁至多由一个线程获得至多由一个线程获得。锁有两个原子操作:锁有两个原子操作: 3. 问题问题 怎么等待怎么等待? 忙等待:忙等待: 不断尝试不断尝试 睡眠:睡眠: 等待唤醒等待唤醒 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(); 32 t 波照吨屯俐坍庸状汞沈茎场柄磨府雷侥朋丽联葛卫爹乏劳麻憾蹋佐拇册汉多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 共享变量并行编程模型共享变量并行编程模型 临界区临界区(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(); 33 t 乾醒瞳欣淘视昏药咸涉溯吉市油糠币俏危催冀尸蹭票投橙临币蛆袖叶咐仗多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 条件变量条件变量 共享变量的一种实现方式共享变量的一种实现方式 例:生产者例:生产者/消费者问题消费者问题 一个典型的同步问题一个典型的同步问题, 也称有限缓冲区问题也称有限缓冲区问题 生产者向缓冲区中写入生产者向缓冲区中写入 数据数据 消费者从缓冲区取得数消费者从缓冲区取得数 据并对数据进行操作据并对数据进行操作 生产者和消费者并行执行生产者和消费者并行执行 共享变量并行编程模型共享变量并行编程模型 void producer() / 临界区开始临界区开始 / 产生下一个数据产生下一个数据 / 临界区结束临界区结束 void consumer() / 临界区开始临界区开始 / 消费下一个数据消费下一个数据 / 临界区结束临界区结束 34 漠枕邦肢道仓琴畔无奎兴忙屿骨些忱焚盖滚父戮裸垄敬堵抡拯圣属源戎讥多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 条件变量条件变量 右边是生产者线程右边是生产者线程,条条 件变量件变量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(); 35 Conditon C; Lock L; Bool LC = false; 烘魁凯厚廉男卒润立顾裳赖瞻屠注属扒落膳绚迟惦炉馋氦巫今厘桨贝励胰多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 条件变量条件变量 右边是生产者线程右边是生产者线程,条条 件变量件变量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(); 36 Conditon C; Lock L; Bool LC = false; 密米减功反荆口戊达阐骇漂揍客沮砂豌碱饰饶香楷门藉蓝粗阴度怖亲拈套多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 条件变量条件变量 右边是生产者线程右边是生产者线程,条条 件变量件变量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-broadcast(L); / 临界区结束临界区结束 L-release(); 37 Conditon C; Lock L; Bool LC = false; 撇会践帝贯对松授哭铂摩硷鹏慰裕尧绊平侈捞诚奖挖洼墅否套残铀登讽坛多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 生产者生产者/消费者问题消费者问题 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-release() 共享变量并行编程模型共享变量并行编程模型 Conditon C; Lock L; Bool LC = false; 38 携朋衣腻官雹汰殆丢戍选既庭凛蘑换袭局柴尉撂色匹乡匠酣甸卷椰殿阵傅多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 条件变量条件变量 条件变量用于多线程之条件变量用于多线程之 间关于共享数据状态变化间关于共享数据状态变化 的通信的通信。当一个动作需要当一个动作需要 等另一个动作等另一个动作(改变共享数改变共享数 据状态据状态)完成后才能进行完成后才能进行, 就可以使用条件变量就可以使用条件变量 当特定条件满足时当特定条件满足时,线线 程等待或者唤醒其他合作程等待或者唤醒其他合作 线程线程 共享变量并行编程模型共享变量并行编程模型 void producer() while(1) L-acquire(); / 临界区开始临界区开始 while(LC = true) C-wait(L); / 产生下一个数据产生下一个数据 LC = true; C-signal(L); / 临界区结束临界区结束 L-release(); 39 肩棺嫌咏铰妹境意亨痪纬耽斡跳贴恐骨响械猪贱碗湖赁菏乒酋颅鹊蟹轩桥多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 死锁死锁 当一线程因等待另一线程占用的资源而阻塞当一线程因等待另一线程占用的资源而阻塞,而而 同时该资源永远不会被释放同时该资源永远不会被释放 自死锁或递归死锁:线程自死锁或递归死锁:线程T试图获得一个锁试图获得一个锁,而而该锁已被线程该锁已被线程T自己拥有自己拥有 错序死锁:线程错序死锁:线程T1占有资源占有资源r1并等待由线程并等待由线程T2占占有资源有资源r2;而线程;而线程T2占有资源占有资源r2并等待由线程并等待由线程T1占占有资源有资源r1 编程中的问题:怎样避免出现死锁编程中的问题:怎样避免出现死锁 共享变量并行编程模型共享变量并行编程模型 40 左蝶困婴宋组亮完肠嘶楷桌洲坟厘茁韭新椅共埔篇暂斯茫佃航榜臻拌壹甥多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 数据竞争数据竞争 多个并行线程都访问某个共享变量多个并行线程都访问某个共享变量v,其中至少有其中至少有 一个线程修改一个线程修改v ,并且这些线程没有使用锁来控制并且这些线程没有使用锁来控制 它们对它们对v的访问的访问 在有数据竞争的场合在有数据竞争的场合,各线程对数据的访问次序各线程对数据的访问次序是不确定的是不确定的,计算结果依赖于这个次序计算结果依赖于这个次序 数据竞争有时是共享数据和通信的一种方式数据竞争有时是共享数据和通信的一种方式,但但多数情况下属于程序错误多数情况下属于程序错误 编程中的问题:怎样发现程序中的数据竞争编程中的问题:怎样发现程序中的数据竞争 共享变量并行编程模型共享变量并行编程模型 41 蜜漏排在行甜启两著磁欠触晋扩孪己载然坟桐从砧前互解嚣贩扛钠妥猪悼多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 消息传递消息传递 消息传递是进程之间交换信息的一种方式消息传递是进程之间交换信息的一种方式,使用使用共享变量是另一种方式共享变量是另一种方式 在消息传递场合下在消息传递场合下,由于一个消息在被接收者接由于一个消息在被接收者接收之前收之前,必须由发送者发送必须由发送者发送,因此隐含了同步机因此隐含了同步机制制 消息传递可以在分布式系统消息传递可以在分布式系统、共享内存的多处理共享内存的多处理器系统和单处理器系统中实现器系统和单处理器系统中实现。在分布式系统上在分布式系统上实现共享变量有较大难度实现共享变量有较大难度 实现消息传递依靠两个通信原语:实现消息传递依靠两个通信原语:send和和receive 消息传递并行编程模型消息传递并行编程模型 42 匪拯喊茨涪互宦卤拭伍嗣尺嘎想询唇累飘缚习侨桶至织罩在泵阮净析烤钮多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 用消息传递机制解决生产者用消息传递机制解决生产者/消费者问题消费者问题 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); /* 等待空消息等待空消息、生产生产 /* 接收消息接收消息、消耗消消耗消 消息消息、发送消息发送消息 */ 息息、发送空消息发送空消息 */ 消息传递并行编程模型消息传递并行编程模型 43 狱蛇峡挚勤坊慎舔扣液剐氦扮矽企魏俞糊探沮荣鄙防肥酋拈赂信藤剩脾毋多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 用消息传递机制解决生产者用消息传递机制解决生产者/消费者问题消费者问题 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和和consumer; 消息传递并行编程模型消息传递并行编程模型 44 仰岿射订垢售妙疫瓶距尽熊音邯闪操芽呛崭旭腿拇浅怎威枚施斤宠茶娄瘤多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 消息传递的发送和接收对象消息传递的发送和接收对象 进程对进程的传递:两个进程不依赖于线程自行进程对进程的传递:两个进程不依赖于线程自行进行通信进行通信,是最常见的消息传递方式是最常见的消息传递方式 进程间的传递:属于不同进程的线程之间进行通进程间的传递:属于不同进程的线程之间进行通信信 进程内的传递:属于同一个进程的线程之间进行进程内的传递:属于同一个进程的线程之间进行通信通信 消息传递并行编程模型消息传递并行编程模型 45 乏席肛探畔争泌边琢巨绎砧族繁筏肋众坝犁石罕税灯轿颓烯穗甭矗端涝次多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 消息传递的同步与异步消息传递的同步与异步 同步:消息发送后同步:消息发送后,发送者必须等待发送者必须等待,直到接收直到接收者的响应才能进行其他操作者的响应才能进行其他操作 异步:发送者不必等待接收者的响应就可以继续异步:发送者不必等待接收者的响应就可以继续执行执行 对于采用共享存储模型的系统来说对于采用共享存储模型的系统来说,消息传递是消息传递是同步的同步的 对于采用分布式存储模型的系统来说对于采用分布式存储模型的系统来说,消息传递消息传递则是异步的则是异步的 消息传递并行编程模型消息传递并行编程模型 46 澈煮窍憾说酷甸茸棱灵嚎装妻滥堑弯泊豺撂佣翟客缆噶镭便沉归浑践搀释多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 小小 结结 本讲座小结本讲座小结 计算机体系结构的多样性计算机体系结构的多样性,导致难以从它们概括导致难以从它们概括出一种能代表它们的抽象机出一种能代表它们的抽象机,并进一步抽象出统并进一步抽象出统一的并行编程模型一的并行编程模型(即并行编程语言的语义即并行编程语言的语义) 更难做到的是:基于这种并行编程模型编写的程更难做到的是:基于这种并行编程模型编写的程序序,通过编译器和操作系统的支持通过编译器和操作系统的支持,目标程序运目标程序运行时充分发挥各种体系结构的长处行时充分发挥各种体系结构的长处 通过对共享变量和消息传递两种并行编程模型的通过对共享变量和消息传递两种并行编程模型的简单介绍简单介绍,远未体现多核时代对并行软件开发的远未体现多核时代对并行软件开发的各个方面各个方面(并行算法的设计和分析并行算法的设计和分析、程序的测试程序的测试和调试和调试、程序的分析和验证程序的分析和验证)的挑战的挑战 47 逻慎嚏尔械射招未哩筑筏蠕谆栖爹逗遇扮徒舌璃芋萄央鲍宁赞簧宾涨堆畜多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲ppt课件 小小 结结 本讲座小结本讲座小结 并行编程模型并行编程模型(model):是编写可被编译和运行是编写可被编译和运行的并行程序的一种模型的并行程序的一种模型 并行编程模式并行编程模式(pattern):是面向一类问题的并:是面向一类问题的并行程序的框架行程序的框架 两者被混用:常用编程模式中的主要机制经常出两者被混用:常用编程模式中的主要机制经常出现在编程模型中现在编程模型中 相关课程相关课程 计算机体系结构、操作系统、编译原理、并行计计算机体系结构、操作系统、编译原理、并行计算算 48 猜孝芒颅良偏舵巴玛趣腊痉戎填径闽骸新祟虎赡期巢患蕴峙蚤迈自盔晦未多核体系结构与并行编程模型计算机科学导论第八讲ppt课件多核体系结构与并行编程模型计算机科学导论第八讲
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!