AlpsKnowledgeBrokerMPI Class Reference

#include <AlpsKnowledgeBrokerMPI.h>

Inheritance diagram for AlpsKnowledgeBrokerMPI:
Inheritance graph
[legend]
Collaboration diagram for AlpsKnowledgeBrokerMPI:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 AlpsKnowledgeBrokerMPI ()
 Default construtor.
 AlpsKnowledgeBrokerMPI (int argc, char *argv[], AlpsModel &model)
 Useful construtor.
 ~AlpsKnowledgeBrokerMPI ()
 Destructor.
virtual int getProcRank () const
 Query the global rank of the process.
virtual int getMasterRank () const
 Query the global rank of the Master.
virtual AlpsProcessType getProcType () const
 Query the type (master, hub, or worker) of the process.
void initializeSearch (int argc, char *argv[], AlpsModel &model)
 This function.
void search (AlpsModel *model)
 Search best solution for a given model.
void rootSearch (AlpsTreeNode *root)
 This function.
Report search results.



virtual double getIncumbentValue () const
 The process queries the quality of the incumbent it stores.
virtual double getBestQuality () const
 The master queries the quality of the best solution it knowns.
virtual void printBestSolution (char *outputFile=0) const
 Master prints out the best solution that it knows.
virtual void searchLog ()
 Log search statistics.
Knowledge sharing functions



void sendKnowledge (AlpsKnowledgeType type, int sender, int receiver, char *&msgBuffer, int msgSize, int msgTag, MPI_Comm comm, bool blocking)
 Set knowlege.
void receiveKnowledge (AlpsKnowledgeType type, int sender, int receiver, char *&msgBuffer, int msgSize, int msgTag, MPI_Comm comm, MPI_Status *status, bool blocking)
 Receive knowlege.
void requestKnowledge (AlpsKnowledgeType type, int sender, int receiver, char *&msgBuffer, int msgSize, int msgTag, MPI_Comm comm, bool blocking)
 Request knowlege.

Protected Member Functions

void init ()
 Initialize member data.
AlpsReturnStatus doOneUnitWork (int unitWork, double unitTime, AlpsExitStatus &exitStatus, int &numNodesProcessed, int &depth, bool &betterSolution)
 Explore a subtree from subtree pool for certain units of work/time.
void processMessages (char *&buffer, MPI_Status &status, MPI_Request &request)
 Processing messages.
void rootInitMaster (AlpsTreeNode *root)
 Static load balancing: Root Initialization.
void rootInitHub ()
void rootInitWorker ()
void spiralMaster (AlpsTreeNode *root)
 Static load balancing: spiral.
void spiralHub ()
void spiralWorker ()
void deleteSubTrees ()
 Delete subTrees in pools and the active subtree.
void forwardModelKnowledge ()
void sendModelKnowledge (MPI_Comm comm, int receiver=-1)
 Set generated knowlege (related to model) to receiver.
void receiveModelKnowledge (MPI_Comm comm)
 Receive generated knowlege (related to model) from sender.
void masterForceHubTerm ()
 Master tell hubs to terminate due to reaching limits or other reason.
void hubForceWorkerTerm ()
 Hub tell workers to terminate due to reaching limits or other reason.
void changeWorkingSubTree (double &changeWorkThreshold)
 Change subtree to be explored if it is too worse.
void sendErrorCodeToMaster (int errorCode)
 Send error code to master.
void recvErrorCode (char *&bufLarge)
 Receive error code and set solution status.
void spiralRecvProcessNode ()
 Unpack the node, explore it and send load info to master.
void spiralDonateNode ()
 Unpack msg and donate a node.
Core member functions for master, hubs and workers.



void masterMain (AlpsTreeNode *root)
 Master generates subtrees and sends them to hubs in Round-Robin way.
void hubMain ()
 Hub generates subtrees and sends them to workers in Round-Robin way.
void workerMain ()
 Worker first receive subtrees, then start to explore them.
Load balancing member functions



void masterAskHubDonate (int donorID, int receiverID, double receiverWorkload)
 Master asks a hub to donate its workload to another hub.
void hubAskWorkerDonate (int donorID, int receiverID, double receiverWorkload)
 Hub asks a worker to donate its workload to another worker.
void updateWorkloadInfo ()
 Calculate the work quality and quantity on this process.
void donateWork (char *&buf, int tag, MPI_Status *status, int recvID=-1, double recvWL=0.0)
 A worker donate its workload to the specified worker.
void hubAllocateDonation (char *&buf, MPI_Status *status)
 Hub allocates the donated workload to its workers.
void hubBalanceWorkers ()
 Hub balances the workloads of its workers.
void hubSatisfyWorkerRequest (char *&buf, MPI_Status *status)
 Hub satisfies the workload rquest from a worker.
