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 have traditionally been selfcontained 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 paper 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 with 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. A particular contribution of this paper is that we expose Chapel’s distributed data types through our interface and make them accessible to external functions implemented in traditional serial programming languages. We anticipate applying similar concepts to other PGAS languages in the future.

[1]  Steven G. Parker,et al.  The CCA component model for high-performance scientific computing , 2006 .

[2]  Scott R. Kohn,et al.  High-performance language interoperability for scientific computing through Babel , 2012, Int. J. High Perform. Comput. Appl..

[3]  Thomas Epperly,et al.  Babel Remote Method Invocation , 2007, 2007 IEEE International Parallel and Distributed Processing Symposium.

[4]  Katherine Yelick,et al.  Introduction to UPC and Language Specification , 2000 .

[5]  Daisuke Takahashi,et al.  The HPC Challenge (HPCC) benchmark suite , 2006, SC.

[6]  M. Slee,et al.  Thrift : Scalable Cross-Language Services Implementation , 2022 .

[7]  Robert W. Numrich,et al.  Co-arrays in the next Fortran Standard , 2005, FORF.

[8]  Allen D. Malony,et al.  Bridging the language gap in scientific computing: the Chasm approach , 2006, Concurr. Comput. Pract. Exp..

[9]  Massachusett Framingham,et al.  The Common Object Request Broker: Architecture and Specification Version 3 , 2003 .

[10]  Bradford L. Chamberlain,et al.  Parallel Programmability and the Chapel Language , 2007, Int. J. High Perform. Comput. Appl..

[11]  Roger Sessions COM and DCOM - Microsoft's vision for distributed objects , 1997 .

[12]  Vivek Sarkar,et al.  X10: an object-oriented approach to non-uniform cluster computing , 2005, OOPSLA '05.

[13]  Steven J. Deitz,et al.  User-defined distributions and layouts in chapel: philosophy and framework , 2010 .

[14]  B. Chamberlain,et al.  Authoring User-Defined Domain Maps in Chapel ∗ , 2011 .