1 On the Software Engineering of Multi-Platform Parallel / Distributed Software Shahani Markus, Ann C. Catlin, Sanjiva Weerawarana and Elias N. Houstis {markus,acc,saw,enh}@cs.purdue.edu Department of Computer Sciences Purdue University West Lafayette, IN 47907, USA. 1.0 Introduction Parallel and distributed computation is now an essential ingredient of high performance scientific comput- ing. While parallel computers are still somewhat expensive, the widespread availability of distributed com- putation packages, has mushroomed the use of workstation networks as virtual parallel computers. A common feature of a modern computing environment is that one generally has access to not just one such (virtual) parallel machine, but to several. To take maximum advantage of this situation, one must be able to conveniently use any or all of these parallel machines to solve the problems at hand. However, the develop- ment and maintenance of software for such a heterogeneous environment is by no means an easy task and we have found that there is little readily available information on how one should organize software to best deal with this situation. This paper describes our experience in developing and maintaining multi-platform parallel / distributed scientific computing software. We gained this experience while developing the parallel computation envi- ronment for //ELLPACK 1 [1], a problem solving environment [14] for solving partial differential equa- tions (PDEs). //ELLPACK includes a complete graphical user interface for Unix platforms running the X Window System and contains tools for specifying PDE problems, specifying the solution algorithm, solv- ing the problem (in parallel) and finally for analyzing the computed solutions. In this paper, we consider how we organize and manage the multi-platform parallel / distributed software as well as how we provide a convenient user-level execution mechanism. The rest of this document is organized as follows: We first describe //ELLPACK in more detail in order to explicate the software issues that we are addressing. Then, Section 3 describes our computing environment so as to help the reader better understand the solutions we have developed. Section 4 describes the organi- zation of the source and object code to allow simultaneous development and maintenance on multiple plat- forms. Section 5 describes the execution environment and finally Section 6 briefly comments on our experience with this environment. 2.0 //ELLPACK The //ELLPACK is a problem solving environment for solving PDE problems. PDE problems and their solution strategy is defined to //ELLPACK using a high-level PDE specification language. A graphical 1. “//ELLPACK” is read “Parallel ELLPACK.”