Scippy

SCIP

Solving Constraint Integer Programs

scip_concurrent.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and library */
4 /* SCIP --- Solving Constraint Integer Programs */
5 /* */
6 /* Copyright (C) 2002-2022 Konrad-Zuse-Zentrum */
7 /* fuer Informationstechnik Berlin */
8 /* */
9 /* SCIP is distributed under the terms of the ZIB Academic License. */
10 /* */
11 /* You should have received a copy of the ZIB Academic License */
12 /* along with SCIP; see the file COPYING. If not visit scipopt.org. */
13 /* */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file scip_concurrent.h
17  * @ingroup PUBLICCOREAPI
18  * @brief public methods for concurrent solving mode
19  * @author Tobias Achterberg
20  * @author Timo Berthold
21  * @author Thorsten Koch
22  * @author Alexander Martin
23  * @author Marc Pfetsch
24  * @author Kati Wolter
25  * @author Gregor Hendel
26  * @author Leona Gottwald
27  */
28 
29 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
30 
31 #ifndef __SCIP_SCIP_CONCURRENT_H__
32 #define __SCIP_SCIP_CONCURRENT_H__
33 
34 
35 #include "scip/def.h"
36 #include "scip/type_concsolver.h"
37 #include "scip/type_retcode.h"
38 #include "scip/type_scip.h"
39 #include "scip/type_syncstore.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 /**@addtogroup PublicConcsolverTypeMethods
46  *
47  * @{
48  */
49 
50 /** creates a concurrent solver type and includes it in SCIP.
51  *
52  * @return \ref SCIP_OKAY is returned if everything worked. otherwise a suitable error code is passed. see \ref
53  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
54  *
55  * @pre This method can be called if @p scip is in one of the following stages:
56  * - \ref SCIP_STAGE_INIT
57  * - \ref SCIP_STAGE_PROBLEM
58  */
59 SCIP_EXPORT
61  SCIP* scip, /**< SCIP data structure */
62  const char* name, /**< name of concurrent_solver */
63  SCIP_Real prefpriodefault, /**< the default preferred priority of this concurrent solver type */
64  SCIP_DECL_CONCSOLVERCREATEINST ((*concsolvercreateinst)), /**< data copy method of concurrent solver */
65  SCIP_DECL_CONCSOLVERDESTROYINST ((*concsolverdestroyinst)), /**< data copy method of concurrent solver */
66  SCIP_DECL_CONCSOLVERINITSEEDS ((*concsolverinitseeds)), /**< initialize random seeds of concurrent solver */
67  SCIP_DECL_CONCSOLVEREXEC ((*concsolverexec)), /**< execution method of concurrent solver */
68  SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA ((*concsolvercopysolvdata)),/**< method to copy solving data */
69  SCIP_DECL_CONCSOLVERSTOP ((*concsolverstop)), /**< terminate solving in concurrent solver */
70  SCIP_DECL_CONCSOLVERSYNCWRITE ((*concsolversyncwrite)), /**< synchronization method of concurrent solver */
71  SCIP_DECL_CONCSOLVERSYNCREAD ((*concsolversyncread)), /**< synchronization method of concurrent solver */
72  SCIP_DECL_CONCSOLVERTYPEFREEDATA ((*concsolvertypefreedata)),/**< method to free data of concurrent solver type */
73  SCIP_CONCSOLVERTYPEDATA* data /**< the concurent solver type's data */
74  );
75 
76 /** returns the concurrent solver type with the given name, or NULL if not existing */
77 SCIP_EXPORT
79  SCIP* scip, /**< SCIP data structure */
80  const char* name /**< name of concurrent_solver */
81  );
82 
83 /** returns the array of included concurrent solver types */
84 SCIP_EXPORT
86  SCIP* scip /**< SCIP data structure */
87  );
88 
89 /** returns the number of included concurrent solver types */
90 SCIP_EXPORT
92  SCIP* scip /**< SCIP data structure */
93  );
94 
95 /** @} */
96 
97 /**@addtogroup PublicParallelMethods
98  *
99  * @{
100  */
101 
102 /** Constructs the parallel interface to execute processes concurrently.
103  *
104  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
105  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
106  *
107  * @pre This method can be called if @p scip is in one of the following stages:
108  * - \ref SCIP_STAGE_PROBLEM
109  * - \ref SCIP_STAGE_TRANSFORMING
110  * - \ref SCIP_STAGE_TRANSFORMED
111  * - \ref SCIP_STAGE_INITPRESOLVE
112  * - \ref SCIP_STAGE_PRESOLVING
113  * - \ref SCIP_STAGE_EXITPRESOLVE
114  * - \ref SCIP_STAGE_PRESOLVED
115  * - \ref SCIP_STAGE_INITSOLVE
116  * - \ref SCIP_STAGE_SOLVING
117  * - \ref SCIP_STAGE_SOLVED
118  * - \ref SCIP_STAGE_EXITSOLVE
119  * - \ref SCIP_STAGE_FREETRANS
120  *
121  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
122  */
123 SCIP_EXPORT
125  SCIP* scip /**< SCIP data structure */
126  );
127 
128 /** releases the current synchronization store
129  *
130  * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref
131  * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes.
132  *
133  * @pre This method can be called if @p scip is in one of the following stages:
134  * - \ref SCIP_STAGE_PROBLEM
135  * - \ref SCIP_STAGE_TRANSFORMING
136  * - \ref SCIP_STAGE_TRANSFORMED
137  * - \ref SCIP_STAGE_INITPRESOLVE
138  * - \ref SCIP_STAGE_PRESOLVING
139  * - \ref SCIP_STAGE_EXITPRESOLVE
140  * - \ref SCIP_STAGE_PRESOLVED
141  * - \ref SCIP_STAGE_INITSOLVE
142  * - \ref SCIP_STAGE_SOLVING
143  * - \ref SCIP_STAGE_SOLVED
144  * - \ref SCIP_STAGE_EXITSOLVE
145  * - \ref SCIP_STAGE_FREETRANS
146  * - \ref SCIP_STAGE_FREE
147  *
148  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
149  */
151  SCIP* scip /**< SCIP data structure */
152  );
153 
154 /** Gets the synchronization store.
155  *
156  * @return the \ref SCIP_SYNCSTORE parallel interface pointer to submit jobs for concurrent processing.
157  *
158  * @pre This method can be called if @p scip is in one of the following stages:
159  * - \ref SCIP_STAGE_INIT
160  * - \ref SCIP_STAGE_PROBLEM
161  * - \ref SCIP_STAGE_TRANSFORMING
162  * - \ref SCIP_STAGE_TRANSFORMED
163  * - \ref SCIP_STAGE_INITPRESOLVE
164  * - \ref SCIP_STAGE_PRESOLVING
165  * - \ref SCIP_STAGE_EXITPRESOLVE
166  * - \ref SCIP_STAGE_PRESOLVED
167  * - \ref SCIP_STAGE_INITSOLVE
168  * - \ref SCIP_STAGE_SOLVING
169  * - \ref SCIP_STAGE_SOLVED
170  * - \ref SCIP_STAGE_EXITSOLVE
171  * - \ref SCIP_STAGE_FREETRANS
172  *
173  * See \ref SCIP_Stage "SCIP_STAGE" for a complete list of all possible solving stages.
174  */
175 SCIP_EXPORT
177  SCIP* scip /**< SCIP data structure */
178  );
179 
180 /**@} */
181 
182 #ifdef __cplusplus
183 }
184 #endif
185 
186 #endif
struct SCIP_ConcSolverTypeData SCIP_CONCSOLVERTYPEDATA
#define SCIP_DECL_CONCSOLVERSYNCREAD(x)
#define SCIP_DECL_CONCSOLVEREXEC(x)
enum SCIP_Retcode SCIP_RETCODE
Definition: type_retcode.h:54
type definitions for return codes for SCIP methods
#define SCIP_DECL_CONCSOLVERDESTROYINST(x)
SCIP_RETCODE SCIPconstructSyncstore(SCIP *scip)
#define SCIP_DECL_CONCSOLVERSTOP(x)
SCIP_RETCODE SCIPincludeConcsolverType(SCIP *scip, const char *name, SCIP_Real prefpriodefault, SCIP_DECL_CONCSOLVERCREATEINST((*concsolvercreateinst)), SCIP_DECL_CONCSOLVERDESTROYINST((*concsolverdestroyinst)), SCIP_DECL_CONCSOLVERINITSEEDS((*concsolverinitseeds)), SCIP_DECL_CONCSOLVEREXEC((*concsolverexec)), SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA((*concsolvercopysolvdata)), SCIP_DECL_CONCSOLVERSTOP((*concsolverstop)), SCIP_DECL_CONCSOLVERSYNCWRITE((*concsolversyncwrite)), SCIP_DECL_CONCSOLVERSYNCREAD((*concsolversyncread)), SCIP_DECL_CONCSOLVERTYPEFREEDATA((*concsolvertypefreedata)), SCIP_CONCSOLVERTYPEDATA *data)
type definitions for SCIP&#39;s main datastructure
#define SCIP_DECL_CONCSOLVERINITSEEDS(x)
SCIP_RETCODE SCIPfreeSyncstore(SCIP *scip)
SCIP_SYNCSTORE * SCIPgetSyncstore(SCIP *scip)
#define SCIP_DECL_CONCSOLVERCOPYSOLVINGDATA(x)
#define SCIP_DECL_CONCSOLVERTYPEFREEDATA(x)
int SCIPgetNConcsolverTypes(SCIP *scip)
SCIP_CONCSOLVERTYPE ** SCIPgetConcsolverTypes(SCIP *scip)
the type definitions for the synchronization store
#define SCIP_Real
Definition: def.h:177
common defines and data types used in all packages of SCIP
#define SCIP_DECL_CONCSOLVERSYNCWRITE(x)
#define SCIP_DECL_CONCSOLVERCREATEINST(x)
SCIP_CONCSOLVERTYPE * SCIPfindConcsolverType(SCIP *scip, const char *name)
type definitions for concurrent solvers