Class for LoadCoordinator. More...
#include <scipParaLoadCoordinator.h>
Public Member Functions | |
| ScipParaLoadCoordinator (UG::ParaComm *inComm, UG::ParaParamSet *inParaParamSet, UG::ParaInitiator *inParaInitiator, bool *inRacingSolversExist, UG::ParaTimer *inParaTimer, UG::ParaDeterministicTimer *inDetTimer) | |
| constructor More... | |
| ScipParaLoadCoordinator (int inNhanders, UG::ParaComm *inComm, UG::ParaParamSet *inParaParamSet, UG::ParaInitiator *paraInitiator, bool *racingSolversExist, UG::ParaTimer *paraTimer, UG::ParaDeterministicTimer *detTimer) | |
| constructor More... | |
| virtual | ~ScipParaLoadCoordinator () |
| destructor More... | |
Public Member Functions inherited from BbParaLoadCoordinator | |
| BbParaLoadCoordinator (int inNhanders, ParaComm *inComm, ParaParamSet *inParaParamSet, ParaInitiator *paraInitiator, bool *racingSolversExist, ParaTimer *paraTimer, ParaDeterministicTimer *detTimer) | |
| constructor More... | |
| virtual | ~BbParaLoadCoordinator () |
| destructor More... | |
| virtual void | warmStart () |
| warm start (restart) More... | |
| virtual void | run (ParaTask *paraNode) |
| run for normal ramp-up More... | |
| virtual void | run (ParaTask *paraNode, int nRacingSolvers, ParaRacingRampUpParamSet **racingRampUpParams) |
| run for racing ramp-up More... | |
| void | setGlobalBestIncumbentSolution (ParaSolution *sol) |
| set global best incumbent solution More... | |
Public Member Functions inherited from ParaLoadCoordinator | |
| ParaLoadCoordinator (int nHandlers, ParaComm *inComm, ParaParamSet *inParaParamSet, ParaInitiator *paraInitiator, bool *racingSolversExist, ParaTimer *paraTimer, ParaDeterministicTimer *detTimer) | |
| constructor More... | |
| virtual | ~ParaLoadCoordinator () |
| destructor More... | |
| virtual void | interrupt () |
| interrupt from out side More... | |
| virtual void | warmStart () |
| warm start (restart) More... | |
| virtual void | run (ParaTask *paraTask) |
| run for normal ramp-up More... | |
| virtual void | run (ParaTask *paraTask, int nRacingSolvers, ParaRacingRampUpParamSet **racingRampUpParams) |
| run for racing ramp-up More... | |
| virtual void | parallelDispatch () |
| execute UG parallel solver totally solver dependent way More... | |
Private Types | |
| typedef int(ScipParaLoadCoordinator::* | ScipMessageHandlerFunctionPointer) (int, int) |
Private Member Functions | |
| int | processTagInitialStat (int source, int tag) |
| Message handlers. More... | |
Additional Inherited Members | |
Protected Types inherited from BbParaLoadCoordinator | |
| typedef int(UG::BbParaLoadCoordinator::* | BbMessageHandlerFunctionPointer) (int, int) |
Protected Types inherited from ParaLoadCoordinator | |
| typedef int(UG::ParaLoadCoordinator::* | MessageHandlerFunctionPointer) (int, int) |
Protected Member Functions inherited from BbParaLoadCoordinator | |
| void | terminateAllSolvers () |
| terminate all solvers More... | |
| virtual void | sendRetryRampUpToAllSolvers () |
| notify retry ramp-up to all solvers More... | |
| virtual void | sendInterruptRequest () |
| send interrupt request to all solvers More... | |
| virtual bool | updateSolution (BbParaSolution *) |
| update incumbent solution More... | |
| virtual void | sendIncumbentValue (int receivedRank) |
| send incumbent value More... | |
| virtual void | sendCutOffValue (int receivedRank) |
| send cut off value More... | |
| virtual int | processTagTask (int source, int tag) |
| Message handlers. More... | |
| virtual int | processTagSolution (int source, int tag) |
| function to process TagSolution message More... | |
| virtual int | processTagSolverState (int source, int tag) |
| function to process TagSolverState message More... | |
| virtual int | processTagCompletionOfCalculation (int source, int tag) |
| function to process TagCompletionOfCalculation message More... | |
| virtual int | processTagTermStateForInterruption (int source, int tag) |
| function to process TagTermStateForInterruption message More... | |
| virtual int | processTagAnotherNodeRequest (int source, int tag) |
| function to process TagAnotherNodeRequest message More... | |
| virtual int | processTagAllowToBeInCollectingMode (int source, int tag) |
| function to process TagAllowToBeInCollectingMode message More... | |
| virtual int | processTagLbBoundTightened (int source, int tag) |
| function to process TagLbBoundTightened message More... | |
| virtual int | processTagUbBoundTightened (int source, int tag) |
| function to process TagUbBoundTightened message More... | |
| virtual int | processTagSelfSplitFinished (int source, int tag) |
| function to process TagSelfSplitFinished message More... | |
| virtual int | processTagNewSubtreeRootNode (int source, int tag) |
| function to process TagNewSubtreeRootNode message More... | |
| virtual int | processTagSubtreeRootNodeStartComputation (int source, int tag) |
| function to process TagSubtreeRootNodeStartComputation message More... | |
| virtual int | processTagSubtreeRootNodeToBeRemoved (int source, int tag) |
| function to process TagSubtreeRootNodeToBeRemoved message More... | |
| virtual int | processTagReassignSelfSplitSubtreeRootNode (int source, int tag) |
| function to process TagReassignSelfSplitSubtreeRootNode message More... | |
| virtual int | processTagSelfSlpitNodeCalcuationState (int source, int tag) |
| function to process TagSelfSlpitNodeCalcuationState message More... | |
| virtual int | processTagSelfSplitTermStateForInterruption (int source, int tag) |
| function to process TagSelfSplitTermStateForInterruption message More... | |
| virtual int | processRacingRampUpTagSolverState (int source, int tag) |
| message handlers specialized for racing ramp-up More... | |
| virtual int | processRacingRampUpTagCompletionOfCalculation (int source, int tag) |
| function to process TagCompletionOfCalculation message in racing ramp-up stage More... | |
| virtual void | run () |
| run function to start main process More... | |
| virtual void | updateCheckpointFiles () |
| function to update checkpoint files More... | |
| virtual void | writeLoadCoordinatorStatisticsToCheckpointFile (gzstream::ogzstream &loadCoordinatorStatisticsStream, int nSolverInfo, double globalBestDualBoundValue, double externalGlobalBestDualBoundValue) |
| write LoadCorrdinator statistics to checkpoint file More... | |
| virtual void | writePreviousStatisticsInformation () |
| write previous run's statistics information More... | |
| virtual bool | sendParaTasksToIdleSolvers () |
| send ParaNodes to idle solvers More... | |
| virtual void | inactivateRacingSolverPool (int rank) |
| inactivate racing solver pool More... | |
| virtual void | outputTabularSolvingStatusHeader () |
| output tabular solving status header More... | |
| virtual void | outputTabularSolvingStatus (char incumbent) |
| output solving status in tabular form More... | |
| virtual void | writeSubtreeInfo (int source, ParaCalculationState *calcState) |
| write subtree info. More... | |
| virtual void | restartInRampDownPhase () |
| restart in ramp-down phase More... | |
| virtual int | restartRacing () |
| restart racing More... | |
| virtual void | newRacing () |
| start a new racing More... | |
| virtual void | changeSearchStrategyOfAllSolversToBestBoundSearch () |
| change search strategy of all solvers to best bound bound search strategy More... | |
| virtual void | changeSearchStrategyOfAllSolversToOriginalSearch () |
| change search strategy of all solvers to original search strategy More... | |
| virtual bool | isRacingStage () |
| check if current stage is in racing or not More... | |
| virtual bool | isGapReached () |
| check if Gap reached or not More... | |
Protected Member Functions inherited from ParaLoadCoordinator | |
| virtual void | writeTransferLog (int rank, ParaCalculationState *state) |
| write transfer log More... | |
| virtual void | writeTransferLog (int rank) |
| write transfer log More... | |
| virtual void | writeTransferLogInRacing (int rank, ParaCalculationState *state) |
| write transfer log in racing More... | |
| virtual void | writeTransferLogInRacing (int rank) |
| write transfer log in racing More... | |
| virtual void | sendRampUpToAllSolvers () |
| notify ramp-up to all solvers More... | |
| virtual void | sendRetryRampUpToAllSolvers () |
| notify retry ramp-up to all solvers (Maybe, this remove from this base class) More... | |
| virtual void | sendInterruptRequest ()=0 |
| send interrupt request to all solvers More... | |
| virtual void | terminateAllSolvers () |
| terminate all solvers More... | |
| int | createNewGlobalSubtreeId () |
| create a new global subtree Id More... | |
| virtual int | processTagTask (int source, int tag)=0 |
| Message handlers. More... | |
| virtual int | processTagSolution (int source, int tag)=0 |
| function to process TagSolution message More... | |
| virtual int | processTagSolverState (int source, int tag)=0 |
| function to process TagSolverState message More... | |
| virtual int | processTagCompletionOfCalculation (int source, int tag)=0 |
| function to process TagCompletionOfCalculation message More... | |
| virtual int | processTagTerminated (int source, int tag) |
| function to process TagTerminated message More... | |
| virtual int | processTagHardTimeLimit (int source, int tag) |
| function to process TagHardTimeLimit message More... | |
| virtual int | processTagToken (int source, int tag) |
| function to process TagToken message More... | |
| virtual int | processRacingRampUpTagSolverState (int source, int tag)=0 |
| message handlers specialized for racing ramp-up More... | |
| virtual int | processRacingRampUpTagCompletionOfCalculation (int source, int tag)=0 |
| function to process TagCompletionOfCalculation message in racing ramp-up stage More... | |
| void | sendTagToAllSolvers (const int tag) |
| send specified tag to all solvers More... | |
| virtual void | run ()=0 |
| run function to start main process More... | |
| virtual bool | sendParaTasksToIdleSolvers ()=0 |
| send ParaTasks to idle solvers More... | |
| virtual void | updateCheckpointFiles ()=0 |
| function to update checkpoint files More... | |
Protected Attributes inherited from BbParaLoadCoordinator | |
| bool | initialNodesGenerated |
| indicates that initial nodes have been generated More... | |
| int | firstCollectingModeState |
| status of first collecting mode -1 : have not been in collecting mode 0 : once in collecting mode 1 : collecting mode is terminated once More... | |
| bool | isCollectingModeRestarted |
| this flag indicate if a collecting mode is restarted or not More... | |
| bool | isBreakingFinised |
| indicate that breaking is finished or not if bootstrap ramp-up is not specified, this flag should be always true More... | |
| int | breakingSolverId |
| all nodes collecting solver Id: -1: no collecting More... | |
| int | nReplaceToBetterNode |
| the number of replacing to a better nodes More... | |
| int | nNormalSelection |
| number of normal node selection to a random node selection More... | |
| bool | winnerSolverNodesCollected |
| indicate that all winner solver nodes has been collected More... | |
| bool | primalUpdated |
| indicate that primal solution was updated or not More... | |
| bool | restartingRacing |
| indicate that racing ramp-up is restarting More... | |
| int | nRestartedRacing |
| number of racing stages restarted More... | |
| BbParaNodePool * | paraNodePool |
| Pools in LoadCorrdinator. More... | |
| BbParaLoadCoordinatorTerminationState | lcts |
| LoadCoordinatorTerminationState: counters and times. More... | |
| double | statEmptyNodePoolTime |
| To measure how long does node pool stay in empty situation. More... | |
| int | minDepthInWinnerSolverNodes |
| racing winner information More... | |
| int | maxDepthInWinnerSolverNodes |
| maximum depth of open nodes in the winner solver tree More... | |
| bool | merging |
| for merging nodes More... | |
| int | nBoundChangesOfBestNode |
| the number of fixed variables of the best node The followings are used temporary to generate merge nodes info More... | |
| BbParaNodesMerger * | nodesMerger |
| pointer to nodes merger object, which merges nodes More... | |
| size_t | nCollectedSolvers |
| counter to check if all solvers are terminated or not More... | |
| double | previousTabularOutputTime |
| to keep tabular solving status output time More... | |
| double | averageDualBoundGain |
| average dual bound gain: could be negative value at restart More... | |
| int | nAverageDualBoundGain |
| number of nodes whose dual bound gain are counted More... | |
| std::deque< double > | lastSeveralDualBoundGains |
| keep last several dual bound gains More... | |
| double | averageLastSeveralDualBoundGains |
| average dual bound gains of last several ones More... | |
| double | starvingTime |
| start time of starving active solvers More... | |
| double | hugeImbalanceTime |
| start time of huge imbalance situation More... | |
| BbParaNodePool * | paraNodePoolToRestart |
| ParaNode pool to restart in ramp-down phase. More... | |
| BbParaNodePool * | paraNodePoolBufferToRestart |
| ParaNode pool for buffering ParaNodes in huge imbalance situation. More... | |
| BbParaNodePool * | paraNodePoolBufferToGenerateCPF |
| This is used for GenerateReducedCheckpointFiles. More... | |
| BbParaNodePool * | paraNodeToKeepCheckpointFileNodes |
| The first n nodes may always keep in checkpoint file, that is, the n nodes are not processed in this run. More... | |
| BbParaNodePool * | unprocessedParaNodes |
| The last n nodes may always keep in checkpoint file, that is, the n nodes are not processed in this run. More... | |
| std::set< int > * | selfSplitFinisedSolvers |
| indicate selfSplit finished solvers More... | |
| bool | outputTabularSolvingStatusFlag |
| output streams and flags which indicate the output is specified or not More... | |
| std::ofstream | ofsTabularSolvingStatus |
| ofstream for solving status in tabular form More... | |
| std::ostream * | osTabularSolvingStatus |
| ostream for solving status in tabular form to switch output location More... | |
| bool | logSubtreeInfoFlag |
| indicate if subtree info. is logged or not More... | |
| std::ofstream | ofsLogSubtreeInfo |
| ofstream for subtree info. More... | |
| std::ostream * | osLogSubtreeInfo |
| ostram for subtree info. to switch output location More... | |
| bool | allCompInfeasibleAfterSolution |
| indicate that all computations are infeasible after a feasible solution More... | |
| double | minmalDualBoundNormalTermSolvers |
| minimal dual bound for normal termination solvers More... | |
| bool | warmStartNodeTransferring |
| indicate that the first node transferring at warm start (restart) More... | |
| bool | hugeImbalance |
| indicate that a huge imbalance in solvers is detected More... | |
| bool | isHeaderPrinted |
| indicate if heeader is printed or not More... | |
| bool | givenGapIsReached |
| shows if specified gap is reached or not More... | |
| bool | aSolverTerminatedWithOptimality |
| indicate if a solver terminated with proving optimality of the problem More... | |
| BbParaSolution * | pendingSolution |
| pending solution during merging More... | |
Protected Attributes inherited from ParaLoadCoordinator | |
| int | nHandlers |
| number of valid handlers More... | |
| MessageHandlerFunctionPointer * | messageHandler |
| message handlers table for primary phase More... | |
| MessageHandlerFunctionPointer * | racingRampUpMessageHandler |
| message handlers table for racing stage More... | |
| int | globalSubtreeIdGen |
| global subtree id generator More... | |
| ParaComm * | paraComm |
| communicator used More... | |
| ParaParamSet * | paraParams |
| UG parameter set. More... | |
| ParaInitiator * | paraInitiator |
| initiator More... | |
| bool * | racingSolversExist |
| indicate if racing solver exits or not, true: exists More... | |
| bool | restarted |
| indicates that this run is restarted from checkpoint files More... | |
| RunningPhase | runningPhase |
| status of LoadCoordinator More... | |
| bool | computationIsInterrupted |
| indicate that current computation is interrupted or not More... | |
| bool | interruptedFromControlTerminal |
| interrupted from control terminal More... | |
| bool | hardTimeLimitIsReached |
| indicate that hard time limit is reached or not More... | |
| bool | memoryLimitIsReached |
| indicate if memory limit is reached or not in a solver, when base solver has memory management feature More... | |
| bool | interruptIsRequested |
| indicate that all solver interrupt message is requested or not More... | |
| ParaSolverPool * | paraSolverPool |
| Pools in LoadCorrdinator. More... | |
| ParaRacingSolverPool * | paraRacingSolverPool |
| racing solver pool More... | |
| long long | nSolvedInInterruptedRacingSolvers |
| number of tasks solved of the winner solver in the racing solvers More... | |
| long long | nTasksLeftInInterruptedRacingSolvers |
| number of of tasks remains of the the winner solver in the racing solvers More... | |
| double | previousCheckpointTime |
| For checkpoint. More... | |
| char | lastCheckpointTimeStr [26] |
| lastCheckpointTimeStr[0] == ' ' means no checkpoint More... | |
| double | eps |
| epsilon More... | |
| int | racingWinner |
| racing winner information More... | |
| ParaRacingRampUpParamSet * | racingWinnerParams |
| racing winner parameter set More... | |
| bool | racingTermination |
| racing termination information More... | |
| int | nSolvedRacingTermination |
| number of tasks solved at the racing termination solver More... | |
| size_t | nTerminated |
| counter to check if all solvers are terminated or not More... | |
| ParaTimer * | paraTimer |
| Timers for LoadCoordinator. More... | |
| ParaDeterministicTimer * | paraDetTimer |
| deterministic timer used in case of deterministic mode this timer need to be created in case of deterministic mode More... | |
| bool | logSolvingStatusFlag |
| output streams and flags which indicate the output is specified or not More... | |
| std::ofstream | ofsLogSolvingStatus |
| ofstream for solving status More... | |
| std::ostream * | osLogSolvingStatus |
| ostram for solving status to switch output location More... | |
| bool | logTasksTransferFlag |
| indicate if task transfer info. is logged or not More... | |
| std::ofstream | ofsLogTasksTransfer |
| ofstream for task transfer info. More... | |
| std::ostream * | osLogTasksTransfer |
| ostream for task transfer info. to switch output location More... | |
| std::ofstream | ofsStatisticsFinalRun |
| ofstream for statistics of the final run More... | |
| std::ostream * | osStatisticsFinalRun |
| ostream for statistics of the final run More... | |
| std::ofstream | ofsStatisticsRacingRampUp |
| ofstream for statistics for racing solvers More... | |
| std::ostream * | osStatisticsRacingRampUp |
| ostream for statistics for racing solvers to switch output location More... | |
| ParaSolution * | pendingSolution |
| pending solution during merging More... | |
| bool | terminationIssued |
| indicate termination request is issued More... | |
| std::mutex | routineMutex |
| used to exclusive control of routines More... | |
Class for LoadCoordinator.
Definition at line 73 of file scipParaLoadCoordinator.h.
|
private |
Definition at line 76 of file scipParaLoadCoordinator.h.
| ScipParaLoadCoordinator | ( | UG::ParaComm * | inComm, |
| UG::ParaParamSet * | inParaParamSet, | ||
| UG::ParaInitiator * | inParaInitiator, | ||
| bool * | inRacingSolversExist, | ||
| UG::ParaTimer * | inParaTimer, | ||
| UG::ParaDeterministicTimer * | inDetTimer | ||
| ) |
constructor
| inComm | communicator used |
| inParaParamSet | UG parameter set used |
| inParaInitiator | ParaInitiator for initialization of solving algorithm |
| inRacingSolversExist | indicate racing solver exits or not |
| inParaTimer | ParaTimer used |
| inDetTimer | DeterministicTimer used |
Definition at line 98 of file scipParaLoadCoordinator.h.
| ScipParaLoadCoordinator | ( | int | inNhanders, |
| UG::ParaComm * | inComm, | ||
| UG::ParaParamSet * | inParaParamSet, | ||
| UG::ParaInitiator * | paraInitiator, | ||
| bool * | racingSolversExist, | ||
| UG::ParaTimer * | paraTimer, | ||
| UG::ParaDeterministicTimer * | detTimer | ||
| ) |
constructor
register message handlers
| inNhanders | number of valid message handlers |
| inComm | communicator used |
| inParaParamSet | UG parameter set used |
| paraInitiator | ParaInitiator for initialization of solving algorithm |
| racingSolversExist | indicate racing solver exits or not |
| paraTimer | ParaTimer used |
| detTimer | DeterministicTimer used |
Definition at line 60 of file scipParaLoadCoordinator.cpp.
References ParaParamSet::getIntParamValue(), ParaLoadCoordinator::messageHandler, ParaLoadCoordinator::paraParams, ScipParaLoadCoordinator::processTagInitialStat(), UG::RampUpPhaseProcess, and ParaSCIP::TagInitialStat.
|
virtual |
destructor
Definition at line 137 of file scipParaLoadCoordinator.h.
|
private |
Message handlers.
function to process TagInitialStat message
| source | source solver rank |
| tag | TagInitialStat |
Definition at line 104 of file scipParaLoadCoordinator.cpp.
References DEF_SCIP_PARA_COMM, ScipParaInitialStat::getMaxDepth(), BbParaLoadCoordinator::maxDepthInWinnerSolverNodes, ParaLoadCoordinator::paraComm, ParaLoadCoordinator::paraInitiator, and ParaInitialStat::receive().
Referenced by ScipParaLoadCoordinator::ScipParaLoadCoordinator().