Abstract In this paper we evaluate the performance of Unified Parallel C (which implements the partitioned global address space programming model) using a numerical method that is widely used in fluid dynamics. In order to evaluate the incremental approach to parallelization (which is possible with UPC) and its performance characteristics, we implement different levels of optimization of the UPC code and compare it with an MPI parallelization on four different clusters of the Austrian HPC infrastructure (LEO3, LEO3E, VSC2, VSC3) and on an Intel Xeon Phi. We find that UPC is significantly easier to develop in compared to MPI and that the performance achieved is comparable to MPI in most situations. The obtained results show worse performance (on VSC2), competitive performance (on LEO3, LEO3E and VSC3), and superior performance (on the Intel Xeon Phi) compared with MPI.
Let us also mention @cite_12 , where the old legacy high latency code FEniCS (which implements a finite element approach on an unstructured grid) is improved by using a hybrid MPI PGAS programming model. Since the algorithm used in the FEniCS code is formulated as a linear algebra program, the above mentioned paper substitutes the linear algbra backend PETSc with their own UPC based library. In contrast, in our work we employ a direct implementation of a specific numerical algorithm (as it is well known that a significant performance penalty is paid, if this algorithm on a structured grid is implemented using a generic linear algebra backend) and focus on UPC as a tool to simplify parallel programming (while @cite_12 uses UPC in order to selectively replace two-sided communication with one-sided communication to make a legacy application ready for exascale computing).
@cite_12
1482281836
We present our work on developing a hybrid parallel programming model for a general finite element solver. The main focus of our work is to demonstrate that legacy codes with high latency, two-side ...