Scippy

SCIP

Solving Constraint Integer Programs

Detailed Description

the function declarations for the synchronization store

Author
Leona 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 67 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 89 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 124 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 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().

◆ 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 259 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 272 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 283 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 294 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 305 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 316 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 327 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 340 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 361 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 409 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 438 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()

◆ SCIPsyncdataGetStatus()

SCIP_STATUS SCIPsyncdataGetStatus ( SCIP_SYNCDATA syncdata)

gets status in synchronization data

Parameters
syncdatathe synchronization data

Definition at line 521 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 531 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 545 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 555 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 566 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 576 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 586 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 596 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 606 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 624 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 634 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 648 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 684 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 695 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 706 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 719 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 778 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 795 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 805 of file syncstore.c.

References SCIP_SyncStore::mode, and NULL.