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 datas, such that it cannot ever happen that a synchronization data is reused while still not read by any thread
scip | SCIP main datastructure |
Definition at line 45 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 56 of file syncstore.c.
References BMSallocMemory, FALSE, 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 77 of file syncstore.c.
References BMSfreeMemory, 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 112 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 datastructure |
Definition at line 126 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, 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().
SCIP_RETCODE SCIPsyncstoreExit | ( | SCIP_SYNCSTORE * | syncstore | ) |
deinitializes the synchronization store
syncstore | the synchronization store |
Definition at line 190 of file syncstore.c.
References FALSE, SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, SCIP_SyncStore::maxnsols, SCIP_SyncStore::ninitvars, SCIP_SyncStore::nsyncdata, 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 227 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 245 of file syncstore.c.
References SCIP_SyncStore::lock, 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 258 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, 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 269 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, 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 280 of file syncstore.c.
References SCIP_SyncStore::initialized, and SCIP_SyncStore::lastsync.
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 291 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, 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 302 of file syncstore.c.
References SCIP_SyncStore::initialized, and SCIP_SyncStore::lastsync.
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 313 of file syncstore.c.
References SCIP_SyncStore::initialized, and SCIP_SyncStore::lastsync.
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.
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 326 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::nsyncdata, 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 347 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::maxnsyncdelay, SCIP_SyncStore::nsyncdata, 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 395 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::nsolvers, 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 424 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, SCIP_SyncStore::nsyncdata, SCIP_CALL, 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 467 of file syncstore.c.
References FALSE, SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, SCIP_SyncStore::mainscip, SCIP_SyncStore::nsolvers, SCIP_Bool, SCIP_CALL, SCIP_OKAY, SCIP_STATUS_UNKNOWN, SCIP_VERBLEVEL_HIGH, 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 505 of file syncstore.c.
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 515 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::lastsync, and SCIP_STATUS_UNKNOWN.
Referenced by SCIPconcurrentSolve(), and SCIPprintConcsolverStatistics().
int SCIPsyncdataGetNSynced | ( | SCIP_SYNCDATA * | syncdata | ) |
how many solvers have already finished synchronizing on this sychronization data
syncdata | the synchronization data |
Definition at line 529 of file syncstore.c.
Referenced by SCIPconcsolverSync().
int SCIPsyncstoreGetNSolvers | ( | SCIP_SYNCSTORE * | syncstore | ) |
how many solvers have are running concurrently
syncstore | the synchronization store |
Definition at line 539 of file syncstore.c.
References SCIP_SyncStore::initialized, and SCIP_SyncStore::nsolvers.
Referenced by SCIPconcsolverSync(), and SCIPconcurrentSolve().
SCIP_Longint SCIPsyncdataGetMemTotal | ( | SCIP_SYNCDATA * | syncdata | ) |
read amount total memory used from synchronization data
syncdata | the synchronization data |
Definition at line 551 of file syncstore.c.
Referenced by SCIPconcsolverGetMemTotal().
SCIP_Real SCIPsyncdataGetSyncFreq | ( | SCIP_SYNCDATA * | syncdata | ) |
read the synchronization frequency from a synchronization data
syncdata | the synchronization data |
Definition at line 561 of file syncstore.c.
Referenced by SCIPconcsolverSync().
SCIP_Real SCIPsyncdataGetUpperbound | ( | SCIP_SYNCDATA * | syncdata | ) |
read the upperbound stored in a synchronization data
syncdata | the synchronization data |
Definition at line 571 of file syncstore.c.
Referenced by SCIPconcsolverSync().
SCIP_Real SCIPsyncdataGetLowerbound | ( | SCIP_SYNCDATA * | syncdata | ) |
read the lowerbound stored in a synchronization data
syncdata | the synchronization data |
Definition at line 581 of file syncstore.c.
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 591 of file syncstore.c.
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 609 of file syncstore.c.
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 619 of file syncstore.c.
References SCIP_SyncStore::initialized, 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 te solver that has this status |
Definition at line 633 of file syncstore.c.
References 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 665 of file syncstore.c.
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 676 of file syncstore.c.
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 687 of file syncstore.c.
References MAX.
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 700 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::maxnsols, 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 759 of file syncstore.c.
References SCIP_SyncStore::initialized, SCIP_SyncStore::mainscip, 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 776 of file syncstore.c.
References SCIP_SyncStore::initialized.
Referenced by SCIP_DECL_EVENTINIT(), 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 786 of file syncstore.c.
References SCIP_SyncStore::mode.