From Message Passing to PGAS
TimeSunday, November 11th2:39pm - 2:42pm
DescriptionThe continuous increase in the number of nodes across the whole system in supercomputers makes Remote-memory-access (RMA) a good alternative for improving applications' performance on these machines. However, in order for existing applications to benefit from it, they have to change their code to introduce the RMA functionalities. Doing so manually is error-prone.
In our research, we are working to develop a translator tool to generate UPC++ code that has RMA functionality. UPC++ is a C++11 library providing classes and functions that includes RMA communication operations.
In our first prototype, the translator uses annotations to guide transformation. First, it abstracts the message as a global pointer and enables ranks to distribute their local copies of their messages to other ranks. Then, it translates the MPI two-sided communication to corresponding UPC++ (RMA-rput) and a local synchronization. As a proof of concept, we applied this translator to stencil-method solver applications. The translator successfully generated a correct UPC++ code that achieves similar performance to the MPI version.
With stencil applications we do not expect better performance from corresponding MPI version. However, we were able to demonstrate that we can produce correct UPC++ implementation. Our next step is to apply the translator on applications that demonstrates irregular communication and/or fine-grained messaged. These are expected to show better performance with UPC++ under distributed memory architectures. The overall goal of this work is to help scientist in adapting their code to use PGAS effortlessly. Hence, they benefit from HPC resources and achieve better performance.