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 (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_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.
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)
void PathHistoryEnvelope::reset ()
void PathHistoryEnvelope::print () const
void PathHistoryEnvelope::incrementTotalTime (double time)
 Write a description of the path into the beginning of the provided buffer. The buffer ought to be large enough.
void PathHistoryEnvelope::setDebug100 ()
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 329 of file pathHistory.h.


Function Documentation

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 201 of file pathHistory.C.

References pathHistoryManagerProxy.

void automaticallySetMessagePriority ( envelope env  ) 

void initializeCriticalPath ( void   ) 

Definition at line 350 of file pathHistory.C.

References timeEntryMethodStarted.

void resetThisEntryPath ( void   ) 

Definition at line 433 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 439 of file pathHistory.C.

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

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

void setCurrentlyExecutingPathTo100 ( void   ) 

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

Definition at line 460 of file pathHistory.C.

void traceCriticalPathBack ( CkCallback  cb,
bool  saveToProjectionsTraces 
)

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 496 of file pathHistory.C.

References _entryTable.

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 566 of file pathHistory.C.

References PathHistoryTableEntry::addToTableAndEnvelope(), CmiWallTimer(), and timeEntryMethodStarted.

Referenced by _prepareImmediateMsg(), _prepareImmediateMsgBranch(), _prepareMsg(), _prepareMsgBranch(), msg_prepareSend(), and msg_prepareSend_noinline().

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 580 of file pathHistory.C.

References saveCurrentPathAsUserEvent().

Referenced by _processHandler().

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 597 of file pathHistory.C.

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

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 57 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.

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 68 of file pathHistory.C.

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

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

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

void pathHistoryManager::useCriticalPathForPriories (  )  [inherited]

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

Definition at line 283 of file pathHistory.C.

References traceCriticalPathBack().

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

void PathHistoryEnvelope::reset (  )  [inherited]

void PathHistoryEnvelope::print (  )  const [inherited]

Definition at line 380 of file pathHistory.C.

void PathHistoryEnvelope::incrementTotalTime ( double  time  )  [inherited]

Write a description of the path into the beginning of the provided buffer. The buffer ought to be large enough.

Definition at line 387 of file pathHistory.C.

References PathHistoryEnvelope::totalTime.

void PathHistoryEnvelope::setDebug100 (  )  [inherited]

Definition at line 393 of file pathHistory.C.

References PathHistoryEnvelope::totalTime.

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 400 of file pathHistory.C.

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

Referenced by criticalPath_send().

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 423 of file pathHistory.C.

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


Variable Documentation

CProxy_pathHistoryManager pathHistoryManagerProxy


Generated on Fri May 25 08:00:58 2012 for Charm++ by  doxygen 1.5.5