Schooner Interconnection System

Creating scientific meta-computations


A scientific meta-computation is viewed logically as a collection of independently developed components. Each component has a code block and an interface. The code block realizes the component's contribution to the meta-computation's functionality and is implemented by the user; the interface realizes the data conversion and other functionality required to execute components in a distributed heterogeneous environment and is generated automatically by the system.

The Schooner interconnection system first creates the interface for each component. Then, the meta-computation is configured by placing the components on designated hosts, and providing the communication and heterogeneity support to tie the components together.



To implement the meta-computation model, Schooner provides four, mostly orthogonal services: The Universal Type System (UTS) provides two of Schooner's services: First, the UTS specification language is a machine- and language-independent type description language used to describe the interface for each component. Second, the UTS intermediate data representation and accompanying library provides a medium for exchanging data across machine architectures and handling data structure differences among languages.

A stub compiler reads the UTS specification file for a component, and produces one or more stub files that handle the automatic translation of arguments to/from the UTS data representation, and the interface to the Schooner runtime libraries. A stub compiler is provided for each supported language, currently these are C (schc), C++ (schc++), and Fortran (schf).

A component in Schooner encapsulates a particular programming model, uses a particular programming language, and is targeted for a particular type of machine. At runtime, a component is implemented by a process. Thus, the component is both the unit of heterogeneity and the unit of distribution in a meta-computation. Control flow is based on a sequential procedural programming model in which there is logically one thread of control that transfers between components using remote procedure calls (RPC). The Schooner runtime provides both static and dynamic configuration mechanisms. In static configuration, the meta-computation is fully specified at the start of execution. In dynamic configuration, the meta-computation can add and delete components on-the-fly, and can support multiple threads of control with the line abstraction.


The current version of Schooner supports:
back to Schooner Project home page