第七章多线程的程序介(optional).ppt

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

Demo 比较以下代码的性能: total = 0; for( i=0; iNUM; i++) { total += array[i]; } total = array[0] + array[1] + array[2] + array[3]; 实验分析 循环版: 执行指令较多 3次加,4次自增,4次比较,3次分支,一次分支误预测 当num足够大时,指令数相对较少,可以直接在指令cache中读取指令,并因指令相同,只需解码一次,无需重复解码 实验分析 非循环版: 3次加(num=4时) 当num足够大时,指令数太大,以至需从内存读取指令 第七章 多线程的程序介 (optional) 介绍 Intel 超线程技术 呈现多线程编程 说明Intel 线程工具 Intel Thread Checker 介绍线程技术 简单介绍intel芯片对多线程的处理原理 演示多线程程序的运行过程并分析结果 多进程 Multiprocessing 多进程是计算科学的领域,涉及多于一条指令在同一时间执行 并行执行可能以五种不同的方式完成 多进程 Multiprocessing 平行执行,桌面计算机依赖指令级平行,但现在有了变化。 超线程技术,将出现在基于Intel Xeon 处理器系统,它允许一个处理器同时执行两个线程的指令来降低成本和增加多进程的应用能力。 由于多处理器计算机和具有超线程技术的计算机变得更普通,产生了使用平行处理技术通常更增加性能的感觉。 定义:超线程 Definition: Hyper-hreading 在单个处理器核心同时发生多任务 增加执行单元的使用 对于软件看似两个独立处理器 对于多线程应用加速性能 资源的利用 超线程架构 Hyper-Threading Architecture 二个逻辑处理器 架构状态和加倍的APIC 共享资源 执行单元 存储器 分支预测 控制逻辑 总线 超线程的资源 超线程性能的期望 HT Performance Expectations 性能增加来自于改进低利用资源的使用 加速依赖于任何使用逻辑处理器。 如果两个逻辑处理器是完全使用,典型地附加 15%-20% 性能。 加速也取决于软件的平行性。 什么是平行? 二个或更多进程/线程同时执行 平行为超线程 多进程 单处理器, 多线程 多线程编程 Multithreaded Programming 要求系统提供共享内存 应用程序一定会创建, 管理, 消除线程 以同等重要的形式工作 可以同时执行 由操作系统调度处理 平行编程模式 Parallel Programming Models 两个平行硬件范例 分布式内存 共享内存 共享内存编程模式 函数并行 数据并行 共享编程模式 Shared Programming Models 函数并行 相同问题的独立任务 用户接口任务 同时计算下一个视图的任务 数据并行 相同的工作采用不同部分的数据 同时计算数据任务,以不同部分数据设置工作 函数平行 Functional Parallelism 独立的线程执行独立的任务 数据平行 Data Parallelism for (i=0; iM; i++) for (j=0; jN; j++) C(i,j) = 0.0; for (i=0; iM; i++) for (k=0; kL; k++) for (j=0; jN; j++) C(i,j) += A(i,k)*B(k,j); 平行的关键 Keys to Parallelism 认识独立工作 工人间分配公平的工作 创建共同使用资源的私有拷贝 同步接近昂贵和唯一的共享资源 线程的并行性 线程在一个进程中共享资源 共享代码和数据 各个线程有程序计数器, 堆栈, 状态 优点 性能增加, 有效地使用系统资源 缺点 调试困难, 要求同步 平行编程 Parallel Programming 并行是获取来自系统的更多性能的关键技术之一,而在一个时间执行多于一个的动作。 最普通的并行应用在现代操作系统设计中,它隐藏与存取系统资源相联系的延迟。 Pentium 4处理器有同时执行6条微指令的能力。 在某些情况下,一个复杂先进的编译器能够自动产生多线程代码,但大多数情况下,程序员必须由手工明确创建平行算法,并且编码成为平行程序。 写多线程程序时,你必须识别能够并行执行的任务。一旦发现这些任务,必须管理数据使任务相对独立,换言之,问题必须分解成任务和数据。 通常,在平行程序设计中,明显既有数据分解又有任务分解更并且扮演主要角色。平行程序转化在写多线程程序时,导致两种不同的策略:平行任务和平行数据。 任务平行数据平行 Task Parall

文档评论(0)

youbika + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档