Abstract
Components can be a useful tool in software development, including the development of scientific computing applications. Many scientific applications require parallel execution, but commodity component models based on remote method invocation do not directly support the notion of parallel components. Parallel components raise questions about the semantics of method invocations and the mechanics of parallel data redistribution involving these components. Allowing parallel components to exist within a component framework comes at very little extra cost to the framework designer. However, the interaction semantics (i.e. method invocations) between two parallel components or between a parallel and non-parallel component can be complex and should require support from the underlying run-time system. The parallel data redistribution problem comes about when in order to increase efficiency, data are subdivided among cooperating parallel tasks within one component. When two or more components of this type are required to perform a separate computation on the same data, this data distribution must be decoded and mapped from the first component to the second component's specification. We demonstrate a method to handle parallel method invocation and perform automatic data redistribution using the code generation process of an interface definition language compiler. The generated code and run-time system accomplish the necessary data transfers and provide consistent behavior to method invocation. We describe the implementation of and semantics of parallel remote method invocation. We describe how collective method calls can be used to provide coherent interactions between multiple components. Several results and benchmarks are discussed.
Get full access to this article
View all access options for this article.