void hubReportStatus (int tag, MPI_Comm comm)
 A hub reports its status (workload and msg counts) to the master.
void hubUpdateCluStatus (char *&buf, MPI_Status *status, MPI_Comm comm)
 A hub unpacks the status of a worker from buffer.
void hubsShareWork (char *&buf, MPI_Status *status)
 Two hubs share their workload.
void masterBalanceHubs ()
 Master balance the workload of hubs.
void masterUpdateSysStatus (char *&buf, MPI_Status *status, MPI_Comm comm)
 Master unpack the status of a hub from buf and update system status.
void refreshSysStatus ()
 The master re-calculate the system status.
void refreshClusterStatus ()
 A hub adds its status to the cluster's status.
void workerReportStatus (int tag, MPI_Comm comm)
 A worker report its status (workload and msg counts) to its hub.
Node index functions // msg counts is modified inside



void workerAskIndices ()
 A worker ask for node index from master.
void workerRecvIndices (char *&bufLarge)
 A worker receive node index from master.
void masterSendIndices (char *&bufLarge)
 Master send a batch of node indices to the receiving worker.
Other message passing member functions



void broadcastModel (const int id, const int source)
 Broadcast the model from source to other processes.
void sendIncumbent ()
 Sent the incumbent value and rank to its two child if eixt.
bool unpackSetIncumbent (char *&buf, MPI_Status *status)
 unpack the incumbent value, then store it and the id of the process having the incumbent in AlpsDataPool.
void collectBestSolution (int destination)
 Send the best solution from the process having it to destination.
void tellMasterRecv ()
 Inform master that a proc has received workload during a load balance initialized by master.
void tellHubRecv ()
 Inform hub that a proc has received workload during a load balance initialized by a hub.
void packEncoded (AlpsEncoded *enc, char *&buf, int &size, int &position, MPI_Comm comm)
 Pack an AlpsEncoded instance into buf.
AlpsEncodedunpackEncoded (char *&buf, int &position, MPI_Comm comm, int size=-1)
 Unpack the given buffer into an AlpsEncoded instance.
void receiveSizeBuf (char *&buf, int sender, int tag, MPI_Comm comm, MPI_Status *status)
 Receive the size of buffer, allocate memory for buffer, then receive the message and put it in buffer.
void receiveRampUpNode (int sender, MPI_Comm comm, MPI_Status *status)
 First receive the size and the contend of a node, then construct a subtree with this received node.
void receiveSubTree (char *&buf, int sender, MPI_Status *status)
 Receive a subtree from the sender process and add it into the subtree pool.
void sendSizeBuf (char *&buf, int size, int position, const int target, const int tag, MPI_Comm comm)
 Send the size and content of a buffer to the target process.
void sendRampUpNode (const int target, MPI_Comm comm)
 Send the size and the content of the best node of a given subtree to the target process.
void sendNodeModelGen (int receiver, int doUnitWork)
 Send a node from rampUpSubTree's node pool and generated model knowledge.
bool sendSubTree (const int target, AlpsSubTree *&st, int tag)
 Send a given subtree to the target process.
void sendFinishInit (const int target, MPI_Comm comm)
 Send finish initialization signal to the target process.
Change message counts functions



void incSendCount (const char *how, int s=1)
 Increment the number of sent message.
void decSendCount (const char *how, int s=1)
 Decrement the number of sent message.
void incRecvCount (const char *how, int s=1)
 Increment the number of received message.
void decRecvCount (const char *how, int s=1)
 Decrement the number of sent message.

Protected Attributes

bool forceTerminate_
 Terminate due to reaching limits (time and node) or other reason.
bool blockTermCheck_
 Indicate whether do termination check.
bool blockHubReport_
 Indicate whether a hub need to report state to master.
bool blockWorkerReport_
 Indicate whether a worker need to report state to its hub.
bool blockAskForWork_
 Indicate whether a worker need to as for work from its hub.
char * attachBuffer_
 Buffer attached to MPI when sharing generated knowledge.
char * largeBuffer_
 Large message buffer.
char * largeBuffer2_
 Large message buffer.
char * smallBuffer_
 Small message buffer.
double masterBalancePeriod_
 The period that master do load balancing.
double hubReportPeriod_
 The period that a hub load balancing and report cluster status.
int modelGenID_
 The global rank of the process that share generated model knowledge.
int modelGenPos_
 Size of the shared knowledge.
AlpsSubTreerampUpSubTree_
 A subtree used in during up.
int unitWorkNodes_
 Number of nodes in one unit of work.
int haltSearch_
 Temporily halt search.
Process information



int processNum_
 The Number of processes launched.
int hubNum_
 The Number of hubs.
int globalRank_
 The rank of the process in MPI_COMM_WORLD.
