|
MulticoreBSP for C
Version 1.1
|
#include "mcbsp-internal.h"#include "mcutil.h"#include <stdio.h>#include <errno.h>#include <stdlib.h>#include <assert.h>#include <pthread.h>#include <stdbool.h>

Go to the source code of this file.
Data Structures | |
| struct | mcbsp_init_data |
| Initialisation struct. More... | |
| struct | mcbsp_thread_data |
| Thread-local data. More... | |
| struct | mcbsp_get_request |
| A DRMA communication request for `get'-requests. More... | |
| struct | mcbsp_message |
| A generic BSP communication message. More... | |
| struct | mcbsp_hpsend_request |
| A high-performance (non-buffering) BSMP message request. More... | |
| struct | mcbsp_push_request |
| Struct corresponding to a single push request. More... | |
Functions | |
| void | bsp_init_internal (struct mcbsp_init_data *const initialisationData) |
| Performs a BSP intialisation using the init struct supplied. | |
| struct mcbsp_init_data * | bsp_begin_check () |
| Checks if everything is all right to start an SPMD program. | |
| struct mcbsp_util_machine_info * | mcbsp_internal_getMachineInfo () |
| Gets the machine info currently active for this MulticoreBSP session. | |
| void | mcbsp_internal_check_keys_allocated () |
| Singleton thread-safe allocator for mcbsp_internal_init_data. | |
| void * | mcbsp_internal_spmd () |
| Entry-point of MulticoreBSP threads. | |
| void | mcbsp_internal_check_aborted () |
| Checks if a abort has been requested, and if so, exits the current thread. | |
| void | mcbsp_internal_sync (struct mcbsp_init_data *const init, const size_t bsp_id) |
| Alias for mcbsp_internal_syncWithCondition using the standard init.condition. | |
| void | mcbsp_internal_syncWithCondition (struct mcbsp_init_data *const init, volatile unsigned char *const condition, const size_t bsp_id) |
| Implements an actual synchronisation. | |
| struct mcbsp_thread_data * | mcbsp_internal_const_prefunction () |
| Common part executed by all BSP primitives when in SPMD part. | |
| struct mcbsp_thread_data * | mcbsp_internal_prefunction () |
| Common part executed by all BSP primitives when in SPMD part. | |
| int | main (int argc, char **argv) |
| Default SPMD function to call. | |
Variables | |
| pthread_key_t | mcbsp_internal_init_data |
| Per-MulticoreBSP program initialisation data. | |
| pthread_key_t | mcbsp_internal_thread_data |
| Per-thread data. | |
| bool | mcbsp_internal_keys_allocated |
| Whether mcbsp_internal_init_data is initialised. | |
| pthread_mutex_t | mcbsp_internal_key_mutex |
| Contorls thread-safe singleton access to mcbsp_internal_init_data, as required for its initialisation. | |
|
read |
Checks if everything is all right to start an SPMD program.
If there is an error, execution is stopped using mcbsp_util_fatal.
| void bsp_init_internal | ( | struct mcbsp_init_data *const | initialisationData | ) |
Performs a BSP intialisation using the init struct supplied.
The construction of this struct differs when called from C code, or when called from the C++ wrapper.
| int main | ( | int | argc, |
| char ** | argv | ||
| ) |
Default SPMD function to call.
| void mcbsp_internal_check_aborted | ( | ) |
Checks if a abort has been requested, and if so, exits the current thread.
| void mcbsp_internal_check_keys_allocated | ( | ) |
Singleton thread-safe allocator for mcbsp_internal_init_data.
|
read |
Common part executed by all BSP primitives when in SPMD part.
This version assumes local thread data used by BSP remains unchanged.
|
read |
Gets the machine info currently active for this MulticoreBSP session.
|
read |
Common part executed by all BSP primitives when in SPMD part.
This is the non-const version of mcbsp_internal_const_prefunction().
| void* mcbsp_internal_spmd | ( | ) |
Entry-point of MulticoreBSP threads.
Initialises internals and then executes the user-defined SPMD program.
| void mcbsp_internal_sync | ( | struct mcbsp_init_data *const | init, |
| const size_t | bsp_id | ||
| ) |
Alias for mcbsp_internal_syncWithCondition using the standard init.condition.
| init | Pointer to the BSP init corresponding to our current SPMD group. |
| bsp_id | The unique ID number corresponding to the thread that calls this sync function. |
| void mcbsp_internal_syncWithCondition | ( | struct mcbsp_init_data *const | init, |
| volatile unsigned char *const | condition, | ||
| const size_t | bsp_id | ||
| ) |
Implements an actual synchronisation.
This is used within bsp_sync, but also in bsp_begin to ensure all is initialised before getting into a real communication-enabled sync (necessary to support high-performant put, get, or send operations).
| init | Pointer to the BSP init corresponding to our current SPMD group. |
| condition | The condition to use with this particular sync. |
| bsp_id | The unique ID number corresponding to the thread that calls this sync function. |
| pthread_key_t mcbsp_internal_init_data |
Per-MulticoreBSP program initialisation data.
Per-thread machine info.
Necessary for nested MulticoreBSP SPMD calls.
| pthread_mutex_t mcbsp_internal_key_mutex |
Contorls thread-safe singleton access to mcbsp_internal_init_data, as required for its initialisation.
| bool mcbsp_internal_keys_allocated |
Whether mcbsp_internal_init_data is initialised.
| pthread_key_t mcbsp_internal_thread_data |
Per-thread data.
1.8.1.1