并行程序编译方法及系统的制作方法

文档序号:6470936阅读:207来源:国知局
专利名称:并行程序编译方法及系统的制作方法
技术领域
本发明涉及并行编译领域,尤其是指一种并行程序编译方法及系统。
背景技术
核外并且非规则计算的运行库系统能够将核外和非规则计算结合起来,为 用户解决核外并且非规则计算问题。在并行计算机上运行大规模科学计算应用 程序时,常常涉及到非规则分布的数据元素的所有权问题。这些应用会导致需 要通过一层或者多层的间接数组来访问数据元素,在这种情况下数据元素的存 取依赖于间接数组,而大多数间接数组元素的值只有在程序运行时才可知,这 类问题就属于非规则计算问题。同时,大规模并行应用中涉及的数据量也是惊 人的,内存容量往往不能满足涉及大数据量计算问题的存储要求。当程序运行 时,某个时刻只能有部分数据被调入内存并参与计算,并且在适当的时候写回 外存,通过内外存的数据交换来完成整个计算,这就是核外计算问题。
在核外、非规则计算问题上,前人对其模型及优化技术方面做了部分研究, 但始终没有将核内与核外,规则与非规则计算问题在统一框架下进行考虑。由 于核内、核外、规则、非规则问题常常并存于实际的大规模计算问题中,统一 考虑将有利于最优并行策略和优化技术的选择以及系统性能的全局优化。
在核外非规则领域中,数据划分与重分布、任务划分、通信集生成和负载 均衡这四个并行及优化策略方面已经有部分成果
本发明要解决两个方面的问题优化方法和I/O子系统问题。进一步说, 对非规则计算的研究要致力于处理核外数组的存取,这可以通过将核外数组影 射为内存中的核内数组的方法来实现。通过建立全局数组和局部数组的对应关
系,根据数据的存取模式动态地产生通信,并且着重考虑动态均衡负载问题来 实现。依据上述概念, 一些数据结构和功能函数被集成为一个运行库系统,由 此来简化实现核外非规则计算问题。

发明内容
本发明的目的是提供一种用于集群计算机或SMP计算机的并行程序编译 方法及系统,可以将解决核外问题与解决非规则问题相结合,借助于该运行库 系统,能够简化核外非规则并行程序的设计,从而提高生产率。
为了实现上述目的,本发明提供了一种用于集群计算机或SMP计算机的 并行程序编译方法,包括以下步骤
步骤l、对待处理数据进行划分;
步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布; 步骤3、根据输入的任务分配方式对循环进行迭代划分; 步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进 行重分布;
步骤5、对通信和1/0操作的进行观测,并生成预处理代码段;
步骤6、根据步骤5的通信和I/O操作观测结果,生成对应的计算和通 信和1/0操作的代码段。
进一步的,步骤l具体为依据预设或默认的划分策略,将数据段中的 核外或核内数据数组和索引数组划分到各个计算节点,并将划分结果保存在 转换表中。
进一步的,步骤2具体包括
步骤2A:为了将原来的数据分布重新映射到步骤1所生成的数据划分结果上,先将本地节点临时缓冲区中下次计算不需要的数据存储到磁盘上;
步骤2B:生成MPI —10操作的自定义数据类型,来读写磁盘上的非规则 数据;
步骤2C:根据步骤2B生成的数据类型,通过磁盘读取或者通信调度的 方式,取得不在本地节点内存中的数据,并将其存储在本地节点的临时缓冲 区中;
步骤2D:修改数据中索引数组的下标,从原来的全局下标改为指向本地 节点的数据緩冲区或本地临时緩冲区,将此变更存在转换表中,并生成把此 转换表广播到各个节点中的代码。
进一步的,步骤3具体为根据用户输入或默认设置的"拥有者计算" 原则或"大多数拥有者计算"原则或"最小化通信"原则,对循环迭代代码 段进行计算划分,将要计算本次数据段的循环迭代代码段划分到各个处理器 上。
进一步的,步骤4具体为根据步骤3产生的循环迭代代码段划分结果, 调整索引数组的元素,生成代码将数据移动到有对应计算操作的节点上,并 进行组通信操作。
进一步的,步骤5具体为为了优化下一个计算步骤中引入的通信调用 和磁盘I/0操作,检测节点之间将发生的通信图和节点的1/0操作,并进行 预处理,产生优化后的通信图和1/0操作。
进一步的,步骤6具体为根据步骤5的通信和1/0操作观测结果,生 成对应的预通信和1/0操作和计算的代码段,然后生成将计算结果传到其他有 关节点的通信代码段。
为了实现上述目的,本发明还提供了一种用于集群计算机或SMP计算机
的并行程序编译系统,包括
数据划分模块,用于对待处理数据进行划分;
数据重分布模块,用于根据输入的数据分布方式对划分后的数据进行数 据重分布;
循环迭代重分布模块,用于根据循环迭代划分模块的循环迭代划分结果, 对待处理的索引数组元素进行重分布;
通信I/0观测模块,用于对通信和1/0操作的进行观测,并生成预处理 代码段;
计算通信1/0操作模块,根据通信1/0观测模块的通信和1/0操作观测 结果,生成对应的计算和通信和1/0操作的代码段。
为了实现上述目的,在步骤1之前,本发明还提供了以下三个步骤,包 括步骤01:输入一个采用MPI消息通信机制的并行源程序(S100),该并
步骤02:输入一个用于核外和非规则数组的数据分布方式(S101); 步骤03:输入一个用于对循环迭代代码段进行划分的任务分配方式 (S102)。
基于上述的技术方案,本发明简化核外和非规则的并行计算问题,并提 高该类程序的可移植性,该运行库基于消息传递MPI机制,具有用于支持并 行程序的资源。


图l为并行编译系统层次图,显示了本核外非规则运行支持库的层次结构
图2为并行编译系统实现的主要过程,显示了从输入参数角度看、并行编 译系统实现的主要过程。
图3为并行编译系统的主要功能单元图。
图4为并行编译方法对核外非规则计算的支持流程图,显示了本发明对 一个最佳实例的支持流程图,依据该最佳实施例指示在一个计算机节点上,并 行编译方法具体实现的流程图。
具体实施例方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明中,从需要参数的角度来看,采用本发明对核外非规则计算并行程 序进行并行编译需要以下三个输入数据的步骤
步骤01:输入一个采用MPI消息通信机制的并行源程序(S100),该并 行程序包含对核外数组的访问和非规则数组的访问中的至少 一个;
步骤02:输入选择并行程序中用于核外和非规则数组的数据分布方式;
步骤03:输入计算的任务分配方式,方式包括"拥有者计算"原则、"大 多数拥有者计算"原则以及"最小化通信,,原则。
本发明通过输入三种参数,降低核外非规则计算的编程复杂度,与底层 具体实现分离,提供了一种高层次的控制。
另外,由于核外数据量非常多,不能一次装入内存,所以要对核外数据数 组数据和核外索引数组数据分段,然后逐段将数据读入内存,再进行需要的计 算操作。
因此执行完三种参数的输入后,要生成数据分段的代码段,然后依据本发明 的并行编译方法,对数据段进行处理。
本发明的并行编译方法适用于集群计算机或SMP计算机的并行程序编译,
包括以下步骤
步骤l、对待处理数据进行划分;
步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布; 步骤3、根据输入的任务分配方式对循环进行迭代划分; 步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进 行重分布;
步骤5、对通信和1/0操作的进行观测,并生成预处理代码段;
步骤6、根据步骤5的通信和I/O操作观测结果,生成对应的计算和通 信和1/0操作的代码段。
进一步的,步骤l具体为依据预设或默认的划分策略,将数据段中的 核外或核内数据数组和索引数组划分到各个计算节点,并将划分结果保存在 转换表中;
步骤2具体包括
步骤2A:为了将原来的数据分布重新映射到步骤1所生成的数据划分结 果上,先将本地节点临时緩沖区中下次计算不需要的数据存储到磁盘上;
步骤2B:生成MPI-IO操作的自定义数据类型,来读写磁盘上的非规则 数据;
步骤2C:根据步骤2B生成的数据类型,通过磁盘读取或者通信调度的 方式,取得不在本地节点内存中的数据,并将其存储在本地节点的临时緩冲 区中;
步骤2D:修改数据中索引数组的下标,从原来的全局下标改为指向本地 节点的数据緩冲区或本地临时緩冲区,将此变更存在转换表中,并生成把此 转换表广播到各个节点中的代码; 步骤3具体为根据用户输入或默认设置的"拥有者计算"原则或"大
多数拥有者计算"原则或"最小化通信"原则,对循环迭代代码段进行计算
划分,将要计算本次数据段的循环迭代代码段划分到各个处理器上;
步骤4具体为根据步骤3产生的循环迭代代码段划分结果,调整索引 数组的元素,生成代码将数据移动到有对应计算操作的节点上,并进行组通 信操作;
步骤5具体为为了优化下一个计算步骤中引入的通信调用和v磁盘I/O 操作,检测节点之间将发生的通信图和节点的1/0操作,并进行预处理,产 生优化后的通信图和1/0操作;
步骤6具体为根据步骤5的通信和I/O操作观测结果,生成对应的预 通信和1/0操作和计算的代码段,然后生成将计算结果传到其他有关节点的通 信代码段。
首先,对核外数据数组和核外索引数组分成多个数据段,对各个数据段 分别进行这六个步骤,完成计算任务。
为了实现上述目的,本发明采用运行时编译技术,提供了并行编译系统, 其主要功能单元包括数据划分模块,数据重分布模块,循环迭代划分模块, 循环迭代重分布模块,通信1/0观测模块和计算通信1/0操作模块。
本发明的目的通过本发明提供的一种用于集群计算机或SMP计算机的并行 程序编译系统来实现。
依据本发明的一个有利改进,并行程序(S100)本身不需要考虑数据核外
访问效率问题,而由本发明的方法和系统负责对数组非规则访问中计算机节点 之间相互通信,以及负责优化磁盘数据读取和优化内存数据映射。
依据本发明的另一个有利改进,并行程序(S100)本身不需要考虑数组非
规则访问效率问题,而由本发明的方法和系统负责对数组非规则访问中计算机 节点之间相互通信,以及负责优化磁盘数据读取和优化内存数据映射。
本发明的并行编译系统代码是用C语言实现的。但是该并行编译系统也可
以适用于Fortran, Java禾呈序调用。
本发明适用于对单程序流多数据流的并行源程序进行并行编i奪。 基于上述技术方案,本发明采用并行编译方法,将解决核外问题与解决非
规则问题相结合,借助于本发明的运行库系统,能够简化核外非规则并行程序
的设计,从而提高生产率。
最后应当说明的是以上实施例仅用以说明本发明的技术方案而非对其限制; 尽管参照较佳实施例对本发明进行了详细的说明,所属领域的普通技术人员应 当理解依然可以对本发明的具体实施方式
进行修改或者对部分技术特征进行 等同替换;而不脱离本发明技术方案的精神,其均应涵盖在本发明请求保护的 技术方案范围当中。
权利要求
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具体为 为了优化下一个计算步骤中引入的通信调用和磁盘1/0操作,检测节点之间 将发生的通信图和节点的1/0操作,并进行预处理,产生优化后的通信图和 1/0操作。
7、 如权利要求1所述的并行程序编译方法,其特征在于,步骤6具体为 根据步骤5的通信和I/O操作观测结果,生成对应的预通信和I/O操作和计 算的代码段,然后生成将计算结果传到其他有关节点的通信代码段。
8、 如权利要求1所述的并行程序编译方法,其特征在于,在步骤1之前, 还包括以下步骤步骤01:输入一个采用MPI消息通信机制的并行源程序(S100),该并 行程序包含对核外数组的访问和非规则数组的访问中的至少一个;步骤02:输入一个用于核外和非规则数组的数据分布方式(S101);步骤03:输入一个用于对循环迭代代码段进行划分的任务分配方式 (S102);该方式包括"拥有者计算,,原则、"大多数拥有者计算,,原则以及 "最小化通信"原则。
9. 并行程序编译系统,其特征在于,包括 数据划分模块,用于对待处理数据进行划分;数据重分布模块,用于根据输入的数据分布方式对划分后的数据进行数 据重分布;循环迭代重分布模块,用于根据循环迭代划分模块的循环迭代划分结果, 对待处理的索引数组元素进行重分布;通信I/0观测模块,用于对通信和1/0操作的进行观测,并生成预处理 代码段;计算通信1/0操作模块,根据通信1/0观测模块的通信和1/0操作观测 结果,生成对应的计算和通信和1/0操作的代码段。
10.如权利要求9所述的并行程序编译系统,其特征在于,还包括 并行源程序输入模块,用于输入一个采用MPI消息通信机制的并行源程序(S100),该并行程序包含对核外数组的访问和非规则数组的访问中的至 少一个;数据分布方式输入模块,用于输入选择所述并行程序编译系统中用于核 外和非规则数组的数据分布方式(S 101);任务分配方式输入模块,用于输入循环迭代划分的任务分配方式(S102)。
全文摘要
本发明涉及一种并行程序编译方法,包括数据划分步骤;数据重分布步骤;循环迭代划分步骤;循环迭代重分布步骤;通信I/O观测步骤;计算和通信的代码段生成步骤。本发明还涉及一种并行程序编译系统,包括数据划分模块;数据重分布模块;循环迭代划分模块;循环迭代重分布模块;通信I/O观测模块;计算通信I/O操作代码段生成模块。本发明建立了核外非规则计算编译系统,简化了核外和非规则的并行计算问题,并提高该类程序的可移植性,该运行库基于消息传递MPI机制,具有用于支持并行程序的资源。
文档编号G06F9/44GK101387965SQ20081022414
公开日2009年3月18日 申请日期2008年10月24日 优先权日2008年10月24日
发明者李建江, 珏 王, 胡长军, 赵冲冲 申请人:北京科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1