MPI_Comm clusterComm_
 Communicator of the cluster to which the process belongs.
MPI_Comm hubComm_
 Communicator consists of all hubs.
MPI_Group hubGroup_
 MPI_Group consists of all hubs.
int clusterSize_
 The actual size of the cluster to which the process belongs.
int userClusterSize_
 The user reqested size of a cluster.
int clusterRank_
 The local rank of the process in clusterComm_.
int * hubRanks_
 The global ranks of the hubs.
int myHubRank_
 The global rank of its hub for a worker.
int masterRank_
 The global rank of the master.
AlpsProcessType processType_
 The AlpsProcessType of this process.
AlpsProcessTypeprocessTypeList_
 The AlpsProcessType of all process.
bool hubWork_
 Whether hub should also work as a worker.
MPI_Request subTreeRequest_
 Send subtree request.
MPI_Request solRequestL_
 Send model knoledge request.
MPI_Request solRequestR_
 The Number of processes launched.
MPI_Request modelKnowRequestL_
 Send model knoledge request.
MPI_Request modelKnowRequestR_
 The Number of processes launched.
MPI_Request forwardRequestL_
 Forward model knoledge request.
MPI_Request forwardRequestR_
 The Number of processes launched.
Incumbent data



double incumbentValue_
 Incumbent value.
int incumbentID_
 The process id that store the incumbent.
bool updateIncumbent_
 Indicate whether the incumbent value is updated between two checking point.
Workload balancing



double workQuality_
 The workload quality of the process.
double clusterWorkQuality_
 The workload quality of the cluster to which the process belong.
double systemWorkQuality_
 The workload quality of the whole system.
double * hubWorkQualities_
 The workload qualities of hubs.
double * workerWorkQualities_
 The workload qualities of workers in the cluster to which this proces belongs.
double workQuantity_
 The workload quantity of the workload on the process.
double clusterWorkQuantity_
 The workload quantity of the cluster to which the process belongs.
double systemWorkQuantity_
 The workload quantity of the whole system.
double systemWorkQuantityForce_
 The workload quantity of the whole system before forcing termination.
double * hubWorkQuantities_
 The workload quantities of all clusters/hubs.
double * workerWorkQuantities_
 The workload quantities of workers in the cluster to which this proces belongs.
bool * workerReported_
 Indicate which worker has been reported its work.
bool * hubReported_
 Indicate which hub has been reported its work.
bool allHubReported_
 Indicate whether all hubs have reported status to master at least once.
int masterDoBalance_
 Whether master do load balance.
int hubDoBalance_
 Whether a hub do load balance.
int * workerNodeProcesseds_
 To record how many nodes processed for each worker in a cluster.
int clusterNodeProcessed_
 To record how many nodes by a cluster.
int * hubNodeProcesseds_
 To record how many nodes processed for each hub.
int systemNodeProcessed_
 To record how many nodes processed by the system.
Message counts



int sendCount_
 The number of new messages sent by the process after last survey.
int recvCount_
 The number of new messages received by the process after last survey.
int clusterSendCount_
 The number of new messages sent by the processes in clusterComm_ after last survey.
int clusterRecvCount_
 The number of new messages received by the processes in clusterComm_ after last survey.
int systemSendCount_
 The total number of messages sent by the all processes.
int systemRecvCount_
 The total number of messages sent by the all processes.
Node index



int masterIndexBatch_
Parallel statistics



AlpsTimer masterTimer_
 Master timer.
AlpsTimer hubTimer_
 Hub timer.
AlpsTimer workerTimer_
 Worker timer.
double rampUpTime_
 The time spent in ramp up.
double rampDownTime_
 The time spent in ramp down.
double idleTime_
 The time spent waiting for work.
double msgTime_
 The time spent processing messages (include idle).
AlpsPsStats psStats_
 More statistics.

Private Member Functions

 AlpsKnowledgeBrokerMPI (const AlpsKnowledgeBrokerMPI &)
 Disable copy construct and assignment operator.
AlpsKnowledgeBrokerMPIoperator= (const AlpsKnowledgeBrokerMPI &)

Detailed Description

Definition at line 41 of file AlpsKnowledgeBrokerMPI.h.


Constructor & Destructor Documentation

AlpsKnowledgeBrokerMPI::AlpsKnowledgeBrokerMPI ( const AlpsKnowledgeBrokerMPI  )  [private]

Disable copy construct and assignment operator.

AlpsKnowledgeBrokerMPI::AlpsKnowledgeBrokerMPI (  )  [inline]

Default construtor.

NOTE: must call initializeSearch() later.

Definition at line 576 of file AlpsKnowledgeBrokerMPI.h.

AlpsKnowledgeBrokerMPI::AlpsKnowledgeBrokerMPI ( int  argc,
char *  argv[],
AlpsModel model 
) [inline]

