PPL Logo

Automatic Performance Tuning and Steering Framework


Data Structures

class  TraceControlPoints
 An instrumentation module making use of the tracing framework hooks provided in Charm++. More...
class  redistributor2DMsg
 A message containing a chunk of a data array used when redistributing to a different set of active chares. More...
class  redistributor2D
 A chare group that can redistribute user data arrays. It is used by binding it to a user's Chare Array. More...
class  controlPointMain
 A mainchare that is used just to create our controlPointManager group at startup. More...
class  controlPointMsg
 A message used for signaling changes in control point values. More...
class  idleTimeContainer
 A container that stores idle time statistics (min/max/avg etc.). More...
class  overheadContainer
 A container that stores overhead statistics (min/max/avg etc.). More...
class  instrumentedPhase
 Stores data for a phase (a time range in which a single set of control point values is used). More...
class  instrumentedData
 Stores and manipulate all known instrumented phases. One instance of this exists on each PE in its local controlPointManager. More...
class  simplexScheme
 A class that implements the Nelder Mead Simplex Optimization Algorithm. More...
class  controlPointManager

Typedefs

typedef enum tuningSchemeEnum tuningScheme

Enumerations

enum  tuningSchemeEnum {
  RandomSelection, SimulatedAnnealing, ExhaustiveSearch, CriticalPathAutoPrioritization,
  UseBestKnownTiming, UseSteering, MemoryAware, Simplex,
  DivideAndConquer, AlwaysDefaults, LDBPeriod, LDBPeriodLinear,
  LDBPeriodQuadratic, LDBPeriodOptimal
}

Functions

 CkpvStaticDeclare (TraceControlPoints *, _trace)
void _createTracecontrolPoints (char **argv)
 For each TraceFoo module, _createTraceFoo() must be defined.
TraceControlPointslocalControlPointTracingInstance ()
void traceControlPointsExitFunction ()
void initTraceControlPointsBOC ()
static int maxi (int a, int b)
 Integer Maximum.
static int mini (int a, int b)
 Integer Minimum.
static void periodicProcessControlPoints (void *ptr, double currWallTime)
 Called periodically to allow control point framework to do things periodically.
void printTuningScheme ()
CkReductionMsgidleTimeReduction (int nMsg, CkReductionMsg **msgs)
 A reducer that combines idle time measurements (min/sum/max etc.).
CkReductionMsgallMeasuresReduction (int nMsg, CkReductionMsg **msgs)
void registerCPReductions (void)
 Registers the control point framework's reduction handlers at startup on each PE.
unsigned int randInt (unsigned int num, const char *name, int seed=0)
 Return an integer between 0 and num-1 inclusive If different seed, name, and random_seed values are provided, the returned values are pseudo-random.
void gotoNextPhase ()
 An interface callable by the application.
FLINKAGE void FTN_NAME (GOTONEXTPHASE, gotonextphase)()
void registerCPChangeCallback (CkCallback cb, bool frameworkShouldAdvancePhase)
 An interface callable by the application.
void setFrameworkAdvancePhase (bool frameworkShouldAdvancePhase)
 An interface callable by the application.
void registerControlPointTiming (double time)
 An interface callable by the application.
void controlPointTimingStamp ()
 An interface callable by the application.
FLINKAGE void FTN_NAME (CONTROLPOINTTIMINGSTAMP, controlpointtimingstamp)()
FLINKAGE void FTN_NAME (SETFRAMEWORKADVANCEPHASEF, setframeworkadvancephasef)
void controlPointShutdown ()
 Shutdown the control point framework, writing data to disk if necessary.
void controlPointInitNode ()
 A function called at startup on each node to register controlPointShutdown() to be called at CkExit().
int controlPoint (const char *name, int lb, int ub)
 Get control point value from range of integers [lb,ub].
