A Unified Programming Model for Heterogeneous Computing with CPU and Accelerator Technologies

Yuqing Xiong
2024-05-30
Abstract:This paper consists of three parts. The first part provides a unified programming model for heterogeneous computing with CPU and accelerator (like GPU, FPGA, Google TPU, Atos QPU, and more) technologies. To some extent, this new programming model makes programming across CPUs and accelerators turn into usual programming tasks with common programming languages, and relieves complexity of programming across CPUs and accelerators. It can be achieved by extending file managements in common programming languages, such as C/C++, Fortran, Python, MPI, etc., to cover accelerators as I/O devices. In the second part, we show that all types of computer systems can be reduced to the simplest type of computer system, a single-core CPU computer system with I/O devices, by the unified programming model. Thereby, the unified programming model can truly build the programming of various computer systems on one API (i.e. file managements of common programming languages), and can make programming for various computer systems easier. In third part, we present a new approach to coupled applications computing (like multidisciplinary simulations) by the unified programming model. The unified programming model makes coupled applications computing more natural and easier since it only relies on its own power to couple multiple applications through MPI.
Distributed, Parallel, and Cluster Computing
What problem does this paper attempt to address?
This paper attempts to address the programming complexity in heterogeneous computing (including CPU and accelerator technologies such as GPU, FPGA, Google TPU, etc.). Specifically, the paper proposes a Unified Programming Model (UPM) that aims to simplify programming tasks across CPUs and various accelerators by extending the file management mechanisms in common programming languages (such as C/C++, Fortran, Python, MPI, etc.) to treat accelerators as input/output (I/O) devices. This model simplifies different types of computer systems into the form of a basic single-core CPU system plus I/O devices, thereby enabling programming tasks for various computer systems through a single API (i.e., common programming language file management), significantly reducing programming complexity. In addition, the paper proposes a new method based on UPM to handle coupled application computing (such as multidisciplinary simulation). This method makes coupled application computing more natural and simple because it relies solely on its own capability to couple multiple applications through MPI. In summary, this unified programming model helps improve software productivity and simplifies programming tasks across CPUs and accelerators in heterogeneous systems.