基于TBBHough变换并行检测直线.docVIP

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

基于TBBHough变换并行检测直线   摘要:Hough变换存在着运算时间长的缺点,用了并行处理这种解决海量数据计算的有效方法来减少其运行时间。该文主要研究了:利用TBB(Threading Building Blocks)这种线程构建模块在多核机上对Hough变换中可并行的部分进行并行化;实验表明这种方法对Hough变换的并行化都有很好的加速效果。   关键词:Hough变换;TBB   中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2014)13-3162-03   Hough Transform Based on TBB Parallel Detection Straight Line   LIU Xiang-jiao1, ZHAO Xue-wu1, JIA Chao-chao2   (1.Department of Soft, Nanyang Normal College, Nanyang 473061, China; 2.ChuMuJu, Jiyuan 454450, China)   Abstract: Hough transform operation time long shortcomings, using the parallel processing that solution is a effective method to compute the huge amounts of data to reduce the running time. This paper mainly studied the: using the TBB (Threading Building Blocks) this thread Building Blocks on a multi-core machine was carried out on the part of the Hough transform can be parallel parallelization; Parallel experiments show that this method of Hough transform has a good speedup.   Key word: Hough transform;TBB   TBB的概念在2004年产生于Intel的内部,到了目前已经有了4.2的版本。TBB在编程的时候使用模板作为通常的并行迭代模型。它提供了丰富的C++模板类,这使得程序员不需要专业地去学习同步、缓存优化、负载平衡等问题,就能很容易地自动调度并行程序,并能使CPU的多个核心都高效的运转起来。TTB是一种能使程序的伸缩性得以提升,且对嵌套完全支持的并行编程模型,可以在 Windows、MacX和Linux的系统上运行,支持 Intel C++、VC7/和gcc编译器。并且为了构建大型的并行程序,允许程序员创建自己的并行组件[1]。   1 TBB的任务调度器   线程构建模块的核心组件就是TBB的任务调度器(Task Schedule),任务调度器使用之前,每个线程都会通过tbb:: task_scheduler_int来初始化线程构建模块库,并且在同时还会隐含地初始化一个全局线程池,通过调度与任务机制自动地来管理线程池。任务的管理由任务调度器通过线程池来进行,通过使用让每一个逻辑线程都对应一个物理线程的方法来解决负荷问题。使用TBB的任务调度机制task与task_schedule可以将线程与任务结合,任务就是计算的逻辑单元,用户可以不必关注线程,而只关心任务本身,通过使用把这些任务映射到物理线程的方法以减少系统的开销。任务调度器不需要用户考虑负载平衡问题,只需要把程序分成若干个小任务,调度器就会将任务自动分配给线程,做到在多核处理器上的负载均衡。   任务调度器将任务映射到物理线程,这个映射是非抢占式的。每个线程都有一个execute()方法,当线程开始执行execute()方法之后,这个任务将被绑定到线程上,直到execute()方法返回。在这期间,线程只有在子任务上等待时,才会执行其他任务,这时它可以执行同一线程中的其他子任务或 (如果没有正在等待的子任务)执行在其他线程中创建的任务。   任务调度器主要是将计算高度密集的工作进行并行化。由于任务对象不会被抢先调度,故在执行时不可以有长时间的阻塞,因阻塞的线程(及其相应的处理器)将无法为其他任务服务了。   调度器是对任务图进行计算的。任务图就是一张有向图,图中的一个节点表示一个任务,每个节点都指向其各自的父节点,根节点的父节点是NULL,或是正在等待根节点完成的其他任务。通过task::parent()方法能访问父指

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档