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

来源 :科学与技术 | 被引量 : 0次 | 上传用户:hb524656810123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:通过对当前各种比较流行的多线程方法(如Windows线程,OpenMP,Intel TBB等)的学习和实践来深入了解多线程技术的工作原理和发展现状,然后通过设计了一个基于不同线程方法的运算程序并进行试验,来量化比较各种方法的优劣,本文主要研究和讨论多线程并行技术,并尝试分析了其中的原因,以找到对其进行改良的思路,认清多线程技术的发展趋势。
  关键词:多线程;Windows线程;OpenMP;IntelTBB
  线程(thread),有时也被叫做轻量级进程(Lightweight Process,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 实验结果列表
  线程方法/测试数据 10000 30000 100000 300000 1000000
  单线程 29.8ms 95.3ms 385.7ms 1320.4ms 4748.0ms
  Windows线程 29.6ms 99.9ms 384.4ms 1291.2ms 4723.6ms
  OpenMP
  26.6ms 95.3ms 384.6ms 1308.7ms 4732.2ms
  Intel TBB 24.7ms
  98.6ms 379.7ms 1282.8ms 4651.1ms
  4、 结果分析
  由实验结果我们可以看出:
  1) 单线程方法耗时最多,Intel TBB最有效率,而Windows线程和OpenMP的效率则相对接近,处于中游。
  2) 在循环次数较少的时候,Windows线程方法不如OpenMP有效率,但随着循环计算次数的增加,Windows线程方法逐渐超越OpenMP算法。即随着算法复杂度的提升,Windows线程方法比OpenMP算法更能充分发挥其多线程的效率。
  (二)合理选择多线程工具
  多线程开发究竟应该选用TBB,OpenMP,还是本地Windows线程,取决于很多方面的因素,不仅要考虑开发环境因素,还要根据多线程模式的复杂度来选择。
  1、 Intel TBB?OpenMP?Windows多线程?
  由于这只是一个很简单的实验,意在对各种线程方法的效率有一个初步的认识,所以只是得出了很初步的结果分析。事实上,多线程开发究竟应该选用TBB,OpenMP,还是本地Windows线程,取决于很多方面的因素,不仅要考虑开发环境因素,还要根据多线程模式的复杂度来选择。   2、 开发环境繁简因素
  从代码复杂度来分析,与OpenMP和TBB相比,Windows多线程需要更加冗长的代码,所以维护起来就更加复杂。所以,适当地使用OpenMP和TBB,使用它们所提供的API函数来帮你实现线程组的建立和调度,必然会为你省去不少功夫。
  3、 实现语言扩展性因素
  若利用C++编程,TBB的性能最佳。因为它利用了大量的C++ 模板和自定义用户对象类型,所以适合更加面向对象的语言。若利用C语言编程,也许OpenMP 反而更加适合[4]。相对于 TBB,它更方便结构型编码,所以代码的开销也相对低。同时, OpenMP需要编译器支持MPI库,而Windows线程方法和TBB则不需要。
  三、 多线程方法研究的意义
  在本论文中,对当前各种比较流行的多线程方法(Windows线程,OpenMP,Intel TBB等)也进行了比较透彻的分析。并通过程序设计的过程,分别完成了利用单线程,Windows多线程,OpenMP和Intel TBB来求2-1,000,000之间的素数的代码实现方法,在实践中更加深入地了解了各种多线程技术工作原理,并设计了一个简单实验的方法,量化地分析了各种线程方法的运算速度,从一个侧面更直观地了解了各种线程技术的性能。
  与传统的多线程论文重理论、轻实践不同,本论文没有一味地罗列多线程方法的理论知识,而是从解决一个应用实例“求2-1,000,000之间的所有素数”出发,通过利用各种不同的线程方法解决这一问题,在实践过程中,更加深入地分析和阐述了多线程的工作机理。又通过设计实验的方法,对各种线程方法的性能进行了量化的分析,使得论文更加的生动,更具说服力。
  参考文献
  [1] William Stallings,操作系统——精髓与设计原理·陈渝译,北京:电子工业出版社,2005
  [2] 陈国良,并行计算——结构·算法·编程(修订版),北京:高等教育出版社,2003
  [3] Wilkinson,B,Allen,M 并行程序设计·陆鑫达等译,北京:机械工业出版社,2001
  [4] Park, Il.;, Ph.D,Implicitly-multithreaded processors, Purdue University, 2003
