[发明专利]并行程序编译方法及系统无效
申请号: | 200810224147.3 | 申请日: | 2008-10-24 |
公开(公告)号: | CN101387965A | 公开(公告)日: | 2009-03-18 |
发明(设计)人: | 胡长军;李建江;赵冲冲;王珏 | 申请(专利权)人: | 北京科技大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 100083*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并行 程序 编译 方法 系统 | ||
1.并行程序编译方法,其特征在于:
步骤01:输入一个采用MPI消息通信机制的并行源程序(S100),该并行程序包含对核外数组的访问和非规则数组的访问中的至少一个;
步骤02:输入一个用于核外和非规则数组的数据分布方式(S101);
步骤03:输入一个用于对循环迭代代码段进行划分的任务分配方式(S102);该任务分配方式包括“拥有者计算”原则、“大多数拥有者计算”原则以及“最小化通信”原则;
步骤1、对待处理数据进行划分;依据预设或默认的划分策略,将数据段中的核外或核内数据数组和索引数组划分到各个计算节点,并将划分结果保存在转换表中;
步骤2、根据输入的数据分布方式对划分后的数据进行数据重分布,步骤2中具体包括步骤2A、步骤2B、步骤2C、步骤2D四个步骤;
步骤2A:为了将原来的数据分布重新映射到步骤1所生成的数据划分结果上,先将本地节点临时缓冲区中下次计算不需要的数据存储到磁盘上;
步骤2B:生成MPI_IO操作的自定义数据类型,来读写磁盘上的非规则数据;
步骤2C:根据步骤2B生成的数据类型,通过磁盘读取或者通信调度的方式,取得不在本地节点内存中的数据,并将其存储在本地节点的临时缓冲区中;
步骤2D:修改数据中索引数组的下标,从原来的全局下标改为指向本地节点的数据缓冲区或本地临时缓冲区,将此修改存在转换表中,并生成把此转换表广播到各个节点中的代码;
步骤3、根据输入的任务分配方式对循环进行迭代划分;
步骤4、根据步骤3的循环迭代划分结果,对待处理的索引数组元素进行重分布;
步骤5、对通信和I/O操作的进行观测,并生成预处理代码段;
步骤6、根据步骤5的通信和I/O操作观测结果,生成对应的计算和通信和I/O操作的代码段。
2.如权利要求1所述的并行程序编译方法,其特征在于,步骤3具体为:根据用户输入或默认设置的“拥有者计算”原则或“大多数拥有者计算”原则或“最小化通信”原则,对循环迭代代码段进行计算划分,将要计算本次数据段的循环迭代代码段划分到各个处理器上。
3.如权利要求1所述的并行程序编译方法,其特征在于,步骤4具体为:根据步骤3产生的循环迭代代码段划分结果,调整索引数组的元素,生成代码将数据移动到有对应计算操作的节点上,并进行组通信操作。
4.如权利要求1所述的并行程序编译方法,其特征在于,步骤5具体为:为了优化下一个计算步骤中引入的通信调用和磁盘I/O操作,检测节点之间将发生的通信图和节点的I/O操作,并进行预处理,产生优化后的通信图和I/O操作。
5.如权利要求1所述的并行程序编译方法,其特征在于,步骤6具体为:根据步骤5的通信和I/O操作观测结果,生成对应的预通信和I/O操作和计算的代码段,然后生成将计算结果传到其他有关节点的通信代码段。
6.并行程序编译系统,其特征在于,包括:
并行源程序输入模块,用于输入一个采用MPI消息通信机制的并行源程序(S100),该并行程序包含对核外数组的访问和非规则数组的访问中的至少一个;
数据分布方式输入模块,用于输入选择所述并行程序编译系统中用于核外和非规则数组的数据分布方式(S101);
任务分配方式输入模块,用于输入循环迭代划分的任务分配方式(S102);
数据划分模块,用于对待处理数据进行划分;依据预设或默认的划分策略,将数据段中的核外或核内数据数组和索引数组划分到各个计算节点,并将划分结果保存在转换表中;
数据重分布模块,用于根据输入的数据分布方式对划分后的数据进行数据重分布;数据重分布模块的执行步骤为:步骤2A:为了将原来的数据分布重新映射到数据划分模块所生成的数据划分结果上,先将本地节点临时缓冲区中下次计算不需要的数据存储到磁盘上;步骤2B:生成MPI_IO操作的自定义数据类型,来读写磁盘上的非规则数据;步骤2C:根据步骤2B生成的数据类型,通过磁盘读取或者通信调度的方式,取得不在本地节点内存中的数据,并将其存储在本地节点的临时缓冲区中;步骤2D:修改数据中索引数组的下标,从原来的全局下标改为指向本地节点的数据缓冲区或本地临时缓冲区,将此修改存在转换表中,并生成把此转换表广播到各个节点中的代码;
循环迭代划分模块,用于根据输入的任务分配方式对循环进行迭代划分;
循环迭代重分布模块,用于根据循环迭代划分模块的循环迭代划分结果,对待处理的索引数组元素进行重分布;
通信I/O观测模块,用于对通信和I/O操作的进行观测,并生成预处理代码段;
计算通信I/O操作模块,根据通信I/O观测模块的通信和I/O操作观测结果,生成对应的计算和通信和I/O操作的代码段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京科技大学,未经北京科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810224147.3/1.html,转载请声明来源钻瓜专利网。
- 上一篇:开关装置
- 下一篇:植物箱和使用该植物箱的园艺方法