论文部分内容阅读
高性能计算是当前科学研究的重要手段之一。受到功耗的限制,计算机已经不能通过单纯的提高频率来获得性能的提升。多核成为计算机发展的重要方向,随之而来的复杂体系结构和编程环境,对科学计算应用带来新的挑战: 开发效率的低下。由于平台的复杂化,开发人员在开发过程中不仅要考虑应用本身的逻辑,还要根据硬件平台特点,选择相应的编程模型、调整优化算法。 运行效率很低。高度并发的计算核心很难在运行过程中协同工作并发挥最大效率,未做充分优化的应用在这类系统上往往运行效率很低,大量的硬件资源被浪费。 移植性很差。由于平台之间体系结构差异巨大,其编程模型和优化算法也随之发生改变。应用在不同平台之间迁移不仅要考虑编程模型/语言的改变,还要承受因为优化方案与平台体系结构特征不匹配带来的性能损失。 本文针对上述挑战进行研究,主要的创新点主要有: 提出了一种面向通用领域的自动调优框架。目前自动调优领域的工作缺乏一个基础性的框架,能够帮助自动调优技术开发者快速开发领域专用的自动调优器。我们提出并实现了一个面向通用领域的自动调优框架,该框架根据自动调优的基本步骤抽象了一套基础架构用于快速构建自动调优器。同时,框架还包含了一个统一、可扩展、可自定义的知识数据库用来管理自动调优过程中产生的知识数据。 提出了一种面向模板算法的领域专用语言。在高性能计算机系统上开发模板算法类应用,用户不仅需要关注应用的本身逻辑,还要考虑性能优化与体系结构之间的关系,这大大降低了开发效率和应用的可移植性。为此,我们针对模板算法领域的抽象特征,设计并实现了一门模板算法的领域专用语言—HPS。此外,我们基于ROSE编译器框架实现了支持HPS的领域专用编译器,同时支持C++/Fortran风格的HPS领域源代码。该编译器根据目标平台类型,把领域源代码映射到CPU和GPU平台,并支持包括分块、循环展开、向量化、多线程、CUDA分块等一系列优化技术。 提出了一种最优解空间调优算法。模板算法优化策略很多,其优化空间很大,常规的调优算法应用到模板算法领域需要大量的时间开销,阻碍了其应用。我们提出了一个基于最优解空间的自动调优算法,该算法通过预测待优化模板算法的最优解空间,从而使用较小的开销达到优化目标。在调优结果和贪心算法相当的情况下,最优解空间调优算法的速度比贪心算法快10-2697倍,时间开销平均降低了2个数量级。 提出了一种计算局部性模型。模板算法中的大量优化算法都是用于访存优化,它们都是基于(访存)局部性理论发展而来的。相对于访存优化,计算优化缺乏一个模型用于指导。我们提出了一种计算局部性模型,用于量化模板算法中的计算和分析计算在模板算法应用运行过程中的两个局部性现象—计算的空间局部性和计算的时间局部性。此外,我们还提出并实现了针对模板算法中计算空间局部性的冗余计算消除算法(Redunant Computation Elimination,RCE)。