A workable approach for modernizing existing software into parallel/distributed applications is through coarse-grain restructuring. If, for instance, entire subroutines of legacy code can be plugged into a new structure, the investment required for the re-discovery of the details of what they do can be spared. The resulting renovated software can then take advantage of the improved performance offered by modern parallel/distributed computing environments, without rethinking or rewriting the bulk of their existing code. Our approach is simple and is in fact a cut-and-paste method. First, we try to identify and isolate components in the legacy source code (the cut). Second, we glue them together by writing coordinator modules (glue modules) with the help of a coordination language (the paste). We have used Manifold as the glue language. Manifold is a general purpose coordination language developed at CWI (Centrum voor Wiskunde en Informatica) in the Netherlands and is specially designed to express cooperation protocols among components in component based systems. Our point of departure is an existing sequential C code for computational fluid dynamics (CFD). This C source code deals with a time-dependent advection-diffusion problem solved with a sparse-grid technique. Applying our cut-and-paste method to this program results in a generally applicable coordinator module that can restructure our sequential programs into a parallel application (i.e. it can run on a shared memory machine) as well as a distributed application (i.e. it can run on a cluster of workstations). We also give some performance results.

, , , ,
, ,
CWI
Software Engineering [SEN]
Computer Security

Everaars, K., Arbab, F., & Koren, B. (2003). Parallel, distributed-memory implementation of a sparse-grid method for time-dependent advection-diffusion problems. Software Engineering [SEN]. CWI.