Containment Domains C++ API  0.1
Containment Domains C++ API v0.1
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Groups Pages
Classes | Enumerations
CD-Related Definitions

Classes

struct  cd::CDNameT
 A type to uniquely name a CD in the tree. More...
 

Enumerations

enum  cd::CDModeT { cd::kStrict =0, cd::kRelaxed }
 Type for specifying whether a CD is strict or relaxed. More...
 
enum  cd::CDExecutionModeT { cd::kExec =0, cd::kReexec }
 Type for specifying whether the current CD is executing for the first time or is currently reexecuting as part of recovery. More...
 
enum  cd::PreserveUseT { cd::kUnsure =0, cd::kReadOnly = 1, cd::kReadWrite = 2 }
 Type to indicate whether preserved data is from read-only or potentially read/write application data. More...
 

Detailed Description

The CD-Related Definitions module includes general CD-related type definitions that don't fall into other type definitions (Error Reporting and Preservation/Restoration Types and Methods).

Enumeration Type Documentation

Type for specifying whether the current CD is executing for the first time or is currently reexecuting as part of recovery.

During reexecution, data is restored instead of being preserved. Additionally, for relaxed CDs, some communication and synchronization may not repeated and instead preserved (logged) values are used. See http://lph.ece.utexas.edu/public/CDs for a detailed description. Note that this is not part of the cd_internal namespace because the application programmer may want to manipulate this when specifying specialized recovery routines.

Enumerator
kExec 

First execution.

kReexec 

Rexecution.

Type for specifying whether a CD is strict or relaxed.

This type is used to specify whether a CD is strict or relaxed. The full definition of the semantics of strict and relaxed CDs can be found in the semantics document under http://lph.ece.utexas.edu/public/CDs. In brief, concurrent tasks (threads, MPI ranks, ...) in two different strict CDs cannot communicate with one another and must first complete inner CDs so that communicating tasks are at the same CD context. Tasks in two different relaxed CDs may communicate (verified data only). Relaxed CDs typically incur additional runtime overhead compared to strict CDs.

Enumerator
kStrict 

A strict CD.

kRelaxed 

A relaxed CD.

Type to indicate whether preserved data is from read-only or potentially read/write application data.

See also
CDHandle::Preserve(), CDHandle::Complete()
Enumerator
kUnsure 

by the CD (treated as Read/Write for now, but may be optimized later)

Not sure whether data being preserved will be written

kReadOnly 

Data to be preserved is read-only within this CD.

kReadWrite 

Data to be preserved will be modified by this CD.