Shams Imam, Interfacing Chapel with traditional HPC programming languages

Chapel is a high-level parallel programming language that implements a partitioned global address space model (PGAS). Programs written in this programming model are often self-contained entities written entirely in one language. While this approach enables the compiler to produce better performing code by doing whole program optimization, it also carries a risk of positioning PGAS languages as 'island' programming languages.

In this talk we present a tool that lets Chapel programs call functions and instantiate objects written in C, C++, Fortran 77--2008, Java and Python. Our tool creates language bindings that are binary-compatible to those generated by the Babel language interoperability tool.

The scientific community maintains a large amount of code (mathematical libraries, solvers and numerical models) written in legacy languages. With the help of our tool, users will gain access to their existing codebase with minimal effort and through a well-defined interface. Knowing the demands of the target audience, we support the full Babel array API. The language bindings are designed to provide a good combination of performance (e.g. glue code being inlined) and flexibility (such as transparent access to distributed arrays).