FLINKAGE int FTN_NAME (CONTROLPOINT, controlpoint)(CMK_TYPEDEF_INT4 *lb
 A fortran callable one.
void ControlPointWriteOutputToDisk ()
 Write output data to disk. Callable from user program (for example, to periodically flush to disk if program might run out of time, or NAMD).
int controlPoint2Pow (const char *name, int c1, int c2)
 Return an integral power of 2 between c1 and c2 The value returned will likely change between subsequent invocations.
int controlPoint (const char *name, std::vector< int > &values)
 Return an integer from the provided vector of values The value returned will likely change between subsequent invocations.
 TraceControlPoints::TraceControlPoints (char **argv)
void TraceControlPoints::traceBegin (void)
void TraceControlPoints::traceEnd (void)
void TraceControlPoints::userEvent (int eventID)
void TraceControlPoints::userBracketEvent (int eventID, double bt, double et)
void TraceControlPoints::creation (envelope *, int epIdx, int num=1)
void TraceControlPoints::creationMulticast (envelope *, int epIdx, int num=1, const int *pelist=NULL)
void TraceControlPoints::creationDone (int num=1)
void TraceControlPoints::messageRecv (char *env, int pe)
void TraceControlPoints::beginExecute (CmiObjId *tid)
void TraceControlPoints::beginExecute (envelope *)
void TraceControlPoints::beginExecute (int event, int msgType, int ep, int srcPe, int ml, CmiObjId *idx)
void TraceControlPoints::endExecute (void)
void TraceControlPoints::beginIdle (double curWallTime)
void TraceControlPoints::endIdle (double curWallTime)
void TraceControlPoints::beginComputation (void)
void TraceControlPoints::endComputation (void)
void TraceControlPoints::malloc (void *where, int size, void **stack, int stackSize)
void TraceControlPoints::free (void *where, int size)
void TraceControlPoints::traceClose ()
void TraceControlPoints::resetTimings ()
 reset the idle time and entry method execution time accumulators
void TraceControlPoints::resetAll ()
 Reset the idle, overhead, and memory measurements.
int redistributor2D::top_data_idx ()
 The index in the global array for my top row.
int redistributor2D::bottom_data_idx ()
int redistributor2D::left_data_idx ()
int redistributor2D::right_data_idx ()
int redistributor2D::top_neighbor ()
int redistributor2D::bottom_neighbor ()
int redistributor2D::left_neighbor ()
int redistributor2D::right_neighbor ()
int redistributor2D::mywidth ()
 the width of the non-ghost part of the local partition
int redistributor2D::myheight ()
 the height (Y dimension) of the non-ghost part of the local partition
 controlPointManager::controlPointManager ()
 controlPointManager::~controlPointManager ()
void controlPointManager::pup (PUP::er &p)
void controlPointManager::loadDataFile ()
 Loads the previous run data file.
void controlPointManager::writeDataFile ()
 Add the current data to allData and output it to a file.
void controlPointManager::setCPCallback (CkCallback cb, bool _frameworkShouldAdvancePhase)
 User can register a callback that is called when application should advance to next phase.
void controlPointManager::setFrameworkAdvancePhase (bool _frameworkShouldAdvancePhase)
 A user can specify that the framework should advance the phases automatically. Useful for gather performance measurements without modifying a program.
void controlPointManager::processControlPoints ()
 Called periodically by the runtime to handle the control points Currently called on each PE.
bool controlPointManager::controlPointAffectsThisEP (int ep)
 Determine if any control point is known to affect an entry method.
bool controlPointManager::controlPointAffectsThisArray (int array)
 Determine if any control point is known to affect a chare array.
instrumentedPhasecontrolPointManager::currentPhaseData ()
 The data for the current phase.
instrumentedPhasecontrolPointManager::previousPhaseData ()
 The data from the previous phase.
instrumentedPhasecontrolPointManager::twoAgoPhaseData ()
 The data from two phases back.
void controlPointManager::gotoNextPhase ()
 Called by either the application or the Control Point Framework to advance to the next phase.
void controlPointManager::setTiming (double time)
 An application uses this to register an instrumented timing for this phase.
void controlPointManager::requestIdleTime (CkCallback cb)
 Entry method called on all PEs to request memory usage.
void controlPointManager::gatherIdleTime (CkReductionMsg *msg)
 All processors reduce their memory usages in requestIdleTime() to this method.
void controlPointManager::requestAll (CkCallback cb)
 Entry method called on all PEs to request Idle, Overhead, and Memory measurements.
void controlPointManager::gatherAll (CkReductionMsg *msg)
 All processors reduce their memory usages in requestIdleTime() to this method.
void controlPointManager::checkForShutdown ()
 Check to see if we are in the shutdown process, and handle it appropriately.
void controlPointManager::exitIfReady ()
 Start shutdown procedures for the controlPoints module(s).
void controlPointManager::doExitNow ()
 All outstanding operations have completed, so do the shutdown now. First write files to disk, and then call CkExit().
void controlPointManager::writeOutputToDisk ()
 Write data to disk (when needed), likely at exit.
void controlPointManager::requestMemoryUsage (CkCallback cb)
 Entry method called on all PEs to request memory usage.
void controlPointManager::gatherMemoryUsage (CkReductionMsg *msg)
 All processors reduce their memory usages to this method.
void controlPointManager::generatePlan ()
 Generate a plan (new control point values) once per phase.
void simplexScheme::adapt (std::map< std::string, std::pair< int, int > > &controlPointSpace, std::map< std::string, int > &newControlPoints, const int phase_id, instrumentedData &allData)
 Inform the control point framework that a named control point affects the priorities of some array.
void simplexScheme::doReflection (std::map< std::string, std::pair< int, int > > &controlPointSpace, std::map< std::string, int > &newControlPoints, const int phase_id, instrumentedData &allData)
 Replace the worst point with its reflection across the centroid.
void simplexScheme::doExpansion (std::map< std::string, std::pair< int, int > > &controlPointSpace, std::map< std::string, int > &newControlPoints, const int phase_id, instrumentedData &allData)
 Replace the newly tested reflection with a further expanded version of itself.
void simplexScheme::doContraction (std::map< std::string, std::pair< int, int > > &controlPointSpace, std::map< std::string, int > &newControlPoints, const int phase_id, instrumentedData &allData)
 Replace the newly tested reflection with a further expanded version of itself.
void simplexScheme::computeCentroidBestWorst (std::map< std::string, std::pair< int, int > > &controlPointSpace, std::map< std::string, int > &newControlPoints, const int phase_id, instrumentedData &allData)
std::vector< double > simplexScheme::pointCoords (instrumentedData &allData, int i)

Variables

CkGroupID traceControlPointsGID
CProxy_controlPointManager controlPointManagerProxy
int random_seed
long controlPointSamplePeriod
int whichTuningScheme
bool writeDataFileAtShutdown
bool shouldFilterOutputData
bool loadDataFileAtStartup
bool shouldGatherMemoryUsage
bool shouldGatherUtilization
bool shouldGatherAll
char CPDataFilename [512]
bool enableCPTracing
std::map< std::string, intdefaultControlPointValues
 The control point values to be used for the first few phases if the strategy doesn't choose to do something else.
CkReduction::reducerType idleTimeReductionType
 A reduction type that combines idle time measurements (min/sum/max etc.).
CkReduction::reducerType allMeasuresReductionType
 A reduction type that combines idle, overhead, and memory measurements.
CProxy_controlPointManager controlPointManagerProxy
int random_seed
long controlPointSamplePeriod
int whichTuningScheme
bool writeDataFileAtShutdown
bool shouldFilterOutputData
bool loadDataFileAtStartup
char CPDataFilename [512]
FLINKAGE int CMK_TYPEDEF_INT4ub

Typedef Documentation


Enumeration Type Documentation

Enumerator:
RandomSelection 
SimulatedAnnealing 
ExhaustiveSearch 
CriticalPathAutoPrioritization 
UseBestKnownTiming 
UseSteering 
MemoryAware 
Simplex 
DivideAndConquer 
AlwaysDefaults 
LDBPeriod 
LDBPeriodLinear 
LDBPeriodQuadratic 
LDBPeriodOptimal 

Definition at line 66 of file controlPoints.C.


Function Documentation

CkpvStaticDeclare ( TraceControlPoints ,
_trace   
)

void _createTracecontrolPoints ( char **  argv  ) 

For each TraceFoo module, _createTraceFoo() must be defined.

This function is called in _createTraces() generated in moduleInit.C

This module is special in that it is always included in charm, but sometimes it does nothing. This is called on all processors in SMP version.

Definition at line 27 of file trace-controlPoints.C.

Referenced by traceCommonInit().

Here is the caller graph for this function:

TraceControlPoints * localControlPointTracingInstance (  ) 

Definition at line 237 of file trace-controlPoints.C.

Referenced by controlPointManager::requestAll(), and controlPointManager::requestIdleTime().

Here is the caller graph for this function:

void traceControlPointsExitFunction (  ) 

Definition at line 243 of file trace-controlPoints.C.

References CkContinueExit().

Here is the call graph for this function:

void initTraceControlPointsBOC (  ) 

Definition at line 248 of file trace-controlPoints.C.

static int maxi ( int  a,
int  b 
) [static]

Integer Maximum.

Definition at line 44 of file arrayRedistributor.h.

Referenced by AddEdges(), and redistributor2D::resizeGranules().

Here is the caller graph for this function:

static int mini ( int  a,
int  b 
) [static]

Integer Minimum.

Definition at line 52 of file arrayRedistributor.h.

Referenced by redistributor2D::resizeGranules().

Here is the caller graph for this function:

static void periodicProcessControlPoints ( void *  ptr,
double  currWallTime 
) [static]

Called periodically to allow control point framework to do things periodically.

Definition at line 1247 of file controlPoints.C.

References CcdCallFnAfterOnPE(), Converse::CkMyPe(), controlPointManagerProxy, and controlPointSamplePeriod.

Referenced by controlPointManager::controlPointManager().

Here is the call graph for this function:

Here is the caller graph for this function:

void printTuningScheme (  ) 

CkReductionMsg* idleTimeReduction ( int  nMsg,
CkReductionMsg **  msgs 
)

A reducer that combines idle time measurements (min/sum/max etc.).

Definition at line 126 of file controlPoints.C.

References CkReductionMsg::buildNew(), PUP::m, max(), and min().

Referenced by registerCPReductions().

Here is the call graph for this function:

Here is the caller graph for this function:

CkReductionMsg* allMeasuresReduction ( int  nMsg,
CkReductionMsg **  msgs 
)

Definition at line 151 of file controlPoints.C.

References CkReductionMsg::buildNew(), PUP::m, max(), and min().

Referenced by registerCPReductions().

Here is the call graph for this function:

Here is the caller graph for this function:

void registerCPReductions ( void   ) 

Registers the control point framework's reduction handlers at startup on each PE.

Definition at line 184 of file controlPoints.C.

References CkReduction::addReducer(), allMeasuresReduction(), allMeasuresReductionType, idleTimeReduction(), and idleTimeReductionType.

Here is the call graph for this function:

unsigned int randInt ( unsigned int  num,
const char *  name,
int  seed = 0 
)

Return an integer between 0 and num-1 inclusive If different seed, name, and random_seed values are provided, the returned values are pseudo-random.

Definition at line 196 of file controlPoints.C.

References c, and random_seed.

Referenced by simplexScheme::adapt(), and controlPointManager::generatePlan().

Here is the caller graph for this function:

void gotoNextPhase (  ) 

An interface callable by the application.

The application specifies that it is ready to proceed to a new set of control point values.

This should be called after registerControlPointTiming() This should be called before calling controlPoint()

Definition at line 1026 of file controlPoints.C.

References controlPointManagerProxy.

FLINKAGE void FTN_NAME ( GOTONEXTPHASE  ,
gotonextphase   
)

Definition at line 1030 of file controlPoints.C.

References controlPointManager::gotoNextPhase().

Here is the call graph for this function:

void registerCPChangeCallback ( CkCallback  cb,
bool  frameworkShouldAdvancePhase 
)

An interface callable by the application.

Definition at line 1176 of file controlPoints.C.

References Converse::CkMyPe(), and controlPointManagerProxy.

Referenced by SearchConductor::groupInitComplete().

Here is the call graph for this function:

Here is the caller graph for this function:

void setFrameworkAdvancePhase ( bool  frameworkShouldAdvancePhase  ) 

An interface callable by the application.

Definition at line 1183 of file controlPoints.C.

References Converse::CkMyPe(), and controlPointManagerProxy.

Here is the call graph for this function:

void registerControlPointTiming ( double  time  ) 

An interface callable by the application.

Definition at line 1191 of file controlPoints.C.

References Converse::CkMyPe(), and controlPointManagerProxy.

Here is the call graph for this function:

void controlPointTimingStamp (  ) 

An interface callable by the application.

Called once each application step. Can be used instead of registerControlPointTiming().

Definition at line 1200 of file controlPoints.C.

References Converse::CkMyPe(), CmiWallTimer(), controlPointManagerProxy, PUP::t, and stats::time().

Referenced by SearchConductor::controlChange(), and FTN_NAME().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE void FTN_NAME ( CONTROLPOINTTIMINGSTAMP  ,
controlpointtimingstamp   
)

Definition at line 1214 of file controlPoints.C.

References controlPointTimingStamp().

Here is the call graph for this function:

FLINKAGE void FTN_NAME ( SETFRAMEWORKADVANCEPHASEF  ,
setframeworkadvancephasef   
)

Definition at line 1220 of file controlPoints.C.

References controlPointManager::setFrameworkAdvancePhase(), and value.

Here is the call graph for this function:

void controlPointShutdown (  ) 

Shutdown the control point framework, writing data to disk if necessary.

Definition at line 1229 of file controlPoints.C.

References CkContinueExit(), Converse::CkMyPe(), and controlPointManagerProxy.

Referenced by controlPointInitNode().

Here is the call graph for this function:

Here is the caller graph for this function:

void controlPointInitNode (  ) 

A function called at startup on each node to register controlPointShutdown() to be called at CkExit().

Definition at line 1242 of file controlPoints.C.

References controlPointShutdown(), and registerExitFn().

Here is the call graph for this function:

int controlPoint ( const char *  name,
int  lb,
int  ub 
)

Get control point value from range of integers [lb,ub].

Return an integer between lb and ub inclusive The value returned will likely change between subsequent invocations.

Definition at line 2174 of file controlPoints.C.

References AlwaysDefaults, controlPointManagerProxy, instrumentedPhase::controlPoints, controlPointManager::controlPointSpace, defaultControlPointValues, endl(), controlPointManager::phase_id, and whichTuningScheme.

Referenced by redistributor2D::continueToNextStep(), SearchConductor::controlChange(), FTN_NAME(), and SearchConductor::groupInitComplete().

Here is the call graph for this function:

Here is the caller graph for this function:

FLINKAGE int FTN_NAME ( CONTROLPOINT  ,
controlpoint   
)

A fortran callable one.

I couldn't figure out how to pass a string from fortran to C++ yet So far fortran can only have one control point

Definition at line 2228 of file controlPoints.C.

References Converse::CkMyPe(), controlPoint(), lb, and ub.

Here is the call graph for this function:

void ControlPointWriteOutputToDisk (  ) 

Write output data to disk. Callable from user program (for example, to periodically flush to disk if program might run out of time, or NAMD).

Definition at line 2724 of file controlPoints.C.

References Converse::CkMyPe(), and controlPointManagerProxy.

Here is the call graph for this function:

int controlPoint2Pow ( const char *  name,
int  c1,
int  c2 
)

Return an integral power of 2 between c1 and c2 The value returned will likely change between subsequent invocations.

int controlPoint ( const char *  name,
std::vector< int > &  values 
)

Return an integer from the provided vector of values The value returned will likely change between subsequent invocations.

TraceControlPoints::TraceControlPoints ( char **  argv  )  [inherited]

void TraceControlPoints::traceBegin ( void   )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 53 of file trace-controlPoints.C.

References Converse::CkMyPe(), CmiWallTimer(), TraceControlPoints::totalUntracedTime, and TraceControlPoints::whenStoppedTracing.

Here is the call graph for this function:

void TraceControlPoints::traceEnd ( void   )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 61 of file trace-controlPoints.C.

References Converse::CkMyPe(), CmiWallTimer(), and TraceControlPoints::whenStoppedTracing.

Here is the call graph for this function:

void TraceControlPoints::userEvent ( int  eventID  )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 69 of file trace-controlPoints.C.

void TraceControlPoints::userBracketEvent ( int  eventID,
double  bt,
double  et 
) [inherited]

Definition at line 74 of file trace-controlPoints.C.

void TraceControlPoints::creation ( envelope ,
int  epIdx,
int  num = 1 
) [virtual, inherited]

Reimplemented from Trace.

Definition at line 78 of file trace-controlPoints.C.

void TraceControlPoints::creationMulticast ( envelope ,
int  epIdx,
int  num = 1,
const int pelist = NULL 
) [virtual, inherited]

Reimplemented from Trace.

Definition at line 82 of file trace-controlPoints.C.

void TraceControlPoints::creationDone ( int  num = 1  )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 87 of file trace-controlPoints.C.

void TraceControlPoints::messageRecv ( char *  env,
int  pe 
) [inherited]

Definition at line 91 of file trace-controlPoints.C.

void TraceControlPoints::beginExecute ( CmiObjId tid  )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 95 of file trace-controlPoints.C.

References TraceControlPoints::b1, CmiWallTimer(), TraceControlPoints::lastBeginExecuteTime, TraceControlPoints::lastbeginMessageSize, and TraceControlPoints::nesting_level.

Here is the call graph for this function:

void TraceControlPoints::beginExecute ( envelope e  )  [inherited]

void TraceControlPoints::beginExecute ( int  event,
int  msgType,
int  ep,
int  srcPe,
int  ml,
CmiObjId idx 
) [inherited]

void TraceControlPoints::endExecute ( void   )  [virtual, inherited]

void TraceControlPoints::beginIdle ( double  curWallTime  )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 150 of file trace-controlPoints.C.

References CmiMemoryUsage(), CmiWallTimer(), TraceControlPoints::lastBeginIdle, PUP::m, and TraceControlPoints::memUsage.

Here is the call graph for this function:

void TraceControlPoints::endIdle ( double  curWallTime  )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 160 of file trace-controlPoints.C.

References CmiWallTimer(), TraceControlPoints::lastBeginIdle, and TraceControlPoints::totalIdleTime.

Here is the call graph for this function:

void TraceControlPoints::beginComputation ( void   )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 165 of file trace-controlPoints.C.

References Converse::CkMyPe().

Here is the call graph for this function:

void TraceControlPoints::endComputation ( void   )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 173 of file trace-controlPoints.C.

References Converse::CkMyPe().

Here is the call graph for this function:

void TraceControlPoints::malloc ( void *  where,
int  size,
void **  stack,
int  stackSize 
) [virtual, inherited]

Reimplemented from Trace.

Definition at line 178 of file trace-controlPoints.C.

References CmiMemoryUsage(), PUP::m, and TraceControlPoints::memUsage.

Here is the call graph for this function:

void TraceControlPoints::free ( void *  where,
int  size 
) [virtual, inherited]

Reimplemented from Trace.

Definition at line 187 of file trace-controlPoints.C.

void TraceControlPoints::traceClose ( void   )  [virtual, inherited]

Reimplemented from Trace.

Definition at line 191 of file trace-controlPoints.C.

void TraceControlPoints::resetTimings (  )  [inherited]

reset the idle time and entry method execution time accumulators

Definition at line 205 of file trace-controlPoints.C.

References CmiWallTimer(), TraceControlPoints::lastResetTime, TraceControlPoints::totalEntryMethodInvocations, TraceControlPoints::totalEntryMethodTime, TraceControlPoints::totalIdleTime, TraceControlPoints::totalUntracedTime, and TraceControlPoints::whenStoppedTracing.

Referenced by controlPointManager::requestIdleTime(), and TraceControlPoints::TraceControlPoints().

Here is the call graph for this function:

Here is the caller graph for this function:

void TraceControlPoints::resetAll (  )  [inherited]

int redistributor2D::top_data_idx (  )  [inherited]

The index in the global array for my top row.

Definition at line 38 of file arrayRedistributor.C.

References redistributor2D::data_height, and redistributor2D::y_chares.

Referenced by redistributor2D::local_to_global_y(), redistributor2D::myheight(), redistributor2D::receiveTransposeData(), redistributor2D::resizeGranules(), and redistributor2D::who_owns_idx_y().

Here is the caller graph for this function:

int redistributor2D::bottom_data_idx (  )  [inherited]

int redistributor2D::left_data_idx (  )  [inherited]

int redistributor2D::right_data_idx (  )  [inherited]

int redistributor2D::top_neighbor (  )  [inherited]

Definition at line 54 of file arrayRedistributor.C.

References redistributor2D::y_chares.

int redistributor2D::bottom_neighbor (  )  [inherited]

Definition at line 58 of file arrayRedistributor.C.

References redistributor2D::y_chares.

int redistributor2D::left_neighbor (  )  [inherited]

Definition at line 62 of file arrayRedistributor.C.

References redistributor2D::x_chares.

int redistributor2D::right_neighbor (  )  [inherited]

Definition at line 66 of file arrayRedistributor.C.

References redistributor2D::x_chares.

int redistributor2D::mywidth (  )  [inherited]

the width of the non-ghost part of the local partition

the width (X dimension) of the non-ghost part of the local partition

Definition at line 72 of file arrayRedistributor.C.

References redistributor2D::left_data_idx(), redistributor2D::right_data_idx(), and redistributor2D::thisElemActive.

Referenced by redistributor2D::local_to_padded(), redistributor2D::my_array_width(), and redistributor2D::resizeGranules().

Here is the call graph for this function:

Here is the caller graph for this function:

int redistributor2D::myheight (  )  [inherited]

the height (Y dimension) of the non-ghost part of the local partition

Definition at line 81 of file arrayRedistributor.C.

References redistributor2D::bottom_data_idx(), redistributor2D::thisElemActive, and redistributor2D::top_data_idx().

Referenced by redistributor2D::local_to_padded(), redistributor2D::my_array_height(), and redistributor2D::resizeGranules().

Here is the call graph for this function:

Here is the caller graph for this function:

controlPointManager::controlPointManager (  )  [inherited]

controlPointManager::~controlPointManager (  )  [inherited]

Definition at line 265 of file controlPoints.C.

void controlPointManager::pup ( PUP::er p  )  [inherited]

void controlPointManager::loadDataFile (  )  [inherited]

void controlPointManager::writeDataFile (  )  [inherited]

Add the current data to allData and output it to a file.

Definition at line 374 of file controlPoints.C.

References controlPointManager::allData, instrumentedData::cleanupNames(), CPDataFilename, endl(), instrumentedData::filterOutIncompletePhases(), shouldFilterOutputData, instrumentedData::toString(), and instrumentedData::verify().

Here is the call graph for this function:

void controlPointManager::setCPCallback ( CkCallback  cb,
bool  _frameworkShouldAdvancePhase 
) [inherited]

User can register a callback that is called when application should advance to next phase.

Definition at line 398 of file controlPoints.C.

References controlPointManager::controlPointChangeCallback, controlPointManager::frameworkShouldAdvancePhase, and controlPointManager::haveControlPointChangeCallback.

void controlPointManager::setFrameworkAdvancePhase ( bool  _frameworkShouldAdvancePhase  )  [inherited]

A user can specify that the framework should advance the phases automatically. Useful for gather performance measurements without modifying a program.

Definition at line 406 of file controlPoints.C.

References controlPointManager::frameworkShouldAdvancePhase.

Referenced by FTN_NAME().

Here is the caller graph for this function:

void controlPointManager::processControlPoints (  )  [inherited]

bool controlPointManager::controlPointAffectsThisEP ( int  ep  )  [inherited]

Determine if any control point is known to affect an entry method.

Definition at line 609 of file controlPoints.C.

References controlPointManager::affectsPrioritiesEP.

bool controlPointManager::controlPointAffectsThisArray ( int  array  )  [inherited]

Determine if any control point is known to affect a chare array.

Definition at line 620 of file controlPoints.C.

References controlPointManager::affectsPrioritiesArray.

instrumentedPhase * controlPointManager::currentPhaseData (  )  [inherited]

The data for the current phase.

The data from the current phase.

Definition at line 632 of file controlPoints.C.

References controlPointManager::allData, instrumentedData::phases, and controlPointManager::s.

Referenced by controlPointManager::setTiming().

Here is the caller graph for this function:

instrumentedPhase * controlPointManager::previousPhaseData (  )  [inherited]

instrumentedPhase * controlPointManager::twoAgoPhaseData (  )  [inherited]

The data from two phases back.

Definition at line 650 of file controlPoints.C.

References controlPointManager::allData, controlPointManager::phase_id, instrumentedData::phases, and controlPointManager::s.

Referenced by controlPointManager::generatePlan().

Here is the caller graph for this function:

void controlPointManager::gotoNextPhase (  )  [inherited]

void controlPointManager::setTiming ( double  time  )  [inherited]

An application uses this to register an instrumented timing for this phase.

Definition at line 732 of file controlPoints.C.

References controlPointManager::currentPhaseData(), and instrumentedPhase::times.

Here is the call graph for this function:

void controlPointManager::requestIdleTime ( CkCallback  cb  )  [inherited]

Entry method called on all PEs to request memory usage.

Entry method called on all PEs to request CPU utilization statistics.

Definition at line 753 of file controlPoints.C.

References enableCPTracing, idle, TraceControlPoints::idleRatio(), idleTimeReductionType, localControlPointTracingInstance(), and TraceControlPoints::resetTimings().

Here is the call graph for this function:

void controlPointManager::gatherIdleTime ( CkReductionMsg msg  )  [inherited]

void controlPointManager::requestAll ( CkCallback  cb  )  [inherited]

Entry method called on all PEs to request Idle, Overhead, and Memory measurements.

Entry method called on all PEs to request CPU utilization statistics and memory usage.

Definition at line 799 of file controlPoints.C.

References allMeasuresReductionType, TraceControlPoints::b2, TraceControlPoints::b2mlen, TraceControlPoints::b3, TraceControlPoints::b3mlen, data, enableCPTracing, TraceControlPoints::grainSize(), idle, TraceControlPoints::idleRatio(), localControlPointTracingInstance(), PUP::m, TraceControlPoints::memoryUsageMB(), TraceControlPoints::overheadRatio(), TraceControlPoints::resetAll(), and PUP::t.

Here is the call graph for this function:

void controlPointManager::gatherAll ( CkReductionMsg msg  )  [inherited]

void controlPointManager::checkForShutdown (  )  [inherited]

Check to see if we are in the shutdown process, and handle it appropriately.

Definition at line 904 of file controlPoints.C.

References controlPointManager::alreadyRequestedAll, controlPointManager::alreadyRequestedIdleTime, controlPointManager::alreadyRequestedMemoryUsage, Converse::CkMyPe(), controlPointManager::doExitNow(), and controlPointManager::exitWhenReady.

Referenced by controlPointManager::gatherAll(), controlPointManager::gatherIdleTime(), and controlPointManager::gatherMemoryUsage().

Here is the call graph for this function:

Here is the caller graph for this function:

void controlPointManager::exitIfReady (  )  [inherited]

Start shutdown procedures for the controlPoints module(s).

CkContinueExit will be called once all outstanding operations have completed (e.g. waiting for idle time & memory usage to be gathered)

Definition at line 911 of file controlPoints.C.

References controlPointManager::alreadyRequestedAll, controlPointManager::alreadyRequestedIdleTime, controlPointManager::alreadyRequestedMemoryUsage, Converse::CkMyPe(), controlPointManager::doExitNow(), and controlPointManager::exitWhenReady.

Here is the call graph for this function:

void controlPointManager::doExitNow (  )  [inherited]

All outstanding operations have completed, so do the shutdown now. First write files to disk, and then call CkExit().

Definition at line 923 of file controlPoints.C.

References _threadEP, CkContinueExit(), Converse::CkMyPe(), and controlPointManager::writeOutputToDisk().

Referenced by controlPointManager::checkForShutdown(), and controlPointManager::exitIfReady().

Here is the call graph for this function:

Here is the caller graph for this function:

void controlPointManager::writeOutputToDisk (  )  [inherited]

Write data to disk (when needed), likely at exit.

Definition at line 930 of file controlPoints.C.

References controlPointManagerProxy, and writeDataFileAtShutdown.

Referenced by controlPointManager::doExitNow().

Here is the caller graph for this function:

void controlPointManager::requestMemoryUsage ( CkCallback  cb  )  [inherited]

Entry method called on all PEs to request memory usage.

Definition at line 938 of file controlPoints.C.

References CmiMaxMemoryUsage(), CmiResetMaxMemory(), PUP::m, and CkReduction::max_int.

Here is the call graph for this function:

void controlPointManager::gatherMemoryUsage ( CkReductionMsg msg  )  [inherited]

void controlPointManager::generatePlan (  )  [inherited]

void simplexScheme::adapt ( std::map< std::string, std::pair< int, int > > &  controlPointSpace,
std::map< std::string, int > &  newControlPoints,
const int  phase_id,
instrumentedData allData 
) [inherited]

Inform the control point framework that a named control point affects the priorities of some array.

Determine the next configuration to try using the Nelder Mead Simplex Algorithm.

This function decomposes the algorithm into a state machine that allows it to evaluate one or more configurations through subsequent clls to this function. The state diagram is pictured in the NelderMeadStateDiagram.pdf diagram.

At one point in the algorithm, n+1 parameter configurations must be evaluated, so a list of them will be created and they will be evaluated, one per call.

Currently there is no stopping criteria, but the simplex ought to contract down to a few close configurations, and hence not much change will happen after this point.

Definition at line 2269 of file controlPoints.C.

References simplexScheme::beginning, simplexScheme::best, simplexScheme::bestTime, c, simplexScheme::contracting, simplexScheme::doContraction(), simplexScheme::doExpansion(), simplexScheme::doneExpanding, simplexScheme::doReflection(), simplexScheme::expanding, simplexScheme::firstSimplexPhase, simplexScheme::keepInRange(), lb, n, name, simplexScheme::P, simplexScheme::p2Phase, instrumentedData::phases, simplexScheme::pointCoords(), simplexScheme::pPhase, randInt(), simplexScheme::reflecting, simplexScheme::simplexIndices, simplexScheme::simplexState, simplexScheme::stillContracting, simplexScheme::stillMustContractList, PUP::t, ub, simplexScheme::useBestKnown, simplexScheme::worst, simplexScheme::worstPhase, and simplexScheme::worstTime.

Referenced by controlPointManager::generatePlan().

Here is the call graph for this function:

Here is the caller graph for this function:

void simplexScheme::doReflection ( std::map< std::string, std::pair< int, int > > &  controlPointSpace,
std::map< std::string, int > &  newControlPoints,
const int  phase_id,
instrumentedData allData 
) [private, inherited]

void simplexScheme::doExpansion ( std::map< std::string, std::pair< int, int > > &  controlPointSpace,
std::map< std::string, int > &  newControlPoints,
const int  phase_id,
instrumentedData allData 
) [private, inherited]

Replace the newly tested reflection with a further expanded version of itself.

Definition at line 2565 of file controlPoints.C.

References simplexScheme::centroid, simplexScheme::doneExpanding, simplexScheme::gamma, simplexScheme::keepInRange(), lb, n, name, simplexScheme::P, simplexScheme::P2, simplexScheme::p2Phase, instrumentedData::phases, simplexScheme::printSimplex(), simplexScheme::simplexState, ub, and simplexScheme::worstPhase.

Referenced by simplexScheme::adapt().

Here is the call graph for this function:

Here is the caller graph for this function:

void simplexScheme::doContraction ( std::map< std::string, std::pair< int, int > > &  controlPointSpace,
std::map< std::string, int > &  newControlPoints,
const int  phase_id,
instrumentedData allData 
) [private, inherited]

Replace the newly tested reflection with a further expanded version of itself.

Definition at line 2609 of file controlPoints.C.

References simplexScheme::beta, simplexScheme::centroid, simplexScheme::contracting, simplexScheme::keepInRange(), lb, n, name, simplexScheme::P, simplexScheme::P2, simplexScheme::p2Phase, instrumentedData::phases, simplexScheme::printSimplex(), simplexScheme::simplexState, ub, simplexScheme::worst, and simplexScheme::worstPhase.

Referenced by simplexScheme::adapt().

Here is the call graph for this function:

Here is the caller graph for this function:

void simplexScheme::computeCentroidBestWorst ( std::map< std::string, std::pair< int, int > > &  controlPointSpace,
std::map< std::string, int > &  newControlPoints,
const int  phase_id,
instrumentedData allData 
) [private, inherited]

std::vector< double > simplexScheme::pointCoords ( instrumentedData allData,
int  i 
) [private, inherited]

Definition at line 2713 of file controlPoints.C.

References instrumentedData::phases.

Referenced by simplexScheme::adapt(), simplexScheme::computeCentroidBestWorst(), and simplexScheme::doReflection().

Here is the caller graph for this function:


Variable Documentation

Definition at line 18 of file trace-controlPoints.C.

CProxy_controlPointManager controlPointManagerProxy

Definition at line 47 of file controlPoints.C.

Referenced by controlPointMain::controlPointMain(), and randInt().

char CPDataFilename[512]

std::map<std::string, int> defaultControlPointValues

The control point values to be used for the first few phases if the strategy doesn't choose to do something else.

These probably come from the command line arguments, so are available only on PE 0

Definition at line 62 of file controlPoints.C.

Referenced by controlPoint(), and controlPointMain::controlPointMain().

A reduction type that combines idle time measurements (min/sum/max etc.).

Definition at line 124 of file controlPoints.C.

Referenced by registerCPReductions(), and controlPointManager::requestIdleTime().

A reduction type that combines idle, overhead, and memory measurements.

Definition at line 148 of file controlPoints.C.

Referenced by registerCPReductions(), and controlPointManager::requestAll().

CProxy_controlPointManager controlPointManagerProxy

Definition at line 47 of file controlPoints.C.

Referenced by controlPointMain::controlPointMain(), and randInt().

char CPDataFilename[512]

FLINKAGE int CMK_TYPEDEF_INT4* ub


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