其他文献
摘要:随着公路建设事业的迅速发展,公路工程施工建设在标准、质量、安全生产等方面要求越来越高,加强工程内业资料的管理已成为公路工程建设和发展的必然要求。本文笔者根据多年的工作经验浅谈公路工程内业资料的作用和意义,内业资料的内容以及在整理内业资料时应注意的事项。加强内业资料的管理,确保公路工程建设质量全面提高。  关键词 公路工程 内业 管理  公路工程内业资料是工程从开工到竣工全过程的真实记录。是直
期刊
摘要:动中通天线系统主要用于移动载体移动条件下实时通信,满足处理突发紧急事件的需求。本文提出惯导跟踪式动中通卫星通信车载天线系统的组成,对工作原理进行了分析。惯导跟踪式的动中通天线系统不依赖于任何外部信号,利用惯性导航系统自身即可完全实现自主对星,在移动载体移动过程中也能够进行实时对星和换星,灵活性高。  关键词:动中通,惯性导航,天线,卫星通信  概述  动中通卫星通信天线系统主要用于车辆等载体
期刊
【摘要】:随着建筑工程技术的飞速发展和工程质量要求的不断提高,建筑工程管理理念也因此有了更高的要求。建筑企业既认清建筑工程管理中存在的缺陷,更要理性地探析目前工程管理理念落后、管理人员的综合素质较低、管理体制不健全等不足,通过建筑工程的管理思维模式的不断创新来增强建筑工程的质量,促进了建筑企业平稳的发展。本文以分析目前建筑工程管理现状,认识创新思维在工程管理的重要性,叙述了推进工程管理中创新思维的
期刊
摘要:近年来我国煤矿业生产规模不断扩大,为此国家加强了对煤矿业安全生产的要求和监督力度。机电运输管理是煤矿安全生产过程中的重要一环,因此做好煤矿机电运输管理工作是保证矿井安全、顺利生产的重要保障。本文分析了当前我国煤矿机电运输管理存在的问题,并在此基础上提出了加强煤矿机电运输管理的具体措施。  关键词:煤矿;机电运输;管理  引言  煤矿业是我国能源产业的重要组成,它的发展状况直接关系到国家的经济
期刊
摘要:本文通过对钩舌在检修过程中发现故障的调查,发现钩舌牵引台根部裂纹较多,危及行车安全,提出增加钩舌牵引台根部为探伤部位的建议。  关键词: 货车钩舌 索引台根部 裂纹 探伤部位  一、问题提出:  车钩缓冲装置是传递牵引力,缓和纵向冲击力的重要车辆部件,对铁路运输安全起着至关重要的作用。随着铁路高速重载的发展,对车钩缓冲装置更是提出了更高的要求。钩舌作为车钩载荷主要传导部件,在车辆的运行中承受
期刊
摘要:信息技术以其方便快捷被各个行业广泛应用,在工程建设中,对信息技术的进入也是为了促进建筑工程管理现代化、信息化、科学化。提高信息技术在工程管理中的应用,是提高其应用性的最高追求,本文在分析了信息技术在建筑工程管理中的应用,探讨了优化建筑工程管理中应用信息技术的措施,旨在促进信息技术在建筑工程管理中的应用。  关键词:信息技术;建筑工程管理;应用技术  前言  随着我国的信息化建设逐步深入发展,
期刊
摘要:HFC网络的“单改双”是广电行业应对三网融合业务发展的第一步。广电的双向改造有多种技术可选择,包括CMTS、EPON+EoC、EPON+LAN,甚至FTTB等。本文介绍了充分利用现有的HFC网络,采用FTTB+EoC进行网络改造,对技术优化提出了个人的一些想法和研究成果,可以提高广电与其他运营商在最后100米上的竞争实力。  关键词:HFC;双工;宽带;广电网络  随着技术发展的日新月异,移
期刊
[摘要] 文章通过施工管理在建筑项目中出现的问题进行阐述。对于施工管理改革创新的必要性进行分析,并给出科学合理的创新标准及模式。  [关键词]工程项目管理;创新  为了实现最终的施工合同目标以及经济利益和社会利益,企业会根据实际情况以及未来发展战略目标,依据现代化运行模式,优化设备、管理模式,从而实现双赢的局面。  我国建筑工程项目施工历经20多年的摸索,在管理上获得极高的发展效率。但是依然存在很
期刊
【摘要】:本文以下内容将以某公司废水处理改建及回用工程为例,着重分析方案设计,以供参考。  【关键词】:废水处理;改建;回用工程;方案设计  1、工程概况及改建的必要性分析  某公司内有一配套电镀车间,在电镀加工生产过程中有含铜、含银、含镍、含氰废水排出,其中含铬废水、含镍废水、含氰废水分别约为100 m3/d,酸洗废水约为150 m3/d。该类废水含有大量的重金属离子,若直接排放至水体中,可在食
期刊
摘 要:本文主要从新形势下企业员工技能培训工作面临的难题入手,通过对企业员工技能培训存在问题进行分析,结合新形势下发展战略,提出如何加强员工技能培训工作的具体措施和对策。  关键词:企业,技能,对策  1 前言  在新形势下,经济全球化和市场化的到来和深入,企业面临前所未有的市场竞争和挑战,这样对企业员工的素质、技能提出了更高要求。企业现阶段,必须通过持续高效技能培训和实践,加快培养造就一支能适应
期刊