Abstract
Many scientific applications are logically decomposed into modules,
each module performing a different type of computation. These
modules are then linked together inside the same executable. While
these modules are logically independent, they are not physically
independent: a faulty module can corrupt the state of another one.
By identifying the different modules inside an application, tagging
the memory according to the different modules, and performing extra
runtime checks, we can automatically detect certain type of errors.
We implemented our idea inside the Charm++ runtime system, where
modules can be easily identified. We illustrate the validity of our
approach, and evaluate its overhead.