Detailed Description
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.
Function Documentation
◆ getNSyncdata()
|
static |
computes the size of the array of synchronization datas, such that it cannot ever happen that a synchronization data is reused while still not read by any thread
- Parameters
-
scip SCIP main datastructure
Definition at line 54 of file syncstore.c.
References SCIP_CALL_ABORT, and SCIPgetIntParam().
Referenced by SCIPsyncstoreInit().
◆ SCIPsyncstoreCreate()
SCIP_RETCODE SCIPsyncstoreCreate | ( | SCIP_SYNCSTORE ** | syncstore | ) |
creates and captures a new synchronization store
- Parameters
-
syncstore pointer to return the created synchronization store
Definition at line 66 of file syncstore.c.
References BMSallocMemory, FALSE, NULL, SCIP_ALLOC, SCIP_CALL, SCIP_OKAY, SCIP_PARA_DETERMINISTIC, SCIPdebugMessage, and SCIPtpiInitLock().
Referenced by doScipCreate(), and SCIPconstructSyncstore().
◆ SCIPsyncstoreRelease()
SCIP_RETCODE SCIPsyncstoreRelease | ( | SCIP_SYNCSTORE ** | syncstore | ) |
releases a synchronization store
- Parameters
-
syncstore pointer to the synchronization store
Definition at line 87 of file syncstore.c.
References BMSfreeMemory, NULL, SCIP_CALL, SCIP_OKAY, SCIPsyncstoreExit(), SCIPtpiAcquireLock(), SCIPtpiDestroyLock(), and SCIPtpiReleaseLock().
Referenced by doCopy(), SCIPcopyOrigConsCompression(), SCIPfree(), and SCIPfreeSyncstore().
◆ SCIPsyncstoreCapture()
SCIP_RETCODE SCIPsyncstoreCapture | ( | SCIP_SYNCSTORE * | syncstore | ) |
captures a synchronization store
- Parameters
-
syncstore the synchronization store
Definition at line 122 of file syncstore.c.
References SCIP_SyncStore::lock, SCIP_SyncStore::nuses, SCIP_CALL, SCIP_OKAY, SCIPtpiAcquireLock(), and SCIPtpiReleaseLock().
Referenced by doCopy(), and SCIPcopyOrigConsCompression().
◆ SCIPsyncstoreInit()
SCIP_RETCODE SCIPsyncstoreInit | ( | SCIP * | scip | ) |
initialize the syncstore for the given SCIP instance
- Parameters
-
scip SCIP main datastructure
Definition at line 136 of file syncstore.c.
References FALSE, getNSyncdata(), SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, 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(), SCIPgetNNZs(), SCIPgetNVars(), SCIPgetRealParam(), SCIPgetSyncstore(), SCIPtpiInit(), SCIPtpiInitCondition(), SCIPtpiInitLock(), SCIP_SyncStore::stopped, SCIP_SyncStore::syncdata, SCIP_SyncStore::syncfreqinit, SCIP_SyncStore::syncfreqmax, and TRUE.
Referenced by SCIPsolveConcurrent().
◆ SCIPsyncstoreExit()
SCIP_RETCODE SCIPsyncstoreExit | ( | SCIP_SYNCSTORE * | syncstore | ) |
deinitializes the synchronization store
- Parameters
-
syncstore the synchronization store
Definition at line 200 of file syncstore.c.
References FALSE, 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().
◆ SCIPsyncstoreSolveIsStopped()
SCIP_Bool SCIPsyncstoreSolveIsStopped | ( | SCIP_SYNCSTORE * | syncstore | ) |
checks whether the solve-is-stopped flag in the syncstore has been set by any thread
- Parameters
-
syncstore the synchronization store
Definition at line 237 of file syncstore.c.
References SCIP_SyncStore::lock, SCIP_Bool, SCIP_CALL_ABORT, SCIPtpiAcquireLock(), SCIPtpiReleaseLock(), and SCIP_SyncStore::stopped.
Referenced by SCIPsolveIsStopped(), and SCIPsyncstoreStartSync().
◆ SCIPsyncstoreSetSolveIsStopped()
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
- Parameters
-
syncstore the synchronization store stopped flag if the solve is stopped
Definition at line 255 of file syncstore.c.
References SCIP_SyncStore::lock, SCIP_CALL_ABORT, SCIPtpiAcquireLock(), SCIPtpiReleaseLock(), and SCIP_SyncStore::stopped.
Referenced by SCIPconcurrentSolve(), SCIPsolveConcurrent(), and SCIPsyncstoreFinishSync().
◆ SCIPsyncstoreGetLastUpperbound()
SCIP_Real SCIPsyncstoreGetLastUpperbound | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the upperbound from the last synchronization
- Parameters
-
syncstore the synchronization store
Definition at line 268 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, NULL, and SCIPinfinity().
Referenced by SCIP_DECL_DISPOUTPUT(), and SCIPgetConcurrentPrimalbound().
◆ SCIPsyncstoreGetLastLowerbound()
SCIP_Real SCIPsyncstoreGetLastLowerbound | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the lowerbound from the last synchronization
- Parameters
-
syncstore the synchronization store
Definition at line 279 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, NULL, and SCIPinfinity().
Referenced by SCIPgetConcurrentDualbound().
◆ SCIPsyncstoreGetLastNSols()
int SCIPsyncstoreGetLastNSols | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the number of solutions from the last synchronization
- Parameters
-
syncstore the synchronization store
Definition at line 290 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, and NULL.
Referenced by SCIP_DECL_DISPOUTPUT().
◆ SCIPsyncstoreGetLastNBounds()
int SCIPsyncstoreGetLastNBounds | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the number of boundchanges from the last synchronization
- Parameters
-
syncstore the synchronization store
Definition at line 301 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, NULL, and SCIPboundstoreGetNChgs().
◆ SCIPsyncstoreGetLastMemTotal()
SCIP_Longint SCIPsyncstoreGetLastMemTotal | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets total memory used by all solvers from the last synchronization
- Parameters
-
syncstore the synchronization store
Definition at line 312 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, and NULL.
Referenced by SCIP_DECL_DISPOUTPUT().
◆ SCIPsyncstoreGetLastSyncfreq()
SCIP_Real SCIPsyncstoreGetLastSyncfreq | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the synchronization frequency from the last synchronization
- Parameters
-
syncstore the synchronization store
Definition at line 323 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, and NULL.
◆ SCIPsyncstoreGetSyncdata()
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.
- Parameters
-
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 336 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::nsyncdata, NULL, and SCIP_SyncStore::syncdata.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncstoreGetNextSyncdata()
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
- Parameters
-
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 357 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::maxnsyncdelay, SCIP_SyncStore::nsyncdata, NULL, SCIP_Longint, SCIP_Real, SCIP_STATUS_UNKNOWN, and SCIP_SyncStore::syncdata.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncstoreEnsureAllSynced()
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.
- Parameters
-
syncstore the synchronization store syncdata the synchronization data
Definition at line 405 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::nsolvers, NULL, SCIP_CALL, SCIP_OKAY, SCIPtpiAcquireLock(), SCIPtpiReleaseLock(), and SCIPtpiWaitCondition().
Referenced by SCIPconcsolverSync().
◆ SCIPsyncstoreStartSync()
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
- Parameters
-
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 434 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, SCIP_SyncStore::nsyncdata, NULL, SCIP_CALL, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIPboundstoreClear(), SCIPgetMemTotal(), SCIPinfinity(), SCIPsyncstoreSolveIsStopped(), SCIPtpiAcquireLock(), and SCIP_SyncStore::syncdata.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncstoreFinishSync()
SCIP_RETCODE SCIPsyncstoreFinishSync | ( | SCIP_SYNCSTORE * | syncstore, |
SCIP_SYNCDATA ** | syncdata | ||
) |
finishes synchronization for the synchronization data
- Parameters
-
syncstore the synchronization store syncdata the synchronization data
Definition at line 477 of file syncstore.c.
References FALSE, SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, SCIP_SyncStore::nsolvers, NULL, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIP_VERBLEVEL_HIGH, SCIPprintDisplayLine(), SCIPsyncstoreSetSolveIsStopped(), SCIPtpiBroadcastCondition(), SCIPtpiReleaseLock(), and TRUE.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncdataGetStatus()
SCIP_STATUS SCIPsyncdataGetStatus | ( | SCIP_SYNCDATA * | syncdata | ) |
gets status in synchronization data
- Parameters
-
syncdata the synchronization data
Definition at line 515 of file syncstore.c.
References NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE(), and SCIPconcsolverSync().
◆ SCIPsyncstoreGetWinner()
int SCIPsyncstoreGetWinner | ( | SCIP_SYNCSTORE * | syncstore | ) |
gets the solver that had the best status, or -1 if solve is not stopped yet
- Parameters
-
syncstore the synchronization store
Definition at line 525 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, NULL, and SCIP_STATUS_UNKNOWN.
Referenced by SCIPconcurrentSolve(), and SCIPprintConcsolverStatistics().
◆ SCIPsyncdataGetNSynced()
int SCIPsyncdataGetNSynced | ( | SCIP_SYNCDATA * | syncdata | ) |
how many solvers have already finished synchronizing on this sychronization data
- Parameters
-
syncdata the synchronization data
Definition at line 539 of file syncstore.c.
References NULL.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncstoreGetNSolvers()
int SCIPsyncstoreGetNSolvers | ( | SCIP_SYNCSTORE * | syncstore | ) |
how many solvers have are running concurrently
- Parameters
-
syncstore the synchronization store
Definition at line 549 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::nsolvers, and NULL.
Referenced by SCIPconcsolverSync(), and SCIPconcurrentSolve().
◆ SCIPsyncdataGetMemTotal()
SCIP_Longint SCIPsyncdataGetMemTotal | ( | SCIP_SYNCDATA * | syncdata | ) |
read amount total memory used from synchronization data
- Parameters
-
syncdata the synchronization data
Definition at line 560 of file syncstore.c.
References NULL.
Referenced by SCIPconcsolverGetMemTotal().
◆ SCIPsyncdataGetSyncFreq()
SCIP_Real SCIPsyncdataGetSyncFreq | ( | SCIP_SYNCDATA * | syncdata | ) |
read the synchronization frequency from a synchronization data
- Parameters
-
syncdata the synchronization data
Definition at line 570 of file syncstore.c.
References NULL.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncdataGetUpperbound()
SCIP_Real SCIPsyncdataGetUpperbound | ( | SCIP_SYNCDATA * | syncdata | ) |
read the upperbound stored in a synchronization data
- Parameters
-
syncdata the synchronization data
Definition at line 580 of file syncstore.c.
References NULL.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncdataGetLowerbound()
SCIP_Real SCIPsyncdataGetLowerbound | ( | SCIP_SYNCDATA * | syncdata | ) |
read the lowerbound stored in a synchronization data
- Parameters
-
syncdata the synchronization data
Definition at line 590 of file syncstore.c.
References NULL.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncdataGetSolutions()
void SCIPsyncdataGetSolutions | ( | SCIP_SYNCDATA * | syncdata, |
SCIP_Real *** | solvalues, | ||
int ** | solowner, | ||
int * | nsols | ||
) |
read the solutions stored in a synchronization data
- Parameters
-
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 600 of file syncstore.c.
References NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCREAD().
◆ SCIPsyncdataGetBoundChgs()
SCIP_BOUNDSTORE* SCIPsyncdataGetBoundChgs | ( | SCIP_SYNCDATA * | syncdata | ) |
read bound changes stored in the synchronization data
- Parameters
-
syncdata the synchronization data
Definition at line 618 of file syncstore.c.
References NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCREAD(), and SCIPconcsolverSync().
◆ SCIPsyncdataSetSyncFreq()
void SCIPsyncdataSetSyncFreq | ( | SCIP_SYNCSTORE * | syncstore, |
SCIP_SYNCDATA * | syncdata, | ||
SCIP_Real | syncfreq | ||
) |
write the synchronization frequency to a synchronization data
- Parameters
-
syncstore the synchronization store syncdata the synchronization data syncfreq the synchronization frequency
Definition at line 628 of file syncstore.c.
References SCIP_SyncStore::initialized, NULL, and SCIP_SyncStore::syncfreqmax.
Referenced by SCIPconcsolverSync().
◆ SCIPsyncdataSetStatus()
void SCIPsyncdataSetStatus | ( | SCIP_SYNCDATA * | syncdata, |
SCIP_STATUS | status, | ||
int | solverid | ||
) |
set status in the synchronization data
- Parameters
-
syncdata the synchronization data the upperbound should be added to status the status solverid identifier of te solver that has this status
Definition at line 642 of file syncstore.c.
References NULL, and SCIP_STATUS_OPTIMAL.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
◆ SCIPsyncdataAddMemTotal()
void SCIPsyncdataAddMemTotal | ( | SCIP_SYNCDATA * | syncdata, |
SCIP_Longint | memtotal | ||
) |
adds memory used to the synchronization data
- Parameters
-
syncdata the synchronization data the solution should be added to memtotal the number of bytes used
Definition at line 678 of file syncstore.c.
References NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
◆ SCIPsyncdataSetUpperbound()
void SCIPsyncdataSetUpperbound | ( | SCIP_SYNCDATA * | syncdata, |
SCIP_Real | upperbound | ||
) |
set upperbound to the synchronization data
- Parameters
-
syncdata the synchronization data the upperbound should be added to upperbound the upperbound
Definition at line 689 of file syncstore.c.
References NULL.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
◆ SCIPsyncdataSetLowerbound()
void SCIPsyncdataSetLowerbound | ( | SCIP_SYNCDATA * | syncdata, |
SCIP_Real | lowerbound | ||
) |
set lowerbound to the synchronization data
- Parameters
-
syncdata the synchronization data the lowerbound should be added to lowerbound the lowerbound
Definition at line 700 of file syncstore.c.
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
◆ SCIPsyncdataGetSolutionBuffer()
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.
- Parameters
-
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 713 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::maxnsols, NULL, and SCIPswapPointers().
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
◆ SCIPsyncdataAddBoundChanges()
SCIP_RETCODE SCIPsyncdataAddBoundChanges | ( | SCIP_SYNCSTORE * | syncstore, |
SCIP_SYNCDATA * | syncdata, | ||
SCIP_BOUNDSTORE * | boundstore | ||
) |
adds bound changes to the synchronization data
- Parameters
-
syncstore the synchronization store syncdata the synchronization data boundstore bound store containing the bounds to add
Definition at line 772 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, NULL, SCIP_CALL, SCIP_OKAY, and SCIPboundstoreMerge().
Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().
◆ SCIPsyncstoreIsInitialized()
SCIP_Bool SCIPsyncstoreIsInitialized | ( | SCIP_SYNCSTORE * | syncstore | ) |
is synchronization store initialized
- Parameters
-
syncstore the synchronization store
Definition at line 789 of file syncstore.c.
References SCIP_SyncStore::initialized, and NULL.
Referenced by SCIP_DECL_EVENTINIT(), SCIPconcurrentSolve(), SCIPdispAutoActivate(), SCIPfreeProb(), and SCIPprintConcsolverStatistics().
◆ SCIPsyncstoreGetMode()
SCIP_PARALLELMODE SCIPsyncstoreGetMode | ( | SCIP_SYNCSTORE * | syncstore | ) |
returns the mode of the synchronization store
- Parameters
-
syncstore the synchronization store
Definition at line 799 of file syncstore.c.
References SCIP_SyncStore::mode, and NULL.