BIE::TileRequestHandlerThread Class Reference

A helper class that handles work requests generated by integrators and replies to those requests from worker processes. More...

#include <TileRequestHandlerThread.h>

Collaboration diagram for BIE::TileRequestHandlerThread:

List of all members.

Public Member Functions

 TileRequestHandlerThread (int numWorkersInTileGroup, vector< int > *p_GroupIdToSystemId, vector< int > *p_SystemIdToGroupId, vector< MPI_Comm > *p_comms, Semaphore *numberSlavesReady)
 construct thread with the number of workers to manage and mappings from id-in-group to id-in-system and vice-versa.
void reInitialize (int tileGroupSize, vector< int > *groupIdToSystemId, vector< int > *systemIdToGroupId, vector< MPI_Comm > *comms, Semaphore *numberSlavesReady)
void setTileMasterWorkerThread (TileMasterWorkerThread *tileMasterWorkerThread)
 used to register a handle to the tileMasterWorkerThread
void masterWorkerRegister ()
 called by masterworker thread when it (re)registers itself with the this class.
void masterWorkerAvailable ()
 called by master worker thread when it wants to be considered for processing requests
void resetPause ()
 pause thread and put it into known state
void unPause ()
 restart thread paused with resetPause;
void stopPausedThread ()
 permanently stop a paused thread
virtual void run ()
 run the thread Override of thread framework method
virtual void enqueueRequest (EvaluationRequest *request)
 given a request for work from an integrator, enqueue it for later processing.
virtual void readAndProcessMessage (MPI_Status *status)
 Given a status from a sucessful MPI_Probe, read and process a message.
bool allWorking ()
 Helper method for TileMPIThread. True iff all slaves are working.
bool noneWorking ()
 Helper method for TileMPIThread. True iff no slaves are working.
bool noMPISlaves ()
 Helper method for TileMPIThread. True iff all there are no slaves(groupsize ==1).
bool workAvailable ()
 Helper method for TileMPIThread. True if there is workavailable.
virtual void final ()
 Override thread framework function that gets called when Run exits. Used for cleanup.

Public Attributes

Event MPIThreadLoopEvent
vector< double > startTime
vector< double > endTime
vector< vector< int > > histo
ElapsedTime workerWaitTime
ElapsedTime workWaitTime
ElapsedTime mutexWaitTime
ElapsedTime probeTime
ElapsedTime IprobeTime
ElapsedTime loopEventWaitTime
ElapsedTime thrqMutexHoldTime
ElapsedTime recvTime


Detailed Description

A helper class that handles work requests generated by integrators and replies to those requests from worker processes.

A single instance of this class (a thread), runs on the tile group master and communicates with all worker processors.


Member Function Documentation

virtual void BIE::TileRequestHandlerThread::enqueueRequest ( EvaluationRequest request  )  [virtual]

given a request for work from an integrator, enqueue it for later processing.

Locks queue during update.

virtual void BIE::TileRequestHandlerThread::readAndProcessMessage ( MPI_Status *  status  )  [virtual]

Given a status from a sucessful MPI_Probe, read and process a message.

This is a handler function called from the MPIThread


The documentation for this class was generated from the following file:

Send suggestions, questions, and feedback to WEINBERG at ASTRO dot UMASS dot EDU.
Documentation generated at Fri Mar 26 00:35:13 2010 by doxygen