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