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

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

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[PPT]-多核体系结构与并行编程模型计算机科学导论第八讲

多核体系结构与并行编程模型 计算机科学导论第八讲;课 程 内 容;讲 座 提 纲;对称多处理器 对称多处理器的体系结构;几个概念的粗略解释 任务:一般性的抽象术语,指由软件完成的一个活动。例如,矩阵分块乘就是把矩阵乘分成多个任务, 以便于在对称多处理器上并行执行这些任务 进程:任务在程序中的对应物,它有自己的数据和代码,需要在处理器上运行直至结束。进程是操作系统为其进行资源分配和调度的独立单位 线程:是把进程细分出现的实际运行单位,线程是进程中一段顺序执行的语句序列。把进程分成若干线程是为了提高进程执行过程中的并行性。线程是操作系统调度的基本单位 下面未严格区分进程和线程;几个概念的粗略解释 并行(parallel): 多个可以同时执行的任务,在多处理器上同时执行 并发(cuncorrent):多个可以同时执行的任务,在单处理器上交错执行 并发是逻辑上同时发生,而并行是逻辑上和物理上都同时发生。下面不区分并行和并发;对称多处理器 对称多处理器的体系结构;基 本 知 识;基 本 知 识;基 本 知 识;基 本 知 识;基 本 知 识;基 本 知 识;内存一致性模型;内存一致性模型;内存一致性模型;内存一致性模型;内存一致性模型;内存一致性模型;顺序一致性模型 比严格一致性弱的模型 在多处理器共享内存情况下,所有处理器的内存访问操作都按照某个顺序逐个执行,并且每个处理器执行的单个线程,严格按照程序规定的顺序逐语句地进行内存访问操作 P1: W(x)1 P2: W(x)2 P3: R(x)2 R(x)1 P4: R(x)2 R(x)1 ;顺序一致性模型 比严格一致性弱的模型 在多处理器共享内存情况下,所有处理器的内存访问操作都按照某个顺序逐个执行,并且每个处理器执行的单个线程,严格按照程序规定的顺序逐语句地进行内存访问操作 P1: W(x)1 P2: W(x)2 P3: R(x)2 R(x)1 P4: R(x)1 R(x)2 ;顺序一致性模型 比严格一致性弱的模型 在多处理器共享内存情况下,所有处理器的内存访问操作都按照某个顺序逐个执行,并且每个处理器执行的单个线程,严格按照程序规定的顺序逐语句地进行内存访问操作 比顺序一致性还弱的有多种弱内存模型 大多数程序员假定并行程序的运行满足顺序一致 性,但现实中几乎所有的并行程序都在某种弱内存 模型下运行,而且不同的并行语言和处理器的内存 模型不同;顺序一致性模型 例:互斥使用临 界区的并行线程 若两个线程严格按照给出的语句顺序逐条执行, 则它们能实现互斥功能,因为r1和r2不可能同时为0 现实中,编译器和处理器内部进行的优化都会导 致内存操作的实际顺序和代码中的语句顺序不一致, 例:上述两线程的前两个语句被编译器交换次序, 使得两个条件判断都为真,两个线程都进入临界区;内存一致性模型的重要性 它作为系统实现和程序员之间的接口,对处理器体系结构的实现、并行语言的设计和实现、并行程序的开发和验证都有重要意义 以并行语言的设计和实现为例 编译器的优化算法会调整源程序中的内存操作顺序,使得目标程序和源程序的顺序不一致 目标程序的执行顺序又可能被处理器进一步改变 并行语言的设计和实现必须考虑到这两种情况及其效果的叠加,对源程序可能表现出的行为进行准确描述(并行语言的内存模型),便于正确编程;编程语言内存一致性模型的现状 由于优化算法的多样性,编程语言内存模型比体 系结构的内存模型复杂 Gosling等为第一版Java语言给出的内存一致性模型, 无法支持常用的优化算法, 是一个失败的模型 Manson等给出的Java模型,虽被语言新标准所采纳,但模型十分晦涩,是Java语言中最复杂部分, 极少有人能正确理解其含义 Boehm和Adve试图为C++提供一个简单的模型,但很多地方有歧义或不清晰;共享变量并行编程模型;共享变量并行编程模型;共享变量并行编程模型;共享变量并行编程模型;共享变量并行编程模型;共享变量并行编程模型;共享变量并行编程模型;共享变量并行编程模型;条件变量 共享变量的一种实现方式 例:生产者/消费者问题 一个典型的同步问题, 也称有限缓冲区问题 生产者向缓冲区中写入 数据 消费者从缓冲区取得数 据并对数据进行操作 生产者和消费者并行执行;条件变量 右边是生产者线程,条 件变量C使用锁L来完成 对共享数据的访问,可对 条件变量C执行3种原子 操作(LC 的初值为false) 1. wait(L): 释放自身持有 的锁

文档评论(0)

138****7331 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档