论文部分内容阅读
当前,从传统的高性能计算机到智能移动终端等计算平台,都广泛采用异构计算架构,该类架构通常由通用处理器和加速器组成,前者通常是以X86和ARM指令集为代表的多核处理器;后者一般是以GPGPU和向量计算单元为代表的协处理器。异构计算架构虽然可能带来更高的峰值性能和性能功耗比等优势,但是也要求用户必须针对特定异构平台来开发高性能并发程序,从而降低了程序员的生产效率及并行程序的平台可移植性。 加速器上的程序性能优化通常与软硬件特征密切相关,但由于不同加速器的体系结构特征各不相同或者支持不同的编程模型,从而不仅使得异构平台上的程序开发和性能优化非常复杂和困难,也会导致同一算法在不同平台间存在多个版本。另外,并发任务对共享资源的交叉无序访问和并发执行过程的不确定性,使得并发程序难以调试。针对上述难题,本文提出了一个异构平台上的统一编程框架,来解决异构平台程序开发过程中的多版本、性能优化、可移植性和程序调试问题。 本文的主要成果和创新性贡献如下: 设计了面向图像处理算法的领域编程语言扩展ParaC,首先,针对图像处理算法存在较多越界数据访问行为的领域特征,提出了支持通用边界处理规则的语言扩展;其次,对该领域的重要数据对象和计算模式进行抽象和总结后,提出了数据类型和算子操作符等语言扩展。ParaC既提高了异构平台上的生产效率,也为编译优化提供了高层语义,使得编译器能够生成较高性能的代码。 提出了一种面向GPGPU平台的分支缩减优化方法,图像处理算法中的越界数据访问等领域特征会引入控制流分支,导致warp的执行效率下降并会丢失部分访存优化机会,该方法通过缩小或者消除分支既消除了分支带来的性能开销又为访存优化提供了机会。在GPGPU平台上的实验结果表明,该编译优化方法在部分程序中获得了最高为2.19倍的加速比。 扩展了向量指令集的中间表示HVisAST,根据图像领域算法中对引用数据的使用特征和典型的计算模式,抽象出新的数据类型和操作符中间表示。HVisAST使得编译器能够利用高层语义实现面向底层硬件特征的编译优化和代码生成,帮助编译器生成较高性能的向量化并行代码。 设计实现了面向异构平台上的自适应图像处理统一编程框架,在该编程框架的实现过程中,通过上述方法解决了图像处理算法在异构平台上面临的越界数据访问描述、性能优化和跨平台可移植性等问题,使得该编程框架能够应用于更多的应用场景并获得了较高的性能。实验结果表明,在GPGPU平台上,该编程框架生成的程序相对于手工优化版本获得了1.08倍到18.7倍的加速比;在向量计算部件上,其生成的程序相对于串行版本获得了最高为7.7倍的加速比。