Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

the function declarations for the synchronization store

Author
Robert Lion Gottwald
Stephen J. Maher

Definition in file syncstore.h.

#include "scip/def.h"
#include "scip/type_syncstore.h"
#include "scip/type_scip.h"
#include "scip/type_retcode.h"

Go to the source code of this file.

Functions

SCIP_RETCODE SCIPsyncstoreCreate (SCIP_SYNCSTORE **syncstore)
 
SCIP_RETCODE SCIPsyncstoreRelease (SCIP_SYNCSTORE **syncstore)
 
SCIP_RETCODE SCIPsyncstoreCapture (SCIP_SYNCSTORE *syncstore)
 
SCIP_RETCODE SCIPsyncstoreInit (SCIP *scip)
 
SCIP_RETCODE SCIPsyncstoreExit (SCIP_SYNCSTORE *syncstore)
 
SCIP_Bool SCIPsyncstoreSolveIsStopped (SCIP_SYNCSTORE *syncstore)
 
void SCIPsyncstoreSetSolveIsStopped (SCIP_SYNCSTORE *syncstore, SCIP_Bool stopped)
 
SCIP_Real SCIPsyncstoreGetLastUpperbound (SCIP_SYNCSTORE *syncstore)
 
SCIP_Real SCIPsyncstoreGetLastLowerbound (SCIP_SYNCSTORE *syncstore)
 
int SCIPsyncstoreGetLastNSols (SCIP_SYNCSTORE *syncstore)
 
int SCIPsyncstoreGetLastNBounds (SCIP_SYNCSTORE *syncstore)
 
SCIP_Longint SCIPsyncstoreGetLastMemTotal (SCIP_SYNCSTORE *syncstore)
 
SCIP_Real SCIPsyncstoreGetLastSyncfreq (SCIP_SYNCSTORE *syncstore)
 
SCIP_SYNCDATASCIPsyncstoreGetSyncdata (SCIP_SYNCSTORE *syncstore, SCIP_Longint syncnum)
 
SCIP_SYNCDATASCIPsyncstoreGetNextSyncdata (SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata, SCIP_Real syncfreq, SCIP_Longint writenum, SCIP_Real *delay)
 
SCIP_RETCODE SCIPsyncstoreEnsureAllSynced (SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata)
 
SCIP_RETCODE SCIPsyncstoreStartSync (SCIP_SYNCSTORE *syncstore, SCIP_Longint syncnum, SCIP_SYNCDATA **syncdata)
 
SCIP_RETCODE SCIPsyncstoreFinishSync (SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA **syncdata)
 
SCIP_STATUS SCIPsyncdataGetStatus (SCIP_SYNCDATA *syncdata)
 
int SCIPsyncstoreGetWinner (SCIP_SYNCSTORE *syncstore)
 
int SCIPsyncdataGetNSynced (SCIP_SYNCDATA *syncdata)
 
int SCIPsyncstoreGetNSolvers (SCIP_SYNCSTORE *syncstore)
 
SCIP_Longint SCIPsyncdataGetMemTotal (SCIP_SYNCDATA *syncdata)
 
SCIP_Real SCIPsyncdataGetSyncFreq (SCIP_SYNCDATA *syncdata)
 
SCIP_Real SCIPsyncdataGetUpperbound (SCIP_SYNCDATA *syncdata)
 
SCIP_Real SCIPsyncdataGetLowerbound (SCIP_SYNCDATA *syncdata)
 
void SCIPsyncdataGetSolutions (SCIP_SYNCDATA *syncdata, SCIP_Real ***solvalues, int **solowner, int *nsols)
 
SCIP_BOUNDSTORESCIPsyncdataGetBoundChgs (SCIP_SYNCDATA *syncdata)
 
void SCIPsyncdataSetSyncFreq (SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata, SCIP_Real syncfreq)
 
void SCIPsyncdataSetStatus (SCIP_SYNCDATA *syncdata, SCIP_STATUS status, int solverid)
 
void SCIPsyncdataAddMemTotal (SCIP_SYNCDATA *syncdata, SCIP_Longint memtotal)
 
void SCIPsyncdataSetUpperbound (SCIP_SYNCDATA *syncdata, SCIP_Real upperbound)
 
void SCIPsyncdataSetLowerbound (SCIP_SYNCDATA *syncdata, SCIP_Real lowerbound)
 
void SCIPsyncdataGetSolutionBuffer (SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata, SCIP_Real solobj, int ownerid, SCIP_Real **buffer)
 
SCIP_RETCODE SCIPsyncdataAddBoundChanges (SCIP_SYNCSTORE *syncstore, SCIP_SYNCDATA *syncdata, SCIP_BOUNDSTORE *boundstore)
 
SCIP_Bool SCIPsyncstoreIsInitialized (SCIP_SYNCSTORE *syncstore)
 
SCIP_PARALLELMODE SCIPsyncstoreGetMode (SCIP_SYNCSTORE *syncstore)
 

Function Documentation

◆ SCIPsyncstoreCreate()

SCIP_RETCODE SCIPsyncstoreCreate ( SCIP_SYNCSTORE **  syncstore)

creates and captures a new synchronization store

Parameters
syncstorepointer 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
syncstorepointer 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
syncstorethe 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()

◆ SCIPsyncstoreExit()

◆ SCIPsyncstoreSolveIsStopped()

SCIP_Bool SCIPsyncstoreSolveIsStopped ( SCIP_SYNCSTORE syncstore)

checks whether the solve-is-stopped flag in the syncstore has been set by any thread

Parameters
syncstorethe 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
syncstorethe synchronization store
stoppedflag 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
syncstorethe 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
syncstorethe 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
syncstorethe 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
syncstorethe 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
syncstorethe 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
syncstorethe 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.

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
syncstorethe synchronization store
syncnumthe 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
syncstorethe synchronization store
syncdatathe synchronization data
syncfreqthe current synchronization frequency
writenumnumber of synchronizations the solver has written to
delaypointer 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
syncstorethe synchronization store
syncdatathe 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
syncstorethe synchronization store
syncnumthe number of the synchronization to start, which must be increasing between calls of the same thread
syncdatapointer 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
syncstorethe synchronization store
syncdatathe 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
syncdatathe 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
syncstorethe 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
syncdatathe 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
syncstorethe 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 of memory used from synchronization data

read amount total memory used from synchronization data

Parameters
syncdatathe 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
syncdatathe 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
syncdatathe 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
syncdatathe 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
syncdatathe synchronization data
solvaluesarray of buffers containing the solution values
solownerarray of ownerids of solutions
nsolspointer 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
syncdatathe 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
syncstorethe synchronization store
syncdatathe synchronization data
syncfreqthe synchronization frequency

Definition at line 619 of file syncstore.c.

References SCIP_SyncStore::initialized, MIN, 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
syncdatathe synchronization data the upperbound should be added to
statusthe status
solverididentifier 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
syncdatathe synchronization data the solution should be added to
memtotalthe 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
syncdatathe synchronization data the upperbound should be added to
upperboundthe upperbound

Definition at line 675 of file syncstore.c.

References MIN, and NULL.

Referenced by SCIP_DECL_CONCSOLVERSYNCWRITE().

◆ SCIPsyncdataSetLowerbound()

void SCIPsyncdataSetLowerbound ( SCIP_SYNCDATA syncdata,
SCIP_Real  lowerbound 
)

set lowerbound to the synchronization data

Parameters
syncdatathe synchronization data the lowerbound should be added to
lowerboundthe lowerbound

Definition at line 686 of file syncstore.c.

References MAX, and NULL.

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
syncstorethe synchronization store
syncdatathe synchronization data the solution should be added to
solobjthe objective value of the solution
owneridan identifier for the owner of the solution, e.g. the thread number
bufferpointer 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
syncstorethe synchronization store
syncdatathe synchronization data
boundstorebound 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
syncstorethe 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
syncstorethe synchronization store

Definition at line 785 of file syncstore.c.

References SCIP_SyncStore::mode, and NULL.