Useful construtor.

Definition at line 584 of file AlpsKnowledgeBrokerMPI.h.

AlpsKnowledgeBrokerMPI::~AlpsKnowledgeBrokerMPI (  ) 

Destructor.


Member Function Documentation

AlpsKnowledgeBrokerMPI& AlpsKnowledgeBrokerMPI::operator= ( const AlpsKnowledgeBrokerMPI  )  [private]

Reimplemented from AlpsKnowledgeBroker.

void AlpsKnowledgeBrokerMPI::init (  )  [protected]

Initialize member data.

void AlpsKnowledgeBrokerMPI::masterMain ( AlpsTreeNode root  )  [protected]

Master generates subtrees and sends them to hubs in Round-Robin way.

Master periodically do inter-cluster load balancing, and termination check.

void AlpsKnowledgeBrokerMPI::hubMain (  )  [protected]

Hub generates subtrees and sends them to workers in Round-Robin way.

Hub do intra-cluster load balancing.

void AlpsKnowledgeBrokerMPI::workerMain (  )  [protected]

Worker first receive subtrees, then start to explore them.

Worker also peroidically check message and process message.

AlpsReturnStatus AlpsKnowledgeBrokerMPI::doOneUnitWork ( int  unitWork,
double  unitTime,
AlpsExitStatus exitStatus,
int &  numNodesProcessed,
int &  depth,
bool &  betterSolution 
) [protected]

Explore a subtree from subtree pool for certain units of work/time.

void AlpsKnowledgeBrokerMPI::processMessages ( char *&  buffer,
MPI_Status &  status,
MPI_Request &  request 
) [protected]

Processing messages.

void AlpsKnowledgeBrokerMPI::rootInitMaster ( AlpsTreeNode root  )  [protected]

Static load balancing: Root Initialization.

void AlpsKnowledgeBrokerMPI::rootInitHub (  )  [protected]
void AlpsKnowledgeBrokerMPI::rootInitWorker (  )  [protected]
void AlpsKnowledgeBrokerMPI::spiralMaster ( AlpsTreeNode root  )  [protected]

Static load balancing: spiral.

void AlpsKnowledgeBrokerMPI::spiralHub (  )  [protected]
void AlpsKnowledgeBrokerMPI::spiralWorker (  )  [protected]
void AlpsKnowledgeBrokerMPI::masterAskHubDonate ( int  donorID,
int  receiverID,
double  receiverWorkload 
) [protected]

Master asks a hub to donate its workload to another hub.

void AlpsKnowledgeBrokerMPI::hubAskWorkerDonate ( int  donorID,
int  receiverID,
double  receiverWorkload 
) [protected]

Hub asks a worker to donate its workload to another worker.

void AlpsKnowledgeBrokerMPI::updateWorkloadInfo (  )  [protected]

Calculate the work quality and quantity on this process.

void AlpsKnowledgeBrokerMPI::donateWork ( char *&  buf,
int  tag,
MPI_Status *  status,
int  recvID = -1,
double  recvWL = 0.0 
) [protected]

A worker donate its workload to the specified worker.

void AlpsKnowledgeBrokerMPI::hubAllocateDonation ( char *&  buf,
MPI_Status *  status 
) [protected]

Hub allocates the donated workload to its workers.

void AlpsKnowledgeBrokerMPI::hubBalanceWorkers (  )  [protected]

Hub balances the workloads of its workers.

void AlpsKnowledgeBrokerMPI::hubSatisfyWorkerRequest ( char *&  buf,
MPI_Status *  status 
) [protected]

Hub satisfies the workload rquest from a worker.

void AlpsKnowledgeBrokerMPI::hubReportStatus ( int  tag,
MPI_Comm  comm 
) [protected]

A hub reports its status (workload and msg counts) to the master.

void AlpsKnowledgeBrokerMPI::hubUpdateCluStatus ( char *&  buf,
MPI_Status *  status,
MPI_Comm  comm 
) [protected]

A hub unpacks the status of a worker from buffer.

void AlpsKnowledgeBrokerMPI::hubsShareWork ( char *&  buf,
MPI_Status *  status 
) [protected]

Two hubs share their workload.

void AlpsKnowledgeBrokerMPI::masterBalanceHubs (  )  [protected]

Master balance the workload of hubs.

void AlpsKnowledgeBrokerMPI::masterUpdateSysStatus ( char *&  buf,
MPI_Status *  status,
MPI_Comm  comm 
) [protected]

Master unpack the status of a hub from buf and update system status.

void AlpsKnowledgeBrokerMPI::refreshSysStatus (  )  [protected]

The master re-calculate the system status.

void AlpsKnowledgeBrokerMPI::refreshClusterStatus (  )  [protected]

