MulticoreBSP for C  Version 2.0.4
Data Fields
mcbsp_init_data Struct Reference

Initialisation struct. More...

#include <mcbsp.h>

Collaboration diagram for mcbsp_init_data:
Collaboration graph
[legend]

Data Fields

size_t P
 Number of processors involved in this run. More...
 
size_t sync_entry_counter
 Barrier counter for this BSP execution. More...
 
size_t sync_exit_counter
 Barrier counter for this BSP program. More...
 
size_t tagSize
 Currently active tag size. More...
 
size_t top_pid
 ID of the top-level run, if available. More...
 
size_t cp_f
 Currently active checkpointing frequency. More...
 
size_t safe_cp_f
 Currently active safe checkpointing frequency. More...
 
size_t skipped_checkpoints
 Current number of skipped checkpoints. More...
 
size_t current_superstep
 Current superstep of the SPMD program. More...
 
pthread_t * threads
 Threads corresponding to this BSP program. More...
 
struct mcbsp_thread_data ** threadData
 Pointers to all thread-local data, as needed for communication. More...
 
unsigned char * sl_condition
 Condition used for critical sections. More...
 
unsigned char * sl_mid_condition
 Condition used for critical sections. More...
 
unsigned char * sl_end_condition
 Condition used for critical section. More...
 
struct mcbsp_thread_dataprev_data
 Stores any previous thread-local data. More...
 
void(* spmd )(void)
 User-definied SPMD entry-point. More...
 
void * bsp_program
 In case of a call from the C++ wrapper, pointer to the user-defined BSP_program. More...
 
char ** argv
 Passed argv from bsp_init. More...
 
struct mcbsp_util_address_table global2local
 Address table used for inter-thread communication. More...
 
pthread_mutex_t mutex
 Mutex used for critical sections (such as synchronisation). More...
 
pthread_cond_t condition
 Condition used for critical sections. More...
 
pthread_cond_t mid_condition
 Condition used for critical sections. More...
 
pthread_cond_t end_condition
 Condition used for critical sections. More...
 
int argc
 Passed argc from bsp_init. More...
 
volatile bool abort
 Whether the BSP program should be aborted. More...
 
bool ended
 Whether the BSP program has ended. More...
 
bool no_cp
 Whether checkpointing has been explicitly disallowed. More...
 
bool safe_cp
 Whether hardware failures were detected, or were detected to be imminent. More...
 

Detailed Description

Initialisation struct.

Contains information necessary to start an SPMD section, and contains fields necessary for global actions during the corresponding SPMD section.

Can be stored at two locations: 1: at the initialising thread of an SPMD section, when the SPMD section has not yet been started; 2: as a pointer through thread-local data once the SPMD section has started.

The field ordering of the struct are that alignable fields are placed first (pointers, size_ts), followed by arbitrary structs / typedef (unpredictable size), and finally smaller-sized fields (ints, bools). Within levels, the ordering is semantic (arbitrary).

Field Documentation

volatile bool mcbsp_init_data::abort

Whether the BSP program should be aborted.

int mcbsp_init_data::argc

Passed argc from bsp_init.

char** mcbsp_init_data::argv

Passed argv from bsp_init.

void* mcbsp_init_data::bsp_program

In case of a call from the C++ wrapper, pointer to the user-defined BSP_program.

pthread_cond_t mcbsp_init_data::condition

Condition used for critical sections.

This is the default POSIX threads synchronisation mechanism, which may not be used in case compilitaion opted for alternative mechanisms (e.g., spinlocking via MCBSP_USE_SPINLOCK). This field is always included for binary compatibility, however!

size_t mcbsp_init_data::cp_f

Currently active checkpointing frequency.

size_t mcbsp_init_data::current_superstep

Current superstep of the SPMD program.

pthread_cond_t mcbsp_init_data::end_condition

Condition used for critical sections.

See also condition and mid_condition.

bool mcbsp_init_data::ended

Whether the BSP program has ended.

struct mcbsp_util_address_table mcbsp_init_data::global2local

Address table used for inter-thread communication.

pthread_cond_t mcbsp_init_data::mid_condition

Condition used for critical sections.

This is the default POSIX threads synchronisation mechanism, which may not be used in case compilitaion opted for alternative mechanisms (e.g., spinlocking via MCBSP_USE_SPINLOCK). This field is always included for binary compatibility, however!

pthread_mutex_t mcbsp_init_data::mutex

Mutex used for critical sections (such as synchronisation).

bool mcbsp_init_data::no_cp

Whether checkpointing has been explicitly disallowed.

size_t mcbsp_init_data::P

Number of processors involved in this run.

struct mcbsp_thread_data* mcbsp_init_data::prev_data

Stores any previous thread-local data.

Used for nested runs.

bool mcbsp_init_data::safe_cp

Whether hardware failures were detected, or were detected to be imminent.

size_t mcbsp_init_data::safe_cp_f

Currently active safe checkpointing frequency.

size_t mcbsp_init_data::skipped_checkpoints

Current number of skipped checkpoints.

I.e., when doing automatic checkpointing, we checkpoint whenever skipped_checkpoints == cp_f in normal automatic checkpointing mode (if cp_f > 0, and no checkpointing otherwise), or whenever skipped_checkpoints == safe_cp_f when in safe checkpointing mode (i.e., in the case of imminent hardware failures).

unsigned char* mcbsp_init_data::sl_condition

Condition used for critical sections.

Only used if compiled with MCBSP_USE_SPINLOCK, but always included for binary compatibility!

unsigned char* mcbsp_init_data::sl_end_condition

Condition used for critical section.

See also sl_condition and sl_mid_condition.

unsigned char* mcbsp_init_data::sl_mid_condition

Condition used for critical sections.

Only used if compiled with MCBSP_USE_SPINLOCK, but always included for binary compatibility!

void(* mcbsp_init_data::spmd)(void)

User-definied SPMD entry-point.

size_t mcbsp_init_data::sync_entry_counter

Barrier counter for this BSP execution.

Synchronises synchronisation entry.

size_t mcbsp_init_data::sync_exit_counter

Barrier counter for this BSP program.

Synchronises synchronisation exit.

size_t mcbsp_init_data::tagSize

Currently active tag size.

struct mcbsp_thread_data* * mcbsp_init_data::threadData

Pointers to all thread-local data, as needed for communication.

pthread_t* mcbsp_init_data::threads

Threads corresponding to this BSP program.

size_t mcbsp_init_data::top_pid

ID of the top-level run, if available.

This value is SIZE_MAX if this is the top-level run. This value is kept separate from prev_data as the top-level run need not be a MulticoreBSP for C run (we may have been offloaded or called recursively from a distributed-memory SPMD setting, both of which may not even have anything to do with BSP).


The documentation for this struct was generated from the following file: