As an important goal of high-performance computing, the concept of performance portability has been around for many years. As the failure of Moore's Law, it is no longer feasible to improve computer performance by simply increasing the number of existing hardware. The innovation of high performance computer is imperative, which makes high-performance computers with multiple architectures coexist in the production environment. For example, current high-performance computing nodes often use co-accelerators such like general-purpose GPUs and Intel Xeon Phis to accelerate general-purpose processors. With the flourishing of deep learning, dedicated neural network acceleration chips are also arising. The emergence of co-accelerators with different architectures and their wide application in high-performance computers have challenged the performance portability of programs between high-performance computers with different architectures. This article summarizes the current performance portability technology from the programming model, serial code automatic parallelization, parallel code automatic conversion, etc. at the end of the article, it also summarizes how to use scientific computing function libraries to improve performance and performance portability of a program. Different application scenarios need different implementation technologies to get performance portability. Program developers choose performance portability solutions for their programs. In fact, they balance programming efficiency and optimization effects under various constraints.
翻译:作为高性能计算的重要目标,性能可移植性的概念已存在多年。随着摩尔定律的失效,单纯通过增加现有硬件数量来提升计算机性能已不再可行。高性能计算机的创新势在必行,这使得多种架构的高性能计算机在生产环境中并存。例如,当前的高性能计算节点常采用通用GPU和Intel Xeon Phi等协加速器来加速通用处理器。随着深度学习的蓬勃发展,专用神经网络加速芯片也相继涌现。不同架构协加速器的出现及其在高性能计算机中的广泛应用,对程序在不同架构高性能计算机之间的性能可移植性构成了挑战。本文从编程模型、串行代码自动并行化、并行代码自动转换等方面总结了当前性能可移植性技术,并在文末总结了如何利用科学计算函数库提升程序性能及性能可移植性。不同应用场景需要不同的实现技术来获得性能可移植性。程序开发者需为其程序选择性能可移植性方案,实际上,这是在各种约束条件下对编程效率与优化效果之间的权衡。