A hub adds its status to the cluster's status.

void AlpsKnowledgeBrokerMPI::workerReportStatus ( int  tag,
MPI_Comm  comm 
) [protected]

A worker report its status (workload and msg counts) to its hub.

void AlpsKnowledgeBrokerMPI::workerAskIndices (  )  [protected]

A worker ask for node index from master.

void AlpsKnowledgeBrokerMPI::workerRecvIndices ( char *&  bufLarge  )  [protected]

A worker receive node index from master.

void AlpsKnowledgeBrokerMPI::masterSendIndices ( char *&  bufLarge  )  [protected]

Master send a batch of node indices to the receiving worker.

void AlpsKnowledgeBrokerMPI::broadcastModel ( const int  id,
const int  source 
) [protected]

Broadcast the model from source to other processes.

void AlpsKnowledgeBrokerMPI::sendIncumbent (  )  [protected]

Sent the incumbent value and rank to its two child if eixt.

bool AlpsKnowledgeBrokerMPI::unpackSetIncumbent ( char *&  buf,
MPI_Status *  status 
) [protected]

unpack the incumbent value, then store it and the id of the process having the incumbent in AlpsDataPool.

void AlpsKnowledgeBrokerMPI::collectBestSolution ( int  destination  )  [protected]

Send the best solution from the process having it to destination.

void AlpsKnowledgeBrokerMPI::tellMasterRecv (  )  [protected]

Inform master that a proc has received workload during a load balance initialized by master.

void AlpsKnowledgeBrokerMPI::tellHubRecv (  )  [protected]

Inform hub that a proc has received workload during a load balance initialized by a hub.

void AlpsKnowledgeBrokerMPI::packEncoded ( AlpsEncoded enc,
char *&  buf,
int &  size,
int &  position,
MPI_Comm  comm 
) [protected]

Pack an AlpsEncoded instance into buf.

Return filled buf and size of packed message. position: where to start if buf is allocated.

AlpsEncoded* AlpsKnowledgeBrokerMPI::unpackEncoded ( char *&  buf,
int &  position,
MPI_Comm  comm,
int  size = -1 
) [protected]

Unpack the given buffer into an AlpsEncoded instance.

void AlpsKnowledgeBrokerMPI::receiveSizeBuf ( char *&  buf,
int  sender,
int  tag,
MPI_Comm  comm,
MPI_Status *  status 
) [protected]

Receive the size of buffer, allocate memory for buffer, then receive the message and put it in buffer.

void AlpsKnowledgeBrokerMPI::receiveRampUpNode ( int  sender,
MPI_Comm  comm,
MPI_Status *  status 
) [protected]

First receive the size and the contend of a node, then construct a subtree with this received node.

void AlpsKnowledgeBrokerMPI::receiveSubTree ( char *&  buf,
int  sender,
MPI_Status *  status 
) [protected]

Receive a subtree from the sender process and add it into the subtree pool.

void AlpsKnowledgeBrokerMPI::sendSizeBuf ( char *&  buf,
int  size,
int  position,
const int  target,
const int  tag,
MPI_Comm  comm 
) [protected]

Send the size and content of a buffer to the target process.

void AlpsKnowledgeBrokerMPI::sendRampUpNode ( const int  target,
MPI_Comm  comm 
) [protected]

Send the size and the content of the best node of a given subtree to the target process.

void AlpsKnowledgeBrokerMPI::sendNodeModelGen ( int  receiver,
int  doUnitWork 
) [protected]

Send a node from rampUpSubTree's node pool and generated model knowledge.

bool AlpsKnowledgeBrokerMPI::sendSubTree ( const int  target,
AlpsSubTree *&  st,
int  tag 
) [protected]

Send a given subtree to the target process.

void AlpsKnowledgeBrokerMPI::sendFinishInit ( const int  target,
MPI_Comm  comm 
) [protected]

Send finish initialization signal to the target process.

void AlpsKnowledgeBrokerMPI::deleteSubTrees (  )  [protected]

Delete subTrees in pools and the active subtree.

void AlpsKnowledgeBrokerMPI::forwardModelKnowledge (  )  [protected]
void AlpsKnowledgeBrokerMPI::sendModelKnowledge ( MPI_Comm  comm,
int  receiver = -1 
) [protected]

Set generated knowlege (related to model) to receiver.

void AlpsKnowledgeBrokerMPI::receiveModelKnowledge ( MPI_Comm  comm  )  [protected]

Receive generated knowlege (related to model) from sender.

void AlpsKnowledgeBrokerMPI::incSendCount ( const char *  how,
int  s = 1 
) [protected]

Increment the number of sent message.

void AlpsKnowledgeBrokerMPI::decSendCount ( const char *  how,
int  s = 1 
) [protected]

Decrement the number of sent message.

