We introduce process-oriented programming as a natural extension of object-oriented programming for parallel computing. It is based on the observation that every class of an object-oriented language can be instantiated as a process, accessible via a remote pointer. The introduction of process pointers requires no syntax extension, identifies processes with programming objects, and enables processes to exchange information simply by executing remote methods. Process-oriented programming is a high-level language alternative to multithreading, MPI and many other languages, environments and tools currently used for parallel computations. It implements natural object-based parallelism using only minimal syntax extension of existing languages, such as C++ and Python, and has therefore the potential to lead to widespread adoption of parallel programming. We implemented a prototype system for running processes using C++ with MPI and used it to compute a large three-dimensional Fourier transform on a computer cluster built of commodity hardware components. Three-dimensional Fourier transform is a prototype of a data-intensive application with a complex data-access pattern. The process-oriented code is only a few hundred lines long, and attains very high data throughput by achieving massive parallelism and maximizing hardware utilization.
翻译:我们引入了以程序为导向的编程,作为平行计算的目标导向编程的自然延伸,其依据是观察每个目标导向语言的类别都可作为一个过程即刻即用,可通过远程指示进入。引入进程指针不需要超时法扩展,确定程序目标,使程序能够仅通过实施远程方法来交流信息。进程导向编程是一种高层次的语言,可替代多读、MPI和目前用于平行计算的其他许多语言、环境和工具。它只使用C++和Python等现有语言的最小同步扩展来实施自然的基于目标的平行。因此,它具有导致广泛采用平行编程的潜力。我们实施了使用 C++ 和MPI 运行进程的原型系统,并用它来计算由商品硬件组件组成的计算机集群上的大型三维四元变。三维四元变换是一种数据密集应用的原型,具有复杂的数据获取模式。以过程为导向的代码只有几百条线长,并且通过实现大规模平行和最大化硬件的利用而获得非常高的数据。