Multi-ApplicationOnlineProfiling
2.1
|
This module contains the Instrumentation part of MALP. More...
Modules | |
Sync Time | |
This module is in charge of synchronizing time between MPI processes. | |
Data Structures | |
struct | Event_Packer |
This is the struct used to send events throuh a stream. More... | |
struct | Stream_Manager |
Struct defining a stream manager. More... | |
struct | Stream_Infos |
Structure describing a stream. More... | |
Macros | |
#define | MAX_PENDING_EVENT 4096 |
Defines the maximum pending events. More... | |
Functions | |
static struct Event_Packer * | Event_Packer () |
Getter on the current event packer. More... | |
void | Event_Packer_init () |
Initializes the event packer, maps current process to existing Analyser or IO_WRITE partition and initializes the streams. More... | |
void | Event_Packer_release () |
Releases the event packer. More... | |
void | Event_Packer_push (struct MALP_Trace_Event *event) |
Sends an event. More... | |
void | Event_Packer_flush () |
Processes the send of all events present in the internal FIFO. More... | |
static struct Stream_Manager * | Stream_Manager () |
A getter for the stream manager. More... | |
void | Stream_Manager_init () |
Initialises the manager for current MPI process. More... | |
void | Stream_Manager_release () |
Releases the manager for current MPI process (including all streams ) More... | |
struct Stream_Infos * | Stream_MGR_new_stream (struct Stream_Descriptor *parent, Stream_type type) |
Adds a stream into the current stream manager. More... | |
void | Stream_MGR_end_stream () |
Signals end of stream. More... | |
void | Stream_Infos_init (struct Stream_Infos *info) |
Initializes a Stream_Infos. More... | |
void | Stream_Infos_release (struct Stream_Infos *info) |
Releases a Stream_Infos. More... | |
static struct Stream_Infos * | Stream_infos_get () |
Getter on the current Stream_Infos. More... | |
static void | Stream_infos_set (struct Stream_Infos *sd) |
Setter on the current Stream_Infos. More... | |
static struct Stream_Descriptor * | Stream_desc_get () |
Getter on the current Stream_Descriptor. More... | |
static void | Stream_Infos_enter_mpi () |
Indicates to the current Stream_Infos (if any) that we are enterning a MPI call. More... | |
static void | Stream_Infos_leave_mpi () |
Indicates to the current Stream_Infos (if any) that we are leaving a MPI call. More... | |
static int | Stream_Infos_is_in_mpi () |
Checks if we are currently inside a MPI call. More... | |
static void | MALP_Trace_Event_fill (struct MALP_Trace_Event *event, MALP_Trace_event_type type, uint64_t timestamp, uint64_t duration) |
static MPI_Comm | Trace_Comm_get () |
Getter on the sync communicator. More... | |
void | Trace_Comm_init () |
Initializes the trace communicator. More... | |
void | Trace_Comm_release () |
Releases the trace communicator. More... | |
Variables | |
struct Event_Packer | _malp_e_packer |
The event packer of the current MPI rank. More... | |
struct Stream_Manager | __stream_Stream_Manager |
The stream manager for current MPI process. More... | |
struct Stream_Infos * | __trace_module |
This is a global Stream_Infos (not shared between threads) More... | |
MPI_Comm | __trace_comm |
This is the MPI communicator used for interprocess time synchronization. More... | |
This module contains the Instrumentation part of MALP.
This part offers an instrumentation interface to programs. As it is done in Virtual MPI, all the MPI functions are wrapped to do things before/after the actual call, and so are a (large) set of POSIX functions.
The wrapping consists basicaly in replacing the MPI Communicator (as in Virtual MPI), computing the time spent within the function and sending the created event into the event system (see Event_Packer_push()).
The MPI functions are wrapped using the Wrapper and POSIX functions are manually wrapped.
#define MAX_PENDING_EVENT 4096 |
Defines the maximum pending events.
Definition at line 93 of file Stream_MGR.h.
|
static |
Getter on the current event packer.
Definition at line 54 of file Event_Pack.h.
void Event_Packer_flush | ( | ) |
Processes the send of all events present in the internal FIFO.
Definition at line 164 of file Event_Pack.c.
void Event_Packer_init | ( | ) |
Initializes the event packer, maps current process to existing Analyser or IO_WRITE partition and initializes the streams.
Definition at line 30 of file Event_Pack.c.
void Event_Packer_push | ( | struct MALP_Trace_Event * | event | ) |
Sends an event.
the event is stored into an internal FIFO until it gets full.
event | the event to send |
Definition at line 141 of file Event_Pack.c.
void Event_Packer_release | ( | ) |
Releases the event packer.
Definition at line 74 of file Event_Pack.c.
|
inlinestatic |
|
static |
Getter on the current Stream_Descriptor.
Definition at line 147 of file Stream_MGR.h.
|
inlinestatic |
Indicates to the current Stream_Infos (if any) that we are enterning a MPI call.
Definition at line 155 of file Stream_MGR.h.
|
static |
Getter on the current Stream_Infos.
Definition at line 129 of file Stream_MGR.h.
void Stream_Infos_init | ( | struct Stream_Infos * | info | ) |
Initializes a Stream_Infos.
info | the Stream_Infos to initialize |
Definition at line 76 of file Stream_MGR.c.
|
inlinestatic |
Checks if we are currently inside a MPI call.
Definition at line 178 of file Stream_MGR.h.
|
inlinestatic |
Indicates to the current Stream_Infos (if any) that we are leaving a MPI call.
Definition at line 166 of file Stream_MGR.h.
void Stream_Infos_release | ( | struct Stream_Infos * | info | ) |
Releases a Stream_Infos.
info | the Stream_Infos to release |
Definition at line 82 of file Stream_MGR.c.
|
inlinestatic |
Setter on the current Stream_Infos.
sd | the new Stream_Infos |
Definition at line 138 of file Stream_MGR.h.
|
static |
A getter for the stream manager.
Definition at line 60 of file Stream_MGR.h.
void Stream_Manager_init | ( | ) |
Initialises the manager for current MPI process.
Definition at line 56 of file Stream_MGR.c.
void Stream_Manager_release | ( | ) |
Releases the manager for current MPI process (including all streams )
Definition at line 66 of file Stream_MGR.c.
void Stream_MGR_end_stream | ( | ) |
Signals end of stream.
Definition at line 138 of file Stream_MGR.c.
struct Stream_Infos* Stream_MGR_new_stream | ( | struct Stream_Descriptor * | parent, |
Stream_type | type | ||
) |
Adds a stream into the current stream manager.
parent | Descriptor of wanted parent stream |
type | the stream type |
Definition at line 89 of file Stream_MGR.c.
|
inlinestatic |
Getter on the sync communicator.
Definition at line 40 of file Trace_Comm.h.
void Trace_Comm_init | ( | ) |
Initializes the trace communicator.
Basically PMPI_Comm_dup of current partition communicator
Definition at line 30 of file Trace_Comm.c.
void Trace_Comm_release | ( | ) |
Releases the trace communicator.
Basically PMPI_Comm_free of current partition communicator
Definition at line 39 of file Trace_Comm.c.
struct Stream_Manager __stream_Stream_Manager |
The stream manager for current MPI process.
Definition at line 35 of file Stream_MGR.c.
MPI_Comm __trace_comm |
This is the MPI communicator used for interprocess time synchronization.
Definition at line 27 of file Trace_Comm.c.
struct Stream_Infos* __trace_module |
This is a global Stream_Infos (not shared between threads)
Definition at line 33 of file Stream_MGR.c.
struct Event_Packer _malp_e_packer |
The event packer of the current MPI rank.
Definition at line 27 of file Event_Pack.c.