On Interoperation among User-driven and System-driven Parallel Languages
Adams, Mark F.
charm++, mpi, interoperation, parallel, languages
Modern parallel codes are often written as a collection of several diverse modules. Different programming languages might be the best or natural fit for each of these modules or for different libraries that are used together in an application. For such applications, the restriction of implementing the entire application in a single parallel language may impact the application’s performance and programmer’s productivity negatively.
This paper studies interoperation among parallel languages that differ with respect to the driver of program execution. We describe the challenges in enabling interoperation among user-driven and system-driven languages, and present techniques for managing important attributes of a program, such as the control flow, resource sharing, and data sharing, in an interoperable environment. We also present a generalized framework that en- ables interoperation between two production languages, MPI and Charm++. Finally, we study the application of the presented techniques and demonstrate the benefits of interoperation through several case studies using production codes including CHARM, EpiSimdemics, NAMD, FFTW, MPI-IO and ParMETIS, executed on IBM Blue Gene/Q and Cray XE6.