void AlpsKnowledgeBrokerMPI::incRecvCount ( const char *  how,
int  s = 1 
) [protected]

Increment the number of received message.

void AlpsKnowledgeBrokerMPI::decRecvCount ( const char *  how,
int  s = 1 
) [protected]

Decrement the number of sent message.

void AlpsKnowledgeBrokerMPI::masterForceHubTerm (  )  [protected]

Master tell hubs to terminate due to reaching limits or other reason.

void AlpsKnowledgeBrokerMPI::hubForceWorkerTerm (  )  [protected]

Hub tell workers to terminate due to reaching limits or other reason.

void AlpsKnowledgeBrokerMPI::changeWorkingSubTree ( double &  changeWorkThreshold  )  [protected]

Change subtree to be explored if it is too worse.

void AlpsKnowledgeBrokerMPI::sendErrorCodeToMaster ( int  errorCode  )  [protected]

Send error code to master.

void AlpsKnowledgeBrokerMPI::recvErrorCode ( char *&  bufLarge  )  [protected]

Receive error code and set solution status.

void AlpsKnowledgeBrokerMPI::spiralRecvProcessNode (  )  [protected]

Unpack the node, explore it and send load info to master.

void AlpsKnowledgeBrokerMPI::spiralDonateNode (  )  [protected]

Unpack msg and donate a node.

virtual int AlpsKnowledgeBrokerMPI::getProcRank (  )  const [inline, virtual]

Query the global rank of the process.

Reimplemented from AlpsKnowledgeBroker.

Definition at line 598 of file AlpsKnowledgeBrokerMPI.h.

virtual int AlpsKnowledgeBrokerMPI::getMasterRank (  )  const [inline, virtual]

Query the global rank of the Master.

Reimplemented from AlpsKnowledgeBroker.

Definition at line 601 of file AlpsKnowledgeBrokerMPI.h.

virtual AlpsProcessType AlpsKnowledgeBrokerMPI::getProcType (  )  const [inline, virtual]

Query the type (master, hub, or worker) of the process.

Reimplemented from AlpsKnowledgeBroker.

Definition at line 604 of file AlpsKnowledgeBrokerMPI.h.

void AlpsKnowledgeBrokerMPI::initializeSearch ( int  argc,
char *  argv[],
AlpsModel model 
) [virtual]

This function.

  • initializes the message environment;
  • the master reads in ALPS and user's parameter sets. If the model data is input from file, then it reads in the model data.
  • sets up user params and model;
  • broadcast parameters from the master to all other processes;
  • creates MPI communicators and groups;
  • classifies process types, sets up subtree and pools
  • determines their hub's global rank for workers

Implements AlpsKnowledgeBroker.

void AlpsKnowledgeBrokerMPI::search ( AlpsModel model  )  [virtual]

Search best solution for a given model.

Reimplemented from AlpsKnowledgeBroker.

void AlpsKnowledgeBrokerMPI::rootSearch ( AlpsTreeNode root  )  [virtual]

This function.

  • broadcasts model data from the master to all other processes;
  • calls its associated main function to explore the sub tree;
  • collects the best solution found.

Implements AlpsKnowledgeBroker.

virtual double AlpsKnowledgeBrokerMPI::getIncumbentValue (  )  const [inline, virtual]

The process queries the quality of the incumbent it stores.

Implements AlpsKnowledgeBroker.

Definition at line 635 of file AlpsKnowledgeBrokerMPI.h.

virtual double AlpsKnowledgeBrokerMPI::getBestQuality (  )  const [inline, virtual]

The master queries the quality of the best solution it knowns.

Implements AlpsKnowledgeBroker.

Definition at line 639 of file AlpsKnowledgeBrokerMPI.h.

virtual void AlpsKnowledgeBrokerMPI::printBestSolution ( char *  outputFile = 0  )  const [virtual]

Master prints out the best solution that it knows.

Implements AlpsKnowledgeBroker.

virtual void AlpsKnowledgeBrokerMPI::searchLog (  )  [virtual]

Log search statistics.

Implements AlpsKnowledgeBroker.

void AlpsKnowledgeBrokerMPI::sendKnowledge ( AlpsKnowledgeType  type,
int  sender,
int  receiver,
char *&  msgBuffer,
int  msgSize,
int  msgTag,
MPI_Comm  comm,
bool  blocking 
)

Set knowlege.

void AlpsKnowledgeBrokerMPI::receiveKnowledge ( AlpsKnowledgeType  type,
int  sender,
int  receiver,
char *&  msgBuffer,
int  msgSize,
int  msgTag,
MPI_Comm  comm,
MPI_Status *  status,
bool  blocking 
)

Receive knowlege.

