Grid Computing Research Laboratory

State University of New York (SUNY) Binghamton
Department of Computer Science

Michael J. Lewis (mlewis@binghamton.edu)
Co-Director, Assistant Professor of Computer Science
Madhusudhan Govindaraju (mgovinda@.cs.binghamton.edu)
Co-Director, Assistant Professor of Computer Science

[Home] [Background] [For Visitors] [Projects] [People] [Papers] [Talks] [Resources] [Funding] [Internal]

Toward a Legion-Targetting CCA SIDL Compiler

Debapriya Dutta

The Common Component Architecture (CCA) is a project that aims to enable component-based high-performance scientific application development. The goal is to promote the development of re-usable components specifically designed for high performance computting. The CCA approach replaces the model in which application developers must identify and solve all the problems, and implement all the details, for each scientific application they develop. CCA is a lightweight architecture that defines how CCA-compliant compo- nents, written in potentially different programming languages, can interact with one another through ports. Users will specify the interface of their components via the Scientific Interface Definition Language (SIDL), and run these specifications through an SIDL compiler (e.g. Babel) which generates code in a selected programming language (C, C++, Fortran 77, Python, etc.). This output code includes the "glue" necessary for inter-component discovery, communication, and interaction through a CCA framework. Here at SUNY-Binghamton, we are beginning a project to contribute to this effort by providing a Legion based CCA framework. The first step in supporting CCA components in Legion is to allow component developers to specify their components in SIDL and to generate the glue that allows them to exist within our proposed Legion-CCA framework. This is the approach used by CORBA IDL compilers, the CCA Babel language interoperability tool, and the XCAT project, which generates code that targets the HPC++ runtime system. The approach is also used in Legion as one of several mechanisms for building Legion objects. Programmers can specify their object's interface in a file, and run it through the legion_generate_stubs tool to produce stub code. Implementations are then added in appropriate locations within the generated source code, and compiled into an executable that can run within Legion. Essentially, the stub generator produces code that allows Legion objects to communicate through the Legion object "framework" (although we don't call it that for Legion). In this project, we will build an SIDL to Legion compiler, making use of the existing Babel front-end, adapting the legion_generate_stubs back-end, and hooking them together so that the resulting compiler will produce Legion code from SIDL component specifications. The back-end will have to add some aspects necessary for CCA compliance. For example, the generated code will include the getPort() and setPort() functions, and a set- Services() port, among other things. Further, the compiler will have to address the problem that the notion of uses ports does not presently exist in Legion. CCA ports as specified in the SIDL file will map directly to Legion function interfaces, and port-based communication will be implemented by remote method invocation between Legion objects. This effort is intended to be an initial "proof-of-concept" effort for supporting CCA over Legion.


Page maintained by Mike Lewis: mlewis@binghamton.edu