Parallel and distributed implementation of large industrial applications
Parallelization of high performance computing applications has been a field of active research for quite some time now. Most projects that have parallelized industrial software packages have focused on the specific application and did not attempt to document and generalize their lessons learned. We report on results of a project that has parallelized a state of the art industrial computational fluid dynamics (CFD) packages and that explicitly aimed at establishing software engineering guidelines for future similar projects. Thanks to the consequent application of the software engineering guidelines defined for the project, the parallel CFD code has proven excellent efficiency and scalability on a large number of parallel hardware platforms. The project also addressed software engineering issues such as object orientation and resource management. The CFD package has been redesigned as an object oriented program and implemented in C++ and Java. The object oriented CFD program has shown reasonable efficiency in preliminary benchmark tests. We expect that further optimizations to the OO code and advances in compiler technology will make the performance gap (relative to the fortran version) almost disappear in the near future. A resource manager has been developed that allows production runs of parallel scientific computing software to execute in batch mode on networks of workstations by dynamically allocating resources to parallel batch jobs that currently are not claimed by interactive users. The resource manager has been successfully tested with the parallel CFD code as workload.
cfd software engineering resource management object oriented programming scientific computing parallel processing