void AlpsKnowledgeBrokerMPI::requestKnowledge ( AlpsKnowledgeType  type,
int  sender,
int  receiver,
char *&  msgBuffer,
int  msgSize,
int  msgTag,
MPI_Comm  comm,
bool  blocking 
)

Request knowlege.


Member Data Documentation

The Number of processes launched.

Definition at line 55 of file AlpsKnowledgeBrokerMPI.h.

The Number of hubs.

Definition at line 58 of file AlpsKnowledgeBrokerMPI.h.

The rank of the process in MPI_COMM_WORLD.

Definition at line 61 of file AlpsKnowledgeBrokerMPI.h.

Communicator of the cluster to which the process belongs.

Definition at line 64 of file AlpsKnowledgeBrokerMPI.h.

MPI_Comm AlpsKnowledgeBrokerMPI::hubComm_ [protected]

Communicator consists of all hubs.

Definition at line 67 of file AlpsKnowledgeBrokerMPI.h.

MPI_Group AlpsKnowledgeBrokerMPI::hubGroup_ [protected]

MPI_Group consists of all hubs.

Definition at line 70 of file AlpsKnowledgeBrokerMPI.h.

The actual size of the cluster to which the process belongs.

Definition at line 73 of file AlpsKnowledgeBrokerMPI.h.

The user reqested size of a cluster.

Definition at line 76 of file AlpsKnowledgeBrokerMPI.h.

The local rank of the process in clusterComm_.

Definition at line 79 of file AlpsKnowledgeBrokerMPI.h.

The global ranks of the hubs.

Definition at line 82 of file AlpsKnowledgeBrokerMPI.h.

The global rank of its hub for a worker.

Definition at line 85 of file AlpsKnowledgeBrokerMPI.h.

The global rank of the master.

Definition at line 88 of file AlpsKnowledgeBrokerMPI.h.

The AlpsProcessType of this process.

Definition at line 91 of file AlpsKnowledgeBrokerMPI.h.

The AlpsProcessType of all process.

Definition at line 94 of file AlpsKnowledgeBrokerMPI.h.

Whether hub should also work as a worker.

Definition at line 97 of file AlpsKnowledgeBrokerMPI.h.

MPI_Request AlpsKnowledgeBrokerMPI::subTreeRequest_ [protected]

Send subtree request.

Definition at line 100 of file AlpsKnowledgeBrokerMPI.h.

MPI_Request AlpsKnowledgeBrokerMPI::solRequestL_ [protected]

Send model knoledge request.

Definition at line 103 of file AlpsKnowledgeBrokerMPI.h.

MPI_Request AlpsKnowledgeBrokerMPI::solRequestR_ [protected]

The Number of processes launched.

Definition at line 104 of file AlpsKnowledgeBrokerMPI.h.

Send model knoledge request.

Definition at line 107 of file AlpsKnowledgeBrokerMPI.h.

The Number of processes launched.

Definition at line 108 of file AlpsKnowledgeBrokerMPI.h.

Forward model knoledge request.

Definition at line 111 of file AlpsKnowledgeBrokerMPI.h.

The Number of processes launched.

Definition at line 112 of file AlpsKnowledgeBrokerMPI.h.

Incumbent value.

Definition at line 120 of file AlpsKnowledgeBrokerMPI.h.

The process id that store the incumbent.

Definition at line 123 of file AlpsKnowledgeBrokerMPI.h.

Indicate whether the incumbent value is updated between two checking point.

Definition at line 127 of file AlpsKnowledgeBrokerMPI.h.

The workload quality of the process.

Definition at line 135 of file AlpsKnowledgeBrokerMPI.h.

The workload quality of the cluster to which the process belong.

Definition at line 138 of file AlpsKnowledgeBrokerMPI.h.

The workload quality of the whole system.

Definition at line 141 of file AlpsKnowledgeBrokerMPI.h.

The workload qualities of hubs.

Definition at line 144 of file AlpsKnowledgeBrokerMPI.h.

The workload qualities of workers in the cluster to which this proces belongs.

Number of nodes is used as the quantities criteria.

Definition at line 148 of file AlpsKnowledgeBrokerMPI.h.

The workload quantity of the workload on the process.

Definition at line 151 of file AlpsKnowledgeBrokerMPI.h.

The workload quantity of the cluster to which the process belongs.

Definition at line 154 of file AlpsKnowledgeBrokerMPI.h.

The workload quantity of the whole system.

Definition at line 157 of file AlpsKnowledgeBrokerMPI.h.

The workload quantity of the whole system before forcing termination.

Definition at line 160 of file AlpsKnowledgeBrokerMPI.h.

The workload quantities of all clusters/hubs.

Definition at line 163 of file AlpsKnowledgeBrokerMPI.h.

The workload quantities of workers in the cluster to which this proces belongs.

Definition at line 167 of file AlpsKnowledgeBrokerMPI.h.

