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 runtime coordination or message-logging).
The CPPC framework consists of a runtime library and a source-to-source compiler. The CPPC library contains routines for variable level checkpointing, using portable code and protocols. The CPPC compiler helps to achieve transparent integration by relieving the user from time-consuming tasks, such as data flow and communications analyses and adding instrumentation code. Compilation directives are also provided to fine-tune checkpointing instrumentation. After processing by the compiler, a fault-tolerant version of the application is obtained, which is then linked against the CPPC runtime library.
CPPC is intended for use with SPMD codes. Current supported languages are C and Fortran 77, and both sequential and MPI applications are recognized. For more information, related publications and download, visit the CPPC webpage.
