the function definitions of the synchronization store
Definition in file syncstore.c.
#include <assert.h>#include "scip/def.h"#include "scip/pub_message.h"#include "scip/concsolver.h"#include "scip/struct_concsolver.h"#include "scip/prob.h"#include "scip/scip.h"#include "blockmemshell/memory.h"#include "tpi/tpi.h"#include "scip/struct_syncstore.h"#include "scip/concurrent.h"#include "scip/syncstore.h"#include "scip/boundstore.h"Go to the source code of this file.
|
static |
computes the size of the array of synchronization data, such that it cannot ever happen that a synchronization data is reused while still not read by any thread
| scip | SCIP main data structure |
Definition at line 55 of file syncstore.c.
References SCIP_CALL_ABORT, and SCIPgetIntParam().
Referenced by SCIPsyncstoreInit().
| SCIP_RETCODE SCIPsyncstoreCreate | ( | SCIP_SYNCSTORE ** | syncstore | ) |
creates and captures a new synchronization store
| syncstore | pointer to return the created synchronization store |
Definition at line 67 of file syncstore.c.
References assert(), BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIP_PARA_DETERMINISTIC, SCIPdebugMessage, and SCIPtpiInitLock().
Referenced by doScipCreate(), and SCIPconstructSyncstore().
| SCIP_RETCODE SCIPsyncstoreRelease | ( | SCIP_SYNCSTORE ** | syncstore | ) |
releases a synchronization store
| syncstore | pointer to the synchronization store |
Definition at line 89 of file syncstore.c.
References assert(), BMSfreeMemory, NULL, SCIP_CALL, SCIP_OKAY, SCIPsyncstoreExit(), SCIPtpiAcquireLock(), SCIPtpiDestroyLock(), and SCIPtpiReleaseLock().
Referenced by doCopy(), SCIPcopyOrigConsCompression(), SCIPfree(), and SCIPfreeSyncstore().
| SCIP_RETCODE SCIPsyncstoreCapture | ( | SCIP_SYNCSTORE * | syncstore | ) |
captures a synchronization store
| syncstore | the synchronization store |
Definition at line 124 of file syncstore.c.
References SCIP_SyncStore::lock, SCIP_SyncStore::nuses, SCIP_CALL, SCIP_OKAY, SCIPtpiAcquireLock(), and SCIPtpiReleaseLock().
Referenced by doCopy(), and SCIPcopyOrigConsCompression().
| SCIP_RETCODE SCIPsyncstoreInit | ( | SCIP * | scip | ) |
initialize the syncstore for the given SCIP instance
| scip | SCIP main data structure |
Definition at line 138 of file syncstore.c.
References assert(), FALSE, getNSyncdata(), i, SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::limit_absgap, SCIP_SyncStore::limit_gap, SCIP_SyncStore::mainscip, SCIP_SyncStore::maxnsols, SCIP_SyncStore::maxnsyncdelay, SCIP_SyncStore::minsyncdelay, SCIP_SyncStore::mode, SCIP_SyncStore::ninitvars, SCIP_SyncStore::nsolvers, SCIP_SyncStore::nsyncdata, NULL, SCIP_CALL, SCIP_OKAY, SCIP_PARA_DETERMINISTIC, SCIPallocBlockMemoryArray, SCIPautoselectDisps(), SCIPboundstoreCreate(), SCIPgetIntParam(), SCIPgetNConcurrentSolvers(), SCIPgetNFixedVars(), SCIPgetNNZs(), SCIPgetNVars(), SCIPgetRealParam(), SCIPgetSyncstore(), SCIPtpiInit(), SCIPtpiInitCondition(), SCIPtpiInitLock(), SCIP_SyncStore::stopped, SCIP_SyncStore::syncdata, SCIP_SyncStore::syncfreqinit, SCIP_SyncStore::syncfreqmax, and TRUE.
Referenced by SCIPsolveConcurrent().
| SCIP_RETCODE SCIPsyncstoreExit | ( | SCIP_SYNCSTORE * | syncstore | ) |
deinitializes the synchronization store
| syncstore | the synchronization store |
Definition at line 204 of file syncstore.c.
References assert(), FALSE, i, SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, SCIP_SyncStore::maxnsols, SCIP_SyncStore::ninitvars, SCIP_SyncStore::nsyncdata, NULL, SCIP_CALL, SCIP_OKAY, SCIPboundstoreFree(), SCIPfreeBlockMemoryArray, SCIPtpiDestroyCondition(), SCIPtpiDestroyLock(), SCIPtpiExit(), SCIP_SyncStore::stopped, and SCIP_SyncStore::syncdata.
Referenced by SCIPfreeProb(), and SCIPsyncstoreRelease().
| SCIP_Bool SCIPsyncstoreSolveIsStopped | ( | SCIP_SYNCSTORE * | syncstore | ) |
checks whether the solve-is-stopped flag in the syncstore has been set by any thread
| syncstore | the synchronization store |
Definition at line 241 of file syncstore.c.
References SCIP_SyncStore::lock, SCIP_Bool, SCIP_CALL_ABORT, SCIPtpiAcquireLock(), SCIPtpiReleaseLock(), and SCIP_SyncStore::stopped.
Referenced by SCIPsolveIsStopped(), and SCIPsyncstoreStartSync().
| void SCIPsyncstoreSetSolveIsStopped | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_Bool | stopped ) |
sets the solve-is-stopped flag in the syncstore so that subsequent calls to SCIPsyncstoreSolveIsStopped will return the given value in any thread
| syncstore | the synchronization store |
| stopped | flag if the solve is stopped |
Definition at line 259 of file syncstore.c.
References SCIP_SyncStore::lock, SCIP_Bool, SCIP_CALL_ABORT, SCIPtpiAcquireLock(), SCIPtpiReleaseLock(), and SCIP_SyncStore::stopped.
Referenced by SCIPconcurrentSolve(), SCIPsolveConcurrent(), and SCIPsyncstoreFinishSync().
| SCIP_Real SCIPsyncstoreGetLastUpperbound | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the upperbound from the last synchronization
| syncstore | the synchronization store |
Definition at line 272 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, NULL, SCIP_Real, and SCIPinfinity().
Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPgetConcurrentPrimalbound().
| SCIP_Real SCIPsyncstoreGetLastLowerbound | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the lowerbound from the last synchronization
| syncstore | the synchronization store |
Definition at line 283 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, NULL, SCIP_Real, and SCIPinfinity().
Referenced by SCIPgetConcurrentDualbound().
| int SCIPsyncstoreGetLastNSols | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the number of solutions from the last synchronization
| syncstore | the synchronization store |
Definition at line 294 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, and NULL.
Referenced by SCIP_DECL_DISPOUTPUT().
| int SCIPsyncstoreGetLastNBounds | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the number of boundchanges from the last synchronization
| syncstore | the synchronization store |
Definition at line 305 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, NULL, and SCIPboundstoreGetNChgs().
| SCIP_Longint SCIPsyncstoreGetLastMemTotal | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets total memory used by all solvers from the last synchronization
| syncstore | the synchronization store |
Definition at line 316 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, NULL, and SCIP_Longint.
Referenced by SCIP_DECL_DISPOUTPUT().
| SCIP_Real SCIPsyncstoreGetLastSyncfreq | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the synchronization frequency from the last synchronization
| syncstore | the synchronization store |
Definition at line 327 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, NULL, and SCIP_Real.
| SCIP_SYNCDATA * SCIPsyncstoreGetSyncdata | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_Longint | syncnum ) |
get synchronization data with given number. It is the responsibility of the caller to only ask for a synchronization number that still exists, which is checked with an assert in debug mode.
get synchronization data with given number. It is the responsibility of the caller to only ask for a synchronization number that still exists.
| syncstore | the synchronization store |
| syncnum | the number of the synchronization to start, which must be increasing between calls of the same thread |
Definition at line 340 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::nsyncdata, NULL, SCIP_Longint, and SCIP_SyncStore::syncdata.
Referenced by SCIPconcsolverSync().
| SCIP_SYNCDATA * SCIPsyncstoreGetNextSyncdata | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_SYNCDATA * | syncdata, | ||
| SCIP_Real | syncfreq, | ||
| SCIP_Longint | writenum, | ||
| SCIP_Real * | delay ) |
get the next synchronization data that should be read and adjust the delay. Returns NULL if no more data should be read due to minimum delay
| syncstore | the synchronization store |
| syncdata | the synchronization data |
| syncfreq | the current synchronization frequency |
| writenum | number of synchronizations the solver has written to |
| delay | pointer holding the current synchronization delay |
Definition at line 361 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::maxnsyncdelay, SCIP_SyncStore::nsyncdata, NULL, SCIP_Longint, SCIP_Real, SCIP_STATUS_UNKNOWN, and SCIP_SyncStore::syncdata.
Referenced by SCIPconcsolverSync().
| SCIP_RETCODE SCIPsyncstoreEnsureAllSynced | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_SYNCDATA * | syncdata ) |
ensures that the given synchronization data has been written by all solvers upon return of this function and blocks the caller if necessary.
| syncstore | the synchronization store |
| syncdata | the synchronization data |
Definition at line 409 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::nsolvers, NULL, SCIP_CALL, SCIP_OKAY, SCIPtpiAcquireLock(), SCIPtpiReleaseLock(), and SCIPtpiWaitCondition().
Referenced by SCIPconcsolverSync().
| SCIP_RETCODE SCIPsyncstoreStartSync | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_Longint | syncnum, | ||
| SCIP_SYNCDATA ** | syncdata ) |
Start synchronization for the given concurrent solver. Needs to be followed by a call to SCIPsyncstoreFinishSync if the syncdata that is returned is not NULL
| syncstore | the synchronization store |
| syncnum | the number of the synchronization to start, which must be increasing between calls of the same thread |
| syncdata | pointer to return the synchronization data |
Definition at line 438 of file syncstore.c.
References assert(), i, SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, SCIP_SyncStore::nsyncdata, NULL, SCIP_CALL, SCIP_Longint, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIPboundstoreClear(), SCIPgetMemTotal(), SCIPinfinity(), SCIPsyncstoreSolveIsStopped(), SCIPtpiAcquireLock(), and SCIP_SyncStore::syncdata.
Referenced by SCIPconcsolverSync().
| SCIP_RETCODE SCIPsyncstoreFinishSync | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_SYNCDATA ** | syncdata ) |
finishes synchronization for the synchronization data
| syncstore | the synchronization store |
| syncdata | the synchronization data |
Definition at line 481 of file syncstore.c.
References assert(), FALSE, SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::limit_absgap, SCIP_SyncStore::limit_gap, SCIP_SyncStore::mainscip, SCIP_SyncStore::nsolvers, NULL, REALABS, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIP_VERBLEVEL_HIGH, SCIPgetConcurrentDualbound(), SCIPgetConcurrentGap(), SCIPgetConcurrentPrimalbound(), SCIPgetNLimSolsFound(), SCIPprintDisplayLine(), SCIPsyncstoreSetSolveIsStopped(), SCIPtpiBroadcastCondition(), SCIPtpiReleaseLock(), and TRUE.
Referenced by SCIPconcsolverSync().
| SCIP_STATUS SCIPsyncdataGetStatus | ( | SCIP_SYNCDATA * | syncdata | ) |
gets status in synchronization data
| syncdata | the synchronization data |
Definition at line 521 of file syncstore.c.
References assert(), and NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE(), and SCIPconcsolverSync().
| int SCIPsyncstoreGetWinner | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the solver that had the best status, or -1 if solve is not stopped yet
| syncstore | the synchronization store |
Definition at line 531 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, NULL, and SCIP_STATUS_UNKNOWN.
Referenced by SCIPcollectConcsolverStatistics(), SCIPconcurrentSolve(), and SCIPprintConcsolverStatistics().
| int SCIPsyncdataGetNSynced | ( | SCIP_SYNCDATA * | syncdata | ) |
how many solvers have already finished synchronizing on this synchronization data
| syncdata | the synchronization data |
Definition at line 545 of file syncstore.c.
References assert(), and NULL.
Referenced by SCIPconcsolverSync().
| int SCIPsyncstoreGetNSolvers | ( | SCIP_SYNCSTORE * | syncstore | ) |
how many solvers have are running concurrently
| syncstore | the synchronization store |
Definition at line 555 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::nsolvers, and NULL.
Referenced by SCIPconcsolverSync(), and SCIPconcurrentSolve().
| SCIP_Longint SCIPsyncdataGetMemTotal | ( | SCIP_SYNCDATA * | syncdata | ) |
read amount total memory used from synchronization data
read amount of memory used from synchronization data
| syncdata | the synchronization data |
Definition at line 566 of file syncstore.c.
References assert(), NULL, and SCIP_Longint.
Referenced by SCIPconcsolverGetMemTotal().
| SCIP_Real SCIPsyncdataGetSyncFreq | ( | SCIP_SYNCDATA * | syncdata | ) |
read the synchronization frequency from a synchronization data
| syncdata | the synchronization data |
Definition at line 576 of file syncstore.c.
References assert(), NULL, and SCIP_Real.
Referenced by SCIPconcsolverSync().
| SCIP_Real SCIPsyncdataGetUpperbound | ( | SCIP_SYNCDATA * | syncdata | ) |
read the upperbound stored in a synchronization data
| syncdata | the synchronization data |
Definition at line 586 of file syncstore.c.
References assert(), NULL, and SCIP_Real.
Referenced by SCIPconcsolverSync().
| SCIP_Real SCIPsyncdataGetLowerbound | ( | SCIP_SYNCDATA * | syncdata | ) |
read the lowerbound stored in a synchronization data
| syncdata | the synchronization data |
Definition at line 596 of file syncstore.c.
References assert(), NULL, and SCIP_Real.
Referenced by SCIPconcsolverSync().
| void SCIPsyncdataGetSolutions | ( | SCIP_SYNCDATA * | syncdata, |
| SCIP_Real *** | solvalues, | ||
| int ** | solowner, | ||
| int * | nsols ) |
read the solutions stored in a synchronization data
| syncdata | the synchronization data |
| solvalues | array of buffers containing the solution values |
| solowner | array of ownerids of solutions |
| nsols | pointer to return number of solutions |
Definition at line 606 of file syncstore.c.
References assert(), NULL, and SCIP_Real.
Referenced by SCIP_DECL_CONCSOLVERSYNCREAD().
| SCIP_BOUNDSTORE * SCIPsyncdataGetBoundChgs | ( | SCIP_SYNCDATA * | syncdata | ) |
read bound changes stored in the synchronization data
| syncdata | the synchronization data |
Definition at line 624 of file syncstore.c.
References assert(), and NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCREAD(), and SCIPconcsolverSync().
| void SCIPsyncdataSetSyncFreq | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_SYNCDATA * | syncdata, | ||
| SCIP_Real | syncfreq ) |
write the synchronization frequency to a synchronization data
| syncstore | the synchronization store |
| syncdata | the synchronization data |
| syncfreq | the synchronization frequency |
Definition at line 634 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, MIN, NULL, SCIP_Real, and SCIP_SyncStore::syncfreqmax.
Referenced by SCIPconcsolverSync().
| void SCIPsyncdataSetStatus | ( | SCIP_SYNCDATA * | syncdata, |
| SCIP_STATUS | status, | ||
| int | solverid ) |
set status in the synchronization data
| syncdata | the synchronization data the upperbound should be added to |
| status | the status |
| solverid | identifier of the solver that has this status |
Definition at line 648 of file syncstore.c.
References assert(), NULL, and SCIP_STATUS_OPTIMAL.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
| void SCIPsyncdataAddMemTotal | ( | SCIP_SYNCDATA * | syncdata, |
| SCIP_Longint | memtotal ) |
adds memory used to the synchronization data
| syncdata | the synchronization data the solution should be added to |
| memtotal | the number of bytes used |
Definition at line 684 of file syncstore.c.
References assert(), NULL, and SCIP_Longint.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
| void SCIPsyncdataSetUpperbound | ( | SCIP_SYNCDATA * | syncdata, |
| SCIP_Real | upperbound ) |
set upperbound to the synchronization data
| syncdata | the synchronization data the upperbound should be added to |
| upperbound | the upperbound |
Definition at line 695 of file syncstore.c.
References assert(), MIN, NULL, and SCIP_Real.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
| void SCIPsyncdataSetLowerbound | ( | SCIP_SYNCDATA * | syncdata, |
| SCIP_Real | lowerbound ) |
set lowerbound to the synchronization data
| syncdata | the synchronization data the lowerbound should be added to |
| lowerbound | the lowerbound |
Definition at line 706 of file syncstore.c.
References assert(), MAX, NULL, and SCIP_Real.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
| void SCIPsyncdataGetSolutionBuffer | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_SYNCDATA * | syncdata, | ||
| SCIP_Real | solobj, | ||
| int | ownerid, | ||
| SCIP_Real ** | buffer ) |
gives a buffer to store the solution values, or NULL if solution should not be stored because there are already better solutions stored.
| syncstore | the synchronization store |
| syncdata | the synchronization data the solution should be added to |
| solobj | the objective value of the solution |
| ownerid | an identifier for the owner of the solution, e.g. the thread number |
| buffer | pointer to return a buffer for the solution values, which must be set if the buffer is not NULL |
Definition at line 719 of file syncstore.c.
References assert(), i, SCIP_SyncStore::initialized, SCIP_SyncStore::maxnsols, NULL, SCIP_Real, and SCIPswapPointers().
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
| SCIP_RETCODE SCIPsyncdataAddBoundChanges | ( | SCIP_SYNCSTORE * | syncstore, |
| SCIP_SYNCDATA * | syncdata, | ||
| SCIP_BOUNDSTORE * | boundstore ) |
adds bound changes to the synchronization data
| syncstore | the synchronization store |
| syncdata | the synchronization data |
| boundstore | bound store containing the bounds to add |
Definition at line 778 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, NULL, SCIP_CALL, SCIP_OKAY, and SCIPboundstoreMerge().
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
| SCIP_Bool SCIPsyncstoreIsInitialized | ( | SCIP_SYNCSTORE * | syncstore | ) |
is synchronization store initialized
| syncstore | the synchronization store |
Definition at line 795 of file syncstore.c.
References assert(), SCIP_SyncStore::initialized, NULL, and SCIP_Bool.
Referenced by SCIP_DECL_EVENTINIT(), SCIP_DECL_EVENTINIT(), SCIPcollectConcsolverStatistics(), SCIPconcurrentSolve(), SCIPdispAutoActivate(), SCIPfreeProb(), and SCIPprintConcsolverStatistics().
| SCIP_PARALLELMODE SCIPsyncstoreGetMode | ( | SCIP_SYNCSTORE * | syncstore | ) |
returns the mode of the synchronization store
| syncstore | the synchronization store |
Definition at line 805 of file syncstore.c.
References assert(), SCIP_SyncStore::mode, and NULL.