Indicate which worker has been reported its work.

Definition at line 170 of file AlpsKnowledgeBrokerMPI.h.

Indicate which hub has been reported its work.

Definition at line 173 of file AlpsKnowledgeBrokerMPI.h.

Indicate whether all hubs have reported status to master at least once.

Definition at line 176 of file AlpsKnowledgeBrokerMPI.h.

Whether master do load balance.

0: do; >0: blocked.

Definition at line 179 of file AlpsKnowledgeBrokerMPI.h.

Whether a hub do load balance.

0: do; >0: blocked.

Definition at line 182 of file AlpsKnowledgeBrokerMPI.h.

To record how many nodes processed for each worker in a cluster.

Definition at line 185 of file AlpsKnowledgeBrokerMPI.h.

To record how many nodes by a cluster.

Definition at line 188 of file AlpsKnowledgeBrokerMPI.h.

To record how many nodes processed for each hub.

Definition at line 191 of file AlpsKnowledgeBrokerMPI.h.

To record how many nodes processed by the system.

Definition at line 194 of file AlpsKnowledgeBrokerMPI.h.

The number of new messages sent by the process after last survey.

Definition at line 202 of file AlpsKnowledgeBrokerMPI.h.

The number of new messages received by the process after last survey.

Definition at line 205 of file AlpsKnowledgeBrokerMPI.h.

The number of new messages sent by the processes in clusterComm_ after last survey.

Definition at line 209 of file AlpsKnowledgeBrokerMPI.h.

The number of new messages received by the processes in clusterComm_ after last survey.

Definition at line 213 of file AlpsKnowledgeBrokerMPI.h.

The total number of messages sent by the all processes.

Definition at line 216 of file AlpsKnowledgeBrokerMPI.h.

The total number of messages sent by the all processes.

Definition at line 219 of file AlpsKnowledgeBrokerMPI.h.

Definition at line 226 of file AlpsKnowledgeBrokerMPI.h.

Master timer.

Definition at line 234 of file AlpsKnowledgeBrokerMPI.h.

Hub timer.

Definition at line 237 of file AlpsKnowledgeBrokerMPI.h.

Worker timer.

Definition at line 240 of file AlpsKnowledgeBrokerMPI.h.

The time spent in ramp up.

Definition at line 243 of file AlpsKnowledgeBrokerMPI.h.

The time spent in ramp down.

Definition at line 246 of file AlpsKnowledgeBrokerMPI.h.

The time spent waiting for work.

Definition at line 249 of file AlpsKnowledgeBrokerMPI.h.

The time spent processing messages (include idle).

Definition at line 252 of file AlpsKnowledgeBrokerMPI.h.

More statistics.

Definition at line 255 of file AlpsKnowledgeBrokerMPI.h.

Terminate due to reaching limits (time and node) or other reason.

Definition at line 259 of file AlpsKnowledgeBrokerMPI.h.

Indicate whether do termination check.

Definition at line 262 of file AlpsKnowledgeBrokerMPI.h.

Indicate whether a hub need to report state to master.

Definition at line 265 of file AlpsKnowledgeBrokerMPI.h.

Indicate whether a worker need to report state to its hub.

Definition at line 268 of file AlpsKnowledgeBrokerMPI.h.

Indicate whether a worker need to as for work from its hub.

Definition at line 271 of file AlpsKnowledgeBrokerMPI.h.

Buffer attached to MPI when sharing generated knowledge.

Definition at line 274 of file AlpsKnowledgeBrokerMPI.h.

Large message buffer.

Definition at line 277 of file AlpsKnowledgeBrokerMPI.h.

Large message buffer.

Used for sharing model knowledge

Definition at line 280 of file AlpsKnowledgeBrokerMPI.h.

Small message buffer.

Definition at line 283 of file AlpsKnowledgeBrokerMPI.h.

The period that master do load balancing.

It changes as search progresses.

Definition at line 287 of file AlpsKnowledgeBrokerMPI.h.

The period that a hub load balancing and report cluster status.

It changes as search progresses.

Definition at line 291 of file AlpsKnowledgeBrokerMPI.h.

The global rank of the process that share generated model knowledge.

Definition at line 294 of file AlpsKnowledgeBrokerMPI.h.

Size of the shared knowledge.

Definition at line 297 of file AlpsKnowledgeBrokerMPI.h.

A subtree used in during up.

Definition at line 300 of file AlpsKnowledgeBrokerMPI.h.

Number of nodes in one unit of work.

Definition at line 303 of file AlpsKnowledgeBrokerMPI.h.

Temporily halt search.

Definition at line 306 of file AlpsKnowledgeBrokerMPI.h.


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

Generated on 15 Mar 2015 for Coin-All by  doxygen 1.6.1