并行程序编译方法及系统技术方案

技术编号:2917220 阅读:197 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种并行程序编译方法,包括:数据划分步骤;数据重分布步骤;循环迭代划分步骤;循环迭代重分布步骤;通信I/O观测步骤;计算和通信的代码段生成步骤。本发明专利技术还涉及一种并行程序编译系统,包括:数据划分模块;数据重分布模块;循环迭代划分模块;循环迭代重分布模块;通信I/O观测模块;计算通信I/O操作代码段生成模块。本发明专利技术建立了核外非规则计算编译系统,简化了核外和非规则的并行计算问题,并提高该类程序的可移植性,该运行库基于消息传递MPI机制,具有用于支持并行程序的资源。

【技术实现步骤摘要】

本专利技术涉及并行编译领域,尤其是指一种并行程序编译方法及系统
技术介绍
核外并且非规则计算的运行库系统能够将核外和非规则计算结合起来,为用户解决核外并且非规则计算问题。在并行计算机上运行大规模科学计算应用程序时,常常涉及到非规则分布的数据元素的所有权问题。这些应用会导致需要通过一层或者多层的间接数组来访问数据元素,在这种情况下数据元素的存取依赖于间接数组,而大多数间接数组元素的值只有在程序运行时才可知,这类问题就属于非规则计算问题。同时,大规模并行应用中涉及的数据量也是惊人的,内存容量往往不能满足涉及大数据量计算问题的存储要求。当程序运行时,某个时刻只能有部分数据被调入内存并参与计算,并且在适当的时候写回外存,通过内外存的数据交换来完成整个计算,这就是核外计算问题。在核外、非规则计算问题上,前人对其模型及优化技术方面做了部分研究,但始终没有将核内与核外,规则与非规则计算问题在统一框架下进行考虑。由于核内、核外、规则、非规则问题常常并存于实际的大规模计算问题中,统一考虑将有利于最优并行策略和优化技术的选择以及系统性能的全局优化。在核外非规则领域中,数据划分与重分布、任务划分、通信集生成和负载均衡这四个并行及优化策略方面已经有部分成果本专利技术要解决两个方面的问题:优化方法和I/O子系统问题。进一步说,对非规则计算的研究要致力于处理核外数组的存取,这可以通过将核外数组影射为内存中的核内数组的方法来实现。通过建立全局数组和局部数组的对应关-->系,根据数据的存取模式动态地产生通信,并且着重考虑动态均衡负载问题来实现。依据上述概念,一些数据结构和功能函数被集成为一个运行库系统,由此来简化实现核外非规则计算问题。
技术实现思路
本专利技术的目的是提供一种用于集群计算机或SMP计算机的并行程序编译方法及系统,可以将解决核外问题与解决非规则问题相结合,借助于该运行库系统,能够简化核外非规则并行程序的设计,从而提高生产率。为了实现上述目的,本专利技术提供了一种用于集群计算机或SMP计算机的并行程序编译方法,包括以下步骤:步骤1、对待处理数据进行划分;步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布;步骤3、根据输入的任务分配方式对循环进行迭代划分;步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进行重分布;步骤5、对通信和I/O操作的进行观测,并生成预处理代码段;步骤6、根据步骤5的通信和I/O操作观测结果,生成对应的计算和通信和I/O操作的代码段。进一步的,步骤1具体为:依据预设或默认的划分策略,将数据段中的核外或核内数据数组和索引数组划分到各个计算节点,并将划分结果保存在转换表中。进一步的,步骤2具体包括:步骤2A:为了将原来的数据分布重新映射到步骤1所生成的数据划分结-->果上,先将本地节点临时缓冲区中下次计算不需要的数据存储到磁盘上;步骤2B:生成MPI_IO操作的自定义数据类型,来读写磁盘上的非规则数据;步骤2C:根据步骤2B生成的数据类型,通过磁盘读取或者通信调度的方式,取得不在本地节点内存中的数据,并将其存储在本地节点的临时缓冲区中;步骤2D:修改数据中索引数组的下标,从原来的全局下标改为指向本地节点的数据缓冲区或本地临时缓冲区,将此变更存在转换表中,并生成把此转换表广播到各个节点中的代码。进一步的,步骤3具体为:根据用户输入或默认设置的“拥有者计算”原则或“大多数拥有者计算”原则或“最小化通信”原则,对循环迭代代码段进行计算划分,将要计算本次数据段的循环迭代代码段划分到各个处理器上。进一步的,步骤4具体为:根据步骤3产生的循环迭代代码段划分结果,调整索引数组的元素,生成代码将数据移动到有对应计算操作的节点上,并进行组通信操作。进一步的,步骤5具体为:为了优化下一个计算步骤中引入的通信调用和磁盘I/O操作,检测节点之间将发生的通信图和节点的I/O操作,并进行预处理,产生优化后的通信图和I/O操作。进一步的,步骤6具体为:根据步骤5的通信和I/O操作观测结果,生成对应的预通信和I/O操作和计算的代码段,然后生成将计算结果传到其他有关节点的通信代码段。为了实现上述目的,本专利技术还提供了一种用于集群计算机或SMP计算机-->的并行程序编译系统,包括:数据划分模块,用于对待处理数据进行划分;数据重分布模块,用于根据输入的数据分布方式对划分后的数据进行数据重分布;循环迭代划分模块,用于根据输入的任务分配方式对循环进行迭代划分;循环迭代重分布模块,用于根据循环迭代划分模块的循环迭代划分结果,对待处理的索引数组元素进行重分布;通信I/O观测模块,用于对通信和I/O操作的进行观测,并生成预处理代码段;计算通信I/O操作模块,根据通信I/O观测模块的通信和I/O操作观测结果,生成对应的计算和通信和I/O操作的代码段。为了实现上述目的,在步骤1之前,本专利技术还提供了以下三个步骤,包括:步骤01:输入一个采用MPI消息通信机制的并行源程序(S100),该并行程序包含对核外数组的访问和非规则数组的访问中的至少一个;步骤02:输入一个用于核外和非规则数组的数据分布方式(S101);步骤03:输入一个用于对循环迭代代码段进行划分的任务分配方式(S102)。基于上述的技术方案,本专利技术简化核外和非规则的并行计算问题,并提高该类程序的可移植性,该运行库基于消息传递MPI机制,具有用于支持并行程序的资源。附图说明图1为并行编译系统层次图,显示了本核外非规则运行支持库的层次结构图。-->图2为并行编译系统实现的主要过程,显示了从输入参数角度看、并行编译系统实现的主要过程。图3为并行编译系统的主要功能单元图。图4为并行编译方法对核外非规则计算的支持流程图,显示了本专利技术对一个最佳实例的支持流程图,依据该最佳实施例指示在一个计算机节点上,并行编译方法具体实现的流程图。具体实施方式下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。本专利技术中,从需要参数的角度来看,采用本专利技术对核外非规则计算并行程序进行并行编译需要以下三个输入数据的步骤:步骤01:输入一个采用MPI消息通信机制的并行源程序(S100),该并行程序包含对核外数组的访问和非规则数组的访问中的至少一个;步骤02:输入选择并行程序中用于核外和非规则数组的数据分布方式;步骤03:输入计算的任务分配方式,方式包括“拥有者计算”原则、“大多数拥有者计算”原则以及“最小化通信”原则。本专利技术通过输入三种参数,降低核外非规则计算的编程复杂度,与底层具体实现分离,提供了一种高层次的控制。另外,由于核外数据量非常多,不能一次装入内存,所以要对核外数据数组数据和核外索引数组数据分段,然后逐段将数据读入内存,再进行需要的计算操作。因此执行完三种参数的输入后,要生成数据分段的代码段,然后依据本专利技术的并行编译方法,对数据段进行处理。本专利技术的并行编译方法适用于集群计算机或SMP计算机的并行程序编译,-->包括以下步骤:步骤1、对待处理数据进行划分;步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布;步骤3、根据输入的任务分配方式对循环进行迭代划分;步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进行重分布;步骤5、对通信和I/O操作的进行观本文档来自技高网
...

【技术保护点】
并行程序编译方法,其特征在于, 步骤1、对待处理数据进行划分; 步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布; 步骤3、根据输入的任务分配方式对循环进行迭代划分; 步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进行重分布; 步骤5、对通信和I/O操作的进行观测,并生成预处理代码段; 步骤6、根据步骤5的通信和I/O操作观测结果,生成对应的计算和通信和I/O操作的代码段。

【技术特征摘要】
1、并行程序编译方法,其特征在于,步骤1、对待处理数据进行划分;步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布;步骤3、根据输入的任务分配方式对循环进行迭代划分;步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进行重分布;步骤5、对通信和I/O操作的进行观测,并生成预处理代码段;步骤6、根据步骤5的通信和I/O操作观测结果,生成对应的计算和通信和I/O操作的代码段。2、如权利要求1所述的并行程序编译方法,其特征在于,步骤1具体为:依据预设或默认的划分策略,将数据段中的核外或核内数据数组和索引数组划分到各个计算节点,并将划分结果保存在转换表中。3、如权利要求1所述的并行程序编译方法,其特征在于,步骤2具体包括:步骤2A:为了将原来的数据分布重新映射到步骤1所生成的数据划分结果上,先将本地节点临时缓冲区中下次计算不需要的数据存储到磁盘上;步骤2B:生成MPI_IO操作的自定义数据类型,来读写磁盘上的非规则数据;步骤2C:根据步骤2B生成的数据类型,通过磁盘读取或者通信调度的方式,取得不在本地节点内存中的数据,并将其存储在本地节点的临时缓冲区中;步骤2D:修改数据中索引数组的下标,从原来的全局下标改为指向本地节点的数据缓冲区或本地临时缓冲区,将此变更存在转换表中,并生成把此转换表广播到各个节点中的代码。4、如权利要求1所述的并行程序编译方法,其特征在于,步骤3具体为:根据用户输入或默认设置的“拥有者计算”原则或“大多数拥有者计算”原则或“最小化通信”原则,对循环迭代代码段进行计算划分,将要计算本次数据段的循环迭代代码段划分到各个处理器上。5、如权利要求1所述的并行程序编译方法,其特征在于,步骤4具体为:根据步骤3产生的循环迭代代码段划分结果,调整索引数组的元素,生成代码将数据移动到有对应计算操作的节点上,并进行组通信操作。6、如权利要求1所述的并行程序编译方法,其特征在于,步骤5具体为:为了优化下一个计算...

【专利技术属性】
技术研发人员:胡长军李建江赵冲冲王珏
申请(专利权)人:北京科技大学
类型:发明
国别省市:11[中国|北京]

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

1