创建和使用用于并行编程的数据结构的系统及方法技术方案

技术编号:18179050 阅读:62 留言:0更新日期:2018-06-09 20:55
提供了创建用于并行编程的数据结构的系统和方法实施例。一种创建用于并行编程的数据结构的方法,包括:一个或多个处理器形成一个或多个数据结构,各数据结构包含一个或多个全局容器及多个局部容器。全局容器中的每一个均可被多线程并行处理环境中的所有多个线程访问。多个局部容器中的每一个只可被多个线程中对应的一个线程访问。当项目将被并行处理时,全局容器被拆分成多个局部容器;以及当并行过程达到同步点时,两个或两个以上局部容器被合并成单个全局容器。

【技术实现步骤摘要】
【国外来华专利技术】创建和使用用于并行编程的数据结构的系统及方法本申请要求于2016年10月14日递交的、申请号为15/293,413、专利技术名称为“创建和使用用于并行编程的数据结构的系统及方法(SystemsandMethodsforCreatingandUsingaDataStructureforParallelProgramming)”的美国非临时性专利申请的权益,其要求2015年11月2日递交的、申请号为62/249,750、专利技术名称为“用于并行编程的抽象数据结构的系统和方法(SystemandMethodforanAbstractDataStructureforParallelProgramming)”的美国临时性案的优先权和权益,这些申请案以引入的方式并入。
本专利技术涉及用于并行编程的系统和方法,以及在特定实施例中,涉及用于并行编程的数据结构的系统和方法。
技术介绍
并行程序比顺序程序更难撰写。近几十年来,存在着许多并行框架的方法。普遍的几种是CILKTM,CILKTMPlus,线程构建模块(BuildingBlocks,TBB),和其它方法。这些并行框架为C/C++语言提供了扩展库和运行支撑并且能在许多方面实现性能提升。然而,大部分用于以上并行编程框架的数据结构仍然是传统常用的几种。其中一些提供了并行数据结构解决方案,但是这些方法均与某些具有固定实现的运行系统绑定。其中部分解决方案的性能往往不佳。此外,这些用于并行编程的系统难以调试。
技术实现思路
一种数据处理系统中创建用于并行编程的数据结构的实施例方法,包括:一个或多个处理器形成一个或多个数据结构,各数据结构包含一个或多个全局容器及多个局部容器。各全局容器均可被多线程并行处理环境中的所有多个线程访问。所述多个局部容器中的每一个只可被一个对应的线程访问。所述方法包括:当项目将被并行处理时,将所述全局容器拆分成多个局部容器。所述方法还包括:当并行过程达到同步点时,将两个或两个以上局部容器合并成单个全局容器。一种创建用于并行编程的数据结构的实施例数据处理系统,包括:一个或多个处理器;以及一非瞬时性计算机可读存储介质,其存储用于通过所述处理器执行的编程。所述编程包括用于进行以下操作的指令:一个或多个处理器形成一个或多个数据结构。各数据结构包括一个或多个全局容器及多个局部容器。各全局容器均可被多线程并行处理环境中的所有多个线程访问。所述多个局部容器中的每一个只可被一个对应的线程访问。所述编程还包括用于进行以下操作的指令:当项目将被并行处理时,将所述全局容器拆分成多个局部容器。所述编程还包括用于进行以下操作的指令:当并行过程达到同步点时,将两个或两个以上局部容器合并成单个全局容器。提供了一种为创建用于并行编程的数据结构存储计算机指令的实施例非瞬时性计算机可读存储介质,当所述计算机指令由一个或多个处理器执行时,使所述一个或多个处理器执行如下步骤:形成一个或多个数据结构,各数据结构包含一个或多个全局容器及多个局部容器。各全局容器均可被多线程并行处理环境中的所有多个线程访问。所述多个局部容器中的每一个只可被一个对应的线程访问。当所述使用并行编程构架的计算机指令在由一个或多个处理器执行时,还使所述一个或多个处理器执行如下步骤:当项目将被并行处理时,将所述全局容器拆分成多个局部容器。当所述使用并行编程构架的计算机指令在由一个或多个处理器执行时,还使所述一个或多个处理器执行如下步骤:当并行过程达到同步点时,将两个或两个以上局部容器合并成单个全局容器。在本文所公开的任一实施例中,所述一个或多个全局容器及所述多个局部容器支持一组数据结构访问方法,包括:put()方法或push()方法、get()方法或pop()方法、split()方法、merge()方法中的一个或多个。在一实施例中,所述数据结构基于数组,并且所述支持一组访问方法包括支持所述put()方法及所述pop()方法。在一实施例中,所述数据结构基于位向量,并且所述支持一组访问方法包括支持所述put()方法及所述get()方法。在一实施例中,所述多个局部容器中的一局部容器包括追踪标识(traceidentifier,tid)、开始索引、和结束索引。在一实施例中,执行所述一个或多个全局容器及多个局部容器所提供的指令以获得结果,将所述结果传输给网络中的节点或使所述数据处理系统将一个或多个图像,声音,或振动呈现给用户,所述结果包含从源节点到末端节点的跨越网络的路径的路径信息,并且所述将所述结果传输给网络中的节点包含传输所述路径信息的至少一部分到所述网络中的节点,所述路路径信息使所述节点便于从所述源节点传输数据到所述末端节点。在一实施例中,所述一个或多个处理器包括多核处理器。在一实施例中,所述一个或多个全局容器及所述多个局部容器包括各自的串行常用数据结构。附图说明为了更完整地理解本专利技术及其优点,现在参考下文结合附图进行以下描述,其中:图1示出顺序常用数据结构(commondatastructure,CDS)及多个用于包括具有所公开的Sack数据结构的并发CDS的实施例的并行编程环境的数据结构解决方案;图2为说明基于数组的复杂CDS的aSack系统的实施例的图;图3为说明基于位向量的复杂CDS的bSack系统的实施例的图;图4是一种用于实现bSack的伪码的实施例的图;图5是一种将全局容器拆分为局部容器及将局部容器合并成全局容器的伪码的实施例的图;图6是一种使用所公开的Sack系统及结构操作并行程序的方法的实施例的流程图;图7是一种使用所公开的Sack系统及结构操作并行程序的方法的实施例的流程图;图8示出一种可实现本专利技术的系统及方法的网络的实施例;图9示出一种可实现本文中所描述的系统及方法的通信网络的实施例;图10示出一种可以安装在主机设备中的用于执行本文所描述的方法的实施例处理系统的框图;以及图11示出用于在电信网络上传输和接收信令的收发器的框图。具体实施方式下文将详细论述当前优选实施例的结构,制作和使用。然而,应了解,本专利技术提供可在各种具体上下文中体现的许多适用的专利技术性概念。所论述的具体实施例仅仅说明用以实施和使用本专利技术的具体方式,而不限制本专利技术的范围。存在着几种类似的实现并行编程框架的现有方法,例如TBB及CILKTM。这些技术的不同种类描述如下。CILKTM中的归纳函数及数组符号是两种与CILKTM/CILKTMPlus运行绑定的数据结构。CILKTM中的归纳函数对应于OpenMP中的化简语句或对应于独异点的代数符号。各归纳函数具有单位元及将两个数值进行组合的关联性化简运算。因特尔CILKTMPlus将符号添加至允许用户在全部数组或部分数组上表达高层次运算的数组。这也有助于编译器将应用有效向量化。简而言之,CILKTMPlus提供了基本数据结构的简化版本,且并不针对任何算法[1]。似乎无法将这些具有常用数据结构的解决方案进行性能比较。线程构建模块(ThreadingBuildingBlocks,TBB)提供了准许多个线程在同一容器上同步调用某些方法的并发容器类。TBB中的并发容器包括并发地图/集合/队列/向量。以上所有数据结构均与TBB模板库及运行绑定[2]。一些访问这些容器的方法,例如并行队列中的push(),需要C++本文档来自技高网...
创建和使用用于并行编程的数据结构的系统及方法

【技术保护点】
一种数据处理系统中创建用于并行编程的数据结构的方法,其特征在于,包含:一个或多个处理器形成一个或多个数据结构,各数据结构包含一个或多个全局容器及多个局部容器,所述全局容器中的每一个均可被多线程并行处理环境中的所有多个线程访问,所述多个局部容器中的每一个只可被所述多个线程中对应的一个线程访问;当项目将被并行处理时,将所述全局容器拆分成多个局部容器;以及当并行过程达到同步点时,将两个或两个以上局部容器合并成单个全局容器。

【技术特征摘要】
【国外来华专利技术】2015.11.02 US 62/249,750;2016.10.14 US 15/293,4131.一种数据处理系统中创建用于并行编程的数据结构的方法,其特征在于,包含:一个或多个处理器形成一个或多个数据结构,各数据结构包含一个或多个全局容器及多个局部容器,所述全局容器中的每一个均可被多线程并行处理环境中的所有多个线程访问,所述多个局部容器中的每一个只可被所述多个线程中对应的一个线程访问;当项目将被并行处理时,将所述全局容器拆分成多个局部容器;以及当并行过程达到同步点时,将两个或两个以上局部容器合并成单个全局容器。2.根据权利要求1所述的方法,其特征在于,所述一个或多个全局容器及所述多个局部容器支持一组数据结构访问方法,所述一组数据结构访问方法包含以下中的一个或多个:put()方法或push()方法;get()方法或pop()方法;split()方法;及merge()方法。3.根据权利要求2所述的方法,其特征在于,所述数据结构基于数组,并且所述支持包含支持所述push()方法及所述pop()方法。4.根据权利要求2所述的方法,其特征在于,所述数据结构基于位向量,并且所述支持包含支持所述put()方法及所述get()方法。5.根据权利要求1至4中任一权利要求所述的方法,其特征在于,所述多个局部容器中的一个局部容器包含追踪标识(traceidentifier,tid),开始索引,及结束索引。6.根据权利要求1至5中任一权利要求所述的方法,其特征在于,进一步包括:执行所述一个或多个全局容器及所述多个局部容器所提供的指令以获得结果;以及将所述结果传输给网络中的节点,或使所述数据处理系统将一个或多个图像,声音,或振动呈现给用户,所述结果包含从源节点到末端节点的跨越网络的路径的路径信息,并且所述将所述结果传输给网络中的节点包含传输所述路径信息的至少一部分到所述网络中的节点,所述路径信息使所述节点便于将数据从所述源节点传输到所述末端节点。7.根据权利要求1至6中任一权利要求所述的方法,其特征在于,所述一个或多个处理器包含多核处理器。8.根据权利要求1至7中任一权利要求所述的方法,其特征在于,所述一个或多个全局容器及所述多个局部容器包括各自的串行常用数据结构。9.一种创建用于并行编程的数据结构的数据处理系统,其特征在于,包含:一个或多个处理器;以及非瞬时性计算机可读存储介质,其存储用于通过所述处理器执行的编程,所述编程包括用于进行以下操作的指令:形成一个或多个数据结构,各数据结构包含一个或多个全局容器及多个局部容器,所述全局容器中的每一个均可被多线程并行处理环境中的所有多个线程访问,所述多个局部容器中的每一个只可被所述多个线程中对应的一个线程访问;当项目将被并行处理时,将所述全局容器拆分成多个局部容器;以及当并行过程达到同步点时,将两个或两个以上局部容器合并成单个全局容器。10.根据权利要求9所述的数据处理系统,其特征在于,所述一个或多个全局容器及所述多个局部容器支持一组数据结构访问方法,所述一组数据结构访问方法包含以下中的一个或多个:put()方法或push()方法;get()方法或pop()方法;split()方法;及merge()方法。11.根据权利要求10所述的数据处理系统,其特征在于,所述数据结构基于数组,并且所述支持包含支持所述push()方法及所述pop()方法。12.根据权利要求10所述的数据处理系统,其特征在于,所述数据结构基于位向量,并且所述支持包含支持所述put()方法及所述get()方...

【专利技术属性】
技术研发人员:陈丽亚田琛胡子昂
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1