WARNING This documentation is a work in progress and does not reflect the full FTI plugin potential.
The FTI plugin enables one to perform checkpoints using FTI. FTI plugin does not support the full FTI feature set but offers a simple declarative interface to access a large subset of it.
FTI plugin uses a MPI_Comm datatype and MPI_COMM_WORLD descriptor, which are defined in mpi plugin. For now it must be loaded alongside FTI plugin (as shown below).
FTI initialization in FTI plugin is based on several rules:
init_on is specified, FTI plugin will initialize FTI on that exact event and expects the communicator and file name to be correctly available or fail otherwise,init_on is not specified and the communicator is available on plugin initialization (e.g. when using MPI_COMM_WORLD predefine from mpi plugin), FTI plugin will try to initialize FTI (on plugin initialization) and expects file name to be correctly available or fail otherwise,init_on is not specified and the communicator is not available on plugin initialization, FTI plugin will try to initialize FTI on communicators descriptor exposure and expects file name to be correctly available or fail otherwise.FTI plugin loads a predefined descriptor named FTI_COMM_WORLD (FTI_COMM_WORLD_F for Fortran) after a successfull initialization of FTI. This descriptor is treated as metadata. Its content can be accessed using PDI_access.
At its root, the FTI configuration is made of several nodes: logging, checkpoint, communicator, config_file, dataset, init_on, recover_on, recover_var, send_file, snapshot_on and status.
A logging specifies logging properties: logging .
A checkpoint specifies a list of checkpoints to execute. It is specified by a key/value map that may contain following keys: L1_on, L2_on, L3_on, L4_on. Each of the keys specifies events names that trigger a specified checkpoint. Value of this key can be either string or a list of strings:
L1_on: executes FTI L1 checkpoint on specified PDI events,L2_on: executes FTI L2 checkpoint on specified PDI events,L3_on: executes FTI L3 checkpoint on specified PDI events,L4_on: executes FTI L4 checkpoint on specified PDI events.A communicator is a string, which specifies name of descriptor containing a MPI communicator to use for FTI initialization. Additionally, FTI plugin can write FTI_COMM_WORLD into this descriptor, if it is shared with write access right. It defaults to MPI_COMM_WORLD, which is a predefined descriptor from mpi plugin.
A config_file is a string that can contain $-expressions. Specifies the name of the FTI configuration file.
A dataset is a key/value map, which keys are integers that specify datasets ids in FTI and values are names of protected descriptors. Alternatively, the map may contain a map with keys name and size, where name is a name of protected descriptor and size is a descriptor where FTI plugin will write size of the protected descriptor when shared with write access right.
A init_on is a string or a list of strings that specifies the names of the PDI events that executes recovery of FTI.
A recover_on is a string or a list of strings that specifies the names of the PDI events that executes recovery of FTI.
A recover_var is a list of maps with keys:
on_eventvaron_event defines on which events the variable recovery should be done (single event or list of events)
var defines IDs of variables to recover (single ID or list of IDs)
A send_file is a key/value map or a list of key/value maps describing source and destination paths of files to send, event or list of events to trigger on and optionally name of descriptor, where will be stored status information when exposed. Example:
A snapshot_on is a string or a list of strings that specifies the names of the PDI events that executes FTI_Snapshot.
A status is a string that specifies the name of a descriptor to which FTI will write FTI_Status code when shared.