论文部分内容阅读
Open CL全称为Open Computing Language,即开放计算语言,在2008年由Apple公司首先提出,现由非盈利技术联盟Khronos Group管理的一种异构编程框架。其目的在于提出一种通用的并行性编程标准和框架,程序可在不同厂商所生产的各种设备上运行。使用Open CL的典型应用包括矩阵运算、图像处理、分子动力学等。如何使用Open CL最大化异构平台的计算能力一直是研究的热点问题。本文以AMD(Advanced Micro Devices)平台的Open CL优化为主线。首先总结了GPU的发展过程,重点分析了AMD平台GPU架构发展过程、特点及带来的改变;然后研究了AMD平台下Open CL优化过程中所需考虑到的内存优化、内核优化等方面的问题;最后对分子动力学软件LAMMPS(Large-scale Atomic/Molecular Massively Parallel Simulator)的整体架构、加速包中的邻接表算法和短程力计算算法进行了研究与改进。本文的主要工作有:(1)深入调研目前异构并行计算发展现状,选择AMD平台下的Open CL作为研究对象;(2)分析异构加速平台下的加速理论及Open CL框架特点,得出可能产生瓶颈和性能损失的两个主要部分为内存优化和内核优化;(3)结合AMD平台的架构特点,总结了Open CL针对内存优化、内核优化问题的解决方案。对内存优化中的主机端内存分配、全局内存访问、本地内存访问三个部分进行了深入的优化分析与总结;对内核部分,总结了11条编程中可以提升计算性能的编程原则;(4)分析LAMMPS中的Open CL加速包中的短程力计算部分代码,研究其实现机制,重点分析了LAMMPS中的短程力计算问题,具体分为邻接表的建立过程以及短程力计算两部分;(5)分析LAMMPS中的邻接表建立部分实现过程,实现了一种单GPU基数排序算法用于邻接表建立过程中的元胞列表建立子过程,并提出了双GPU基数排序的设计思想;(6)针对LAMMPS中Open CL加速包中代码,依照总结的规则,重点对短程力实现部分的内核程序进行了优化,测试并验证了所得结论的正确性。