论文部分内容阅读
OpenMP是面向SMP体系结构的并行编程标准,MPI是面向MPP体系结构的并行编程标准.随着主流超级计算机系统由SMP向MPP过渡,OpenMP必然向MPI过渡.但是它们之间差异很大,手工转化十分困难.通过对这两种编程规范和编译技术的研究,该文提出了将OpenMP转化为MPI的基本方法,该方法支持OpenMP1.2.数据划分是优化针对MPP系统的MPI程序的重点和难点.该文所提出的数据划分方法要求数据空间和计算空间具有一定程度的一致性.该条件是从实际科学计算模式中总结出来的,能很好适用于常见科学计算程序.该文提出应该以while循环为基本单位寻求一致数据划分,尽量减while循环内的数据通讯.该文寻找一致数据划分的基本思路是首先寻找单个循环中所有可能的数据划分方法,然后在此基础上求得循环间一致数据划分.在求得数据划分之后反过来确定计算划分.然而即使找到了一致数据划分,还是有可能出现"数据对不齐"的现象,此时可能需要边通讯.为了尽量减少不必要的数据通讯,该文仔细分析了出现上述情况的原因,总结并提出了数据划分的几种约束,并根据约束关系的强弱来对齐数据.由于考虑了约束关系,该算法能找到较优解,且开销不大.最后该文提出了产生通讯代码的算法.