PPL Logo

Critical Path Detection

Usable for determining the critical paths in Charm++, Charisma, and SDAG programs. More...

Data Structures

class  PathHistoryEnvelope
 A class that is used to track the entry points and other information about a critical path as a charm++ program executes. More...
class  pathHistoryMain
 A mainchare that is used just to create a group at startup. More...
class  pathHistoryManager
class  MergeablePathHistory
 Augments the PathHistory in the envelope with the other necessary information from the envelope. More...
class  PathHistoryTableEntry
 Stores information about the critical path in the table on each PE. More...
class  pathInformationMsg
 A message containing information about a path of entry method invocations. This contains an array of PathHistoryTableEntry objects. More...

Typedefs

typedef std::map< int,
PathHistoryTableEntry
PathHistoryTableType
 A table to store all the local nodes in the parallel dependency graph.

Functions

 CkpvDeclare (int, traceLastHop)
 CkpvDeclare (MergeablePathHistory, currentlyExecutingPath)
 CkpvDeclare (double, timeEntryMethodStarted)
 CkpvDeclare (PathHistoryTableType, pathHistoryTable)
 A table to store all the local nodes in the parallel dependency graph.
 CkpvDeclare (int, pathHistoryTableLastIdx)
 A counter that defines the new keys for the entries in the pathHistoryTable.
void useThisCriticalPathForPriorities ()
 An interface callable by the application.
void automaticallySetMessagePriority (envelope *env)
 Callable from inside charm++ delivery mechanisms (after envelope contains epIdx):.
void initializeCriticalPath (void)
void resetThisEntryPath (void)
void saveCurrentPathAsUserEvent (const char *prefix)
 A debugging routine that outputs critical path info as user events.
void setCurrentlyExecutingPathTo100 (void)
 A debugging helper routine that sets the values in the currently executing message's path to 100.
void traceCriticalPathBack (CkCallback cb, bool saveToProjectionsTraces)
 Acquire the critical path and deliver it to the user supplied callback.
void printEPInfo ()
 A debugging routine that prints the number of EPs for the program, and the size of the envelope's path fields.
void criticalPath_setep (int epIdx)
void criticalPath_start (envelope *env)
 Save information about the critical path contained in the message that is about to execute.
void criticalPath_send (envelope *sendingEnv)
 Modify the envelope of a message that is being sent for critical path detection and store an entry in a table on this PE.
void criticalPath_end ()
 Handle the end of the entry method in the critical path detection processes. This should create a forward dependency for the object.
void criticalPath_split ()
 Split an entry method invocation into multiple logical tasks for the critical path analysis.
MergeablePathHistorysaveCurrentPath ()
void mergePathHistory (MergeablePathHistory *tmp)
void printPathInMsg (void *msg)
 A debugging routine that outputs critical path info as Projections user events.
 CkpvExtern (MergeablePathHistory, currentlyExecutingPath)
 CkpvExtern (double, timeEntryMethodStarted)
 CkpvExtern (PathHistoryTableType, pathHistoryTable)
 CkpvExtern (int, pathHistoryTableLastIdx)
 A counter that defines the new keys for the entries in the pathHistoryTable.
 pathHistoryManager::pathHistoryManager ()
void pathHistoryManager::traceCriticalPathBackStepByStep (pathInformationMsg *msg)
 Trace perform a traversal backwards over the critical path specified as a table index for the processor upon which this is called.
void pathHistoryManager::broadcastCriticalPathProjections (pathInformationMsg *msg)
void pathHistoryManager::criticalPathProjectionsDone (CkReductionMsg *msg)
void pathHistoryManager::useCriticalPathForPriories ()
 Traverse back and aquire the critical path to be used for automatic message prioritization.
void pathHistoryManager::saveCriticalPathForPriorities (pathInformationMsg *msg)
int PathHistoryTableEntry::addToTableAndEnvelope (envelope *env)
 Add an entry for this path history into the table, and write the corresponding information into the provided header.
int PathHistoryTableEntry::addToTable ()
 Add an entry for this path history into the table. Returns the new index in the table.

Variables

CProxy_pathHistoryManager pathHistoryManagerProxy

Detailed Description

Usable for determining the critical paths in Charm++, Charisma, and SDAG programs.

