CPPC (ComPiler for Portable Checkpointing) is a checkpointing tool focused on the insertion of fault tolerance into long-running message-passing applications. It is designed to allow for execution restart on different architectures and/or operating systems, also supporting checkpointing over heterogeneous systems, such as the Grid. It uses portable code and protocols, and generates portable checkpoint files while avoiding traditional solutions which add an unscalable overhead (such as process coordination or message-logging).
CPPC is made up of a library and a compiler. The library contains routines for variable-level checkpointing. The compiler translates a parallel code annotated with user directives into fault tolerant code with CPPC library calls. It also includes compile-time analysis to automatize the insertion of these directives.