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 45 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 57 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 78 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 113 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 127 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 191 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 228 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 246 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 259 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 270 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 281 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 292 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 303 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 314 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 327 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 348 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 396 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 425 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 468 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 506 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 516 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 530 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 540 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 551 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 561 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 571 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 581 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 591 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 609 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 619 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 633 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 664 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 675 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 686 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 699 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 758 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 775 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 785 of file syncstore.c.
References SCIP_SyncStore::mode, and NULL.