We use cookies to improve your experience with our site.
王锋, 杨灿群, 杜云飞, 陈娟, 易会战, 徐炜遐. 使用GPU加速的千万亿次超级计算机的Linpack程序优化[J]. 计算机科学技术学报, 2011, 26(5): 854-865. DOI: 10.1007/s11390-011-0184-1
引用本文: 王锋, 杨灿群, 杜云飞, 陈娟, 易会战, 徐炜遐. 使用GPU加速的千万亿次超级计算机的Linpack程序优化[J]. 计算机科学技术学报, 2011, 26(5): 854-865. DOI: 10.1007/s11390-011-0184-1
Feng Wang , Can-Qun Yang, Yun-Fei Du, Juan Chen, Hui-Zhan Yi, Wei-Xia Xu. Optimizing Linpack Benchmark on GPU-Accelerated Petascale Supercomputer[J]. Journal of Computer Science and Technology, 2011, 26(5): 854-865. DOI: 10.1007/s11390-011-0184-1
Citation: Feng Wang , Can-Qun Yang, Yun-Fei Du, Juan Chen, Hui-Zhan Yi, Wei-Xia Xu. Optimizing Linpack Benchmark on GPU-Accelerated Petascale Supercomputer[J]. Journal of Computer Science and Technology, 2011, 26(5): 854-865. DOI: 10.1007/s11390-011-0184-1

使用GPU加速的千万亿次超级计算机的Linpack程序优化

Optimizing Linpack Benchmark on GPU-Accelerated Petascale Supercomputer

  • 摘要: 1.本文的创新点
    本文描述了一种在CPU+GPU的异构系统中进行动态自适应任务划分方法,仅以微小的代价取得在CPU和GPU之间的任务负载平衡。
    本文描述了一种软件流水方法隐藏CPU和GPU间的数据传递。
    本文构建了在千万亿次超级计算机上开发并行程序的一种编程模型。
    本文实现了一个高度优化的Linpack程序,结合传统优化方法,在我国首台千万亿次超级计算机TianHe-1上实现了0.563 PFLOPS的实测性能,在当时(2009年11月)Top500排名第五,当年国内超级计算机Top100排名第一。 2.实现方法
    针对异构系统中不同处理器以及同一处理器内部不同处理器核的计算能力不同,从而造成计算任务的负载不平衡问题,我们根据GPU的特性,设计并实现了双层动态任务划分方法。CPU和GPU直接的任务划分根据计算量进行划分,划分比例安装实际计算能力进行分配。每次执行完毕后根据实际执行的数据调整分配比例,指导下次计算任务的划分。CPU内部各个核之间也进行划分,主要划分为负责通讯的核与负责计算的核,负责通讯的核在空闲时也进行计算。CPU核之间的任务划分也以实际计算能力为比例进行运行时调整。
    针对GPU与CPU之间的数据通讯为整个任务执行的瓶颈问题,我们设计并实现了一种软件流水的方法进行优化。将需要执行的任务分成子任务,将子任务中的数据先传递到GPU并启动计算,同时利用GPU执行的异步机制将下一个任务的数据并行传递,同时将GPU的输出也并行输出到CPU。所有的控制由CPU完成,GPU的状态采用轮询方法获取,其中任务的状态由状态图控制。
    我们在千万亿次计算机的并行编程模型方面进行了探索和实验,这种混合编程模型包含了流处理器线程、OpenMP线程、MPI进程多层次的并行结构。程序模型兼顾用户易编程性和程序执行效率,适应任务级并行、线程级并行和数据并行的需求。 3.结论及未来待解决的问题
    我们的编程模型和优化方法在千万亿次超级计算机TianHe-1上实现并取得良好效果,能够充分发挥GPU的加速能力,在单个计算单元上实现了Linpack实测值196.7 GFLOPS,是未优化前的3.3倍,达到理论峰值的70.1%. 单个机柜实现了8.02 TFLOPS的性能,以及全系统80个机柜563.1 TFLOPS的性能。验证了在使用GPU加速的千万亿次超级计算机上,我们的编程模型和优化方法具有良好的性能。 4.实用价值或应用前景目前以GPU为加速器的超级计算机越来越多,我们的编程模型和优化方法为这类系统的应用开发提供了很好的借鉴的作用,对于提高我国千万亿次计算机的应用开发效率和执行效率有积极意义。

     

    Abstract: In this paper we present the programming of the Linpack benchmark on TianHe-1 system, the first petascale supercomputer system of China, and the largest GPU-accelerated heterogeneous system ever attempted before. A hybrid programming model consisting of MPI, OpenMP and streaming computing is described to explore the task parallel, thread parallel and data parallel of the Linpack. We explain how we optimized the load distribution across the CPUs and GPUs using the two-level adaptive method and describe the implementation in details. To overcome the low-bandwidth between the CPU and GPU communication, we present a software pipelining technique to hide the communication overhead. Combined with other traditional optimizations, the Linpack we developed achieved 196:7 GFLOPS on a single compute element of TianHe-1. This result is 70:1% of the peak compute capability, 3:3 times faster than the result by using the vendor's library. On the full configuration of TianHe-1 our optimizations resulted in a Linpack performance of 0:563 PFLOPS, which made TianHe-1 the 5th fastest supercomputer on the Top500 list in November, 2009.

     

/

返回文章
返回