Friday, November 20, 2009

Static-Analysis: Parallel programs

Currently, static analysis for parallel programs doesn't exist neither as a commercial nor as a open-source product. Parallel programs communicate through nodes using Message Passing Interface (MPI) libraries and all MPI implementations are libraries including binary objects. As a consequence, when a compiler translates and optimizes a parallel application with calls to MPI, it will treat the MPI calls as a black box and avoid optimizing the calls and in some cases the code that surrounds them. As compiler cannot be constructed to communicate based on node-to-node communication, we need some static-analysis tools, which can analyze both warnings and defects at parallel programming level.

There are debuggers like - Marmot, ISP, Total View, DDT, etc., which analyses run-time errors like deadlocks, race-conditions, correct construction and destruction of resources, issue warnings in the case of non-portable constructs, MPI API usability correctness (i.e. verification of arguments such as tags, communicators, ranks, etc.) and many more but analyzing parallel programs source code statically, are totally absent.

The concepts and need of static analysis for parallel programming as a software tool, a product for computer scientists of HPC scientific-applications community will be shared soon as a part of information sharing.