基于多线程并行技术研究及讨论.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于多线程并行技术研究及讨论

精品论文 参考文献 基于多线程并行技术研究及讨论 海南省东方市公安消防支队 麦宜   摘要:通过对当前各种比较流行的多线程方法(如Windows 线程,OpenMP,Intel TBB 等)的学习和实践来深入了解多线程技术的工作原理和发展现状,然后通过设计了一个基于不同线程方法的运算程序并进行试验,来量化比较各种方法的优劣,本文主要研究和讨论多线程并行技术,并尝试分析了其中的原因,以找到对其进行改良的思路,认清多线程技术的发展趋势。   关键词:多线程;Windows 线程;OpenMP;IntelTBB线程(thread),有时也被叫做轻量级进程(LightweightProcess,LWP),是一个程序流运行的基本单位,也是一个进程调度的最小单元。一个最基本的线程,是由线程ID,寄存器组快,堆栈和当前指令指针(PC)构成的。一个线程,能够撤销或创建其他线程,一个进程下的线程之间可以并发地同步执行。   ???程在程序中是一个独立的顺序执行流程,一个程序中如果同时有多个线程运行完成各自的工作,被称作多线程[1]。   一、各种多线程方法概述(一)Windows 多线程1、Windows 多线程基本情况Windows98 及以上版本的操作系统属于多任务操作系统,支持两种不同的多任务并行处理方法:基于进程(process)的多任务方法和基于线程(thread)的多任务方法。进程指的是执行中的程序,在执行中,线程相互影响,以至线程在执行中显示出间断的特性。线程的基本状态分为运行,就绪,阻塞三种。   2、Windows 多线程同步机制程序的同步运行经常会引起和时间相关的错误,这就需要引入同步机制。同步机制可以调度线程间资源的并行访问。   Windows98 为了解决多线程同步问题,设计了四种主要的线程同步对象[2],这些对象对线程而言有两个状态:非信号状态(nonsignalstate)和信号状态(signal state)。当对象为信号状态时,线程执行并可以享用共享资源,否则则需要等待。   (二)OpenMP 概述1、OpenMP 基本概念OpenMP 是在共享内存体系下的编程模型,它由三个基本API 部分构成,它们分别是编译指令、运行部分和环境变量。   这个编程模型包括编译制导、运行库例程和环境变量[3]。OpenMP支持增量并行化,是C/C++和Fortan 等的应用编程接口,已经被大多数计算机硬件和软件厂家所标准化。OpenMP 的目标是使程序更具标准性,更简洁实用,使用更方便,可移植性更高。   2、OpenMP 并行编程模型OpenMP 是基于线程的并行编程模型,采用,Fork-Join 体现的是一种分治的思想,多被用来分解处理问题。Fork-Join算法将当前问题细分为若干个子问题,然后对这些子问题执行一样的操作,若子问题细分的够小,就可以很快地直接被解决。   如果子问题全部得到解决,把它们结合起来也就解决了父问题。   (三)IntelTBB 概述1、基本概念IntelTBB 是一个C++多线程模板库,与直接使用API 程序编程的方法相比,TBB 为多线程编程适当地做了一些抽象,同时也涵盖了更丰富的内容,如提出了任务的概念,为常规算法提供了的完备的实现,负载自动平衡特性以及不对处理器数量进行绑定以提供方便的扩展性。我们可以通过使用这些库来很方便地设计多线程程序。   二、各种线程方法性能分析(一)性能分析实验1、实验目的了解各种线程工作方法的效率,理解各种多线程工作方法。   2、实验方法分别利用四种线程方法,对输入的一组数字{10000,30000,100000,300000,1000000}进行N 以内的素数判定,记录所需的运算时间。实验重复10 次,然后求出每种方法所需的平均运算时间。通过对运算时间的量化统计,并进行分析,以期望对各种线程方法的效率有更直观的了解。   3、实验结果记录结果求平均值结果如下表:表4-1-1 实验结果列表   4、结果分析由实验结果我们可以看出:1)单线程方法耗时最多,Intel TBB 最有效率,而Windows线程和OpenMP 的效率则相对接近,处于中游。   2)在循环次数较少的时候,Windows 线程方法不如OpenMP有效率,但随着循环计算次数的增加,Windows 线程方法逐渐超越OpenMP 算法。即随着算法复杂度的提升,Windows 线程方法比OpenMP 算法更能充分发挥其多线程的效率。   (二)合理选择多线程工具多线程开发究竟应该选用TBB,OpenMP,还是本地Windows线程,取决于很多方面的因素,不仅要考虑开发环境因素,还要根据多线程模式的复杂度来选择。   1、Intel TBB?OpenMP?Windows 多线程?   由

您可能关注的文档

文档评论(0)

xyz118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档