  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.
