论文部分内容阅读
随着并行处理技术的发展,并行软件开发日益成为一个至关重要的问题。作为软件开发的重要部分,并行编译具有不可替代的作用。并行编译包含许多复杂的技术。循环/数据分割作为其中关键的一环,对分布式存储机器上的应用程序性能具有重大影响。循环/数据的自动分割需要考虑并行性的开发、负载平衡、通讯同步开销等诸多问题。虽然目前已经在这方面做了很多工作,但许多问题还没有得到圆满解决。本文对分布式内存的SIMD机器上的数据传输、处理机间通讯和负载平衡等方面进行了研究,并用以指导该系统上的循环/数据的自动分割,取得有价值的成果。作者将其中的技术成果应用于一个SIMD机器上的自动并行的C编译器的设计和实现中,取得比较好的效果。 本文的主要贡献包括以下几方面: (1) 研究了一个带有分布式内存和全局内存的SIMD机器—VE16的系统模型,分析该系统模型所提供的支持数据在全局内存和分布式内存之间传输的数据传输函数和处理机间通讯例程,为该系统上的循环/数据分割研究提供良好的基础。 (2) 提出一个简单有效的数据传输模型,计算循环中数据足迹在全局内存和分布式内存之间的传输次数,以指导VE16机器上的循环自动分割策略。 (3) 给出一个基于VE16机器的优化数据传输的循环自动分割算法,它通过挑选循环分块的大小,使得所需要的数据传输次数最小,并且数据传输和计算的同步开销比较小,从而提高应用程序的性能。 (4) 提出一个简单有效的通讯开销评估模型,它通过识别规则模式通讯和分解复杂通讯等手段,分析出给定循环分布和数据分布条件下所需要的通讯开销,为确定优化的循环分布和数据分布提供指导方法。 (5) 建立包含对准信息和相应通讯开销的数据迭代图。该数据迭代图不仅反映了程序中多个非紧嵌的循环嵌套及其存取的数组至处理单元的映射关系,而且反映两种映射关系之间的相互作用。 (6) 在数据迭代图基础上提出一个启发式算法计算较优的数据分布和迭代分布,以优化处理单元之间的通讯开销。该算法通过分析多个循环嵌套所涉及的多个数组映射和迭代映射之间复杂的相互制约关系,从全局的角度求得一个较优的数据迭代分布方案。 (7) 在面向VE16机器的自动并行编译器—VCC的设计和实现中采用以上研究成果。实验结果表明在减少数据传输开销和通讯开销上有着显著的成效。