The information regarding the entry methods that executed along the path to this one.

This is the main converse-level handler used by all of Charm++.


Typedef Documentation

A table to store all the local nodes in the parallel dependency graph.

Definition at line 301 of file pathHistory.h.


Function Documentation

CkpvDeclare ( int  ,
traceLastHop   
)

CkpvDeclare ( MergeablePathHistory  ,
currentlyExecutingPath   
)

CkpvDeclare ( double  ,
timeEntryMethodStarted   
)

CkpvDeclare ( PathHistoryTableType  ,
pathHistoryTable   
)

A table to store all the local nodes in the parallel dependency graph.

CkpvDeclare ( int  ,
pathHistoryTableLastIdx   
)

A counter that defines the new keys for the entries in the pathHistoryTable.

void useThisCriticalPathForPriorities (  ) 

An interface callable by the application.

Definition at line 179 of file pathHistory.C.

References pathHistoryManagerProxy.

void automaticallySetMessagePriority ( envelope env  ) 

void initializeCriticalPath ( void   ) 

Definition at line 324 of file pathHistory.C.

References timeEntryMethodStarted.

void resetThisEntryPath ( void   ) 

Definition at line 336 of file pathHistory.C.

void saveCurrentPathAsUserEvent ( const char *  prefix  ) 

A debugging routine that outputs critical path info as user events.

A debugging routine that outputs critical path info as Projections user events.

Definition at line 342 of file pathHistory.C.

References PathHistoryTableEntry::getTotalTime(), traceUserEvent(), and traceUserSuppliedNote().

Referenced by criticalPath_end(), criticalPath_split(), and criticalPath_start().

Here is the call graph for this function:

Here is the caller graph for this function:

void setCurrentlyExecutingPathTo100 ( void   ) 

A debugging helper routine that sets the values in the currently executing message's path to 100.

Definition at line 363 of file pathHistory.C.

void traceCriticalPathBack ( CkCallback  cb,
bool  saveToProjectionsTraces 
)

Acquire the critical path and deliver it to the user supplied callback.

Definition at line 368 of file pathHistory.C.

References pathInformationMsg::cb, Converse::CkNumPes(), pathInformationMsg::historySize, pathInformationMsg::hops, pathHistoryManagerProxy, pathInformationMsg::saveAsProjectionsUserEvents, and pathInformationMsg::table_idx.

Referenced by pathHistoryManager::useCriticalPathForPriories().

Here is the call graph for this function:

Here is the caller graph for this function:

void printEPInfo (  ) 

A debugging routine that prints the number of EPs for the program, and the size of the envelope's path fields.

A debugging routine that outputs critical path info as Projections user events.

Definition at line 383 of file pathHistory.C.

References _entryTable, and name.

void criticalPath_setep ( int  epIdx  ) 

Definition at line 392 of file pathHistory.C.

References _entryTable, and name.

void criticalPath_start ( envelope env  ) 

void criticalPath_send ( envelope sendingEnv  ) 

Modify the envelope of a message that is being sent for critical path detection and store an entry in a table on this PE.

Definition at line 453 of file pathHistory.C.

References PathHistoryTableEntry::addToTableAndEnvelope(), automaticallySetMessagePriority(), CmiWallTimer(), envelope::pathHistory, and timeEntryMethodStarted.

Referenced by msg_prepareSend(), and msg_prepareSend_noinline().

Here is the call graph for this function:

Here is the caller graph for this function:

void criticalPath_end (  ) 

Handle the end of the entry method in the critical path detection processes. This should create a forward dependency for the object.

Definition at line 465 of file pathHistory.C.

References saveCurrentPathAsUserEvent().

Here is the call graph for this function:

void criticalPath_split (  ) 

Split an entry method invocation into multiple logical tasks for the critical path analysis.

SDAG doen's break up the code in useful ways, so I'll make it add calls to this in the generated code.

Definition at line 479 of file pathHistory.C.

References PathHistoryTableEntry::addToTable(), Converse::CkMyPe(), CmiWallTimer(), PathHistoryTableEntry::getTotalTime(), saveCurrentPathAsUserEvent(), and timeEntryMethodStarted.

Here is the call graph for this function:

MergeablePathHistory * saveCurrentPath (  ) 

Definition at line 495 of file pathHistory.C.

void mergePathHistory ( MergeablePathHistory tmp  ) 

Definition at line 502 of file pathHistory.C.

void printPathInMsg ( void *  msg  ) 

A debugging routine that outputs critical path info as Projections user events.

CkpvExtern ( MergeablePathHistory  ,
currentlyExecutingPath   
)

CkpvExtern ( double  ,
timeEntryMethodStarted   
)

CkpvExtern ( PathHistoryTableType  ,
pathHistoryTable   
)

CkpvExtern ( int  ,
pathHistoryTableLastIdx   
)

A counter that defines the new keys for the entries in the pathHistoryTable.

pathHistoryManager::pathHistoryManager (  )  [inherited]

Definition at line 49 of file pathHistory.C.

void pathHistoryManager::traceCriticalPathBackStepByStep ( pathInformationMsg msg  )  [inherited]

Trace perform a traversal backwards over the critical path specified as a table index for the processor upon which this is called.

Trace perform a traversal backwards over the critical path specified as a table index for the processor upon which this is called.

* If msg->saveAsProjectionsUserEvents is true then the resulting path will be broadcast to broadcastCriticalPathProjections() which will then call a reduction to criticalPathProjectionsDone() which will call the user supplied callback.

Otherwise, the callback cb will be called with the resulting msg after the path has been traversed to its origin.

The callback cb will be called with the resulting msg after the path has been traversed to its origin.

Definition at line 58 of file pathHistory.C.

References pathInformationMsg::cb, Converse::CkMyPe(), Converse::CkNumPes(), count, pathInformationMsg::history, pathInformationMsg::historySize, pathInformationMsg::hops, idx, pathHistoryManager::pathForUser, pathInformationMsg::saveAsProjectionsUserEvents, CkCallback::send(), PathHistoryTableEntry::sender_history_table_idx, PathHistoryTableEntry::sender_pe, and pathInformationMsg::table_idx.

Here is the call graph for this function:

void pathHistoryManager::broadcastCriticalPathProjections ( pathInformationMsg msg  )  [inherited]

void pathHistoryManager::criticalPathProjectionsDone ( CkReductionMsg msg  )  [inherited]

Definition at line 172 of file pathHistory.C.

References pathInformationMsg::cb, Converse::CkMyPe(), pathHistoryManager::pathForUser, and CkCallback::send().

Here is the call graph for this function:

void pathHistoryManager::useCriticalPathForPriories (  )  [inherited]

Traverse back and aquire the critical path to be used for automatic message prioritization.

Definition at line 243 of file pathHistory.C.

References cb, and traceCriticalPathBack().

Here is the call graph for this function:

void pathHistoryManager::saveCriticalPathForPriorities ( pathInformationMsg msg  )  [inherited]

int PathHistoryTableEntry::addToTableAndEnvelope ( envelope env  )  [inherited]

Add an entry for this path history into the table, and write the corresponding information into the provided header.

Add an entry for this path history into the table, and write the corresponding information into the outgoing envelope.

Definition at line 296 of file pathHistory.C.

References PathHistoryTableEntry::addToTable(), Converse::CkMyPe(), PathHistoryTableEntry::local_path_time, envelope::pathHistory, PathHistoryTableEntry::preceding_path_time, PathHistoryEnvelope::set_sender_history_table_idx(), and PathHistoryEnvelope::setTime().

Referenced by criticalPath_send().

Here is the call graph for this function:

Here is the caller graph for this function:

int PathHistoryTableEntry::addToTable (  )  [inherited]

Add an entry for this path history into the table. Returns the new index in the table.

Add an entry for this path history into the table. Returns the index in the table for it.

Definition at line 315 of file pathHistory.C.

References PathHistoryTableEntry::local_ep, PathHistoryTableEntry::local_pe, and PathHistoryTableEntry::sender_history_table_idx.

Referenced by PathHistoryTableEntry::addToTableAndEnvelope(), and criticalPath_split().

Here is the caller graph for this function:


Variable Documentation

CProxy_pathHistoryManager pathHistoryManagerProxy


Generated on Mon Sep 21 08:16:19 2020 for Charm++ by  doxygen 1.5.5