Modular programming in HPC applications

From HPCBugBase

Jump to: navigation, search

The concept of software modularity is endorsed by many software engineering methodologies. In the development of a large application, it is considered a good practice to divide the program into "modules" and define how they should interact with each other.

For some classes of defects in the HPC domain, modular programming is a powerful means of prevention. Here are some examples.

  • To avoid defects with the Use of Language Features, the use of parallel constructs such as communication function calls should be confined to a particular module. Since all occurrences of defects associated with the erroneous use of parallel language features are limited to one module, debugging is easy.
  • To avoid defects with Space Decomposition, one good approach is to put all the logic for convertion between a global index and a local index into one module. Other modules should always call this module rather than trying to figure out the correct index conversions by themselves.

[edit] Software modularity and teamwork

[edit] Modularity support in Fortran 90

Fortran (or FORTRAN) has been the most widely used language in scientific programming for a long time. Recent versions of Fortran provide various constructs for modular programming.


[edit] Examples of modular programming in HPC applications

Personal tools