Solving Constraint Integer Programs

How to use the concurrent solving mode


In SCIP 4.0 a new feature has been added that allows to run multiple SCIP instances with different settings on one problem in parallel. To use this feature SCIP has to be compiled with an additional make option to enable the threading functionality (e.g. TPI=tny, see Makefiles / Installation information). Then, a concurrent solve can be started by using the concurrentopt command instead of the optimize command in the SCIP shell, or by calling the interface function SCIPsolveParallel(). To configure the behavior of the concurrent solving mode there are new parameters in the category concurrent/ and parallel/ which will be explained here shortly.

Controlling the number of threads

The parameters parallel/maxnthreads and parallel/minnthreads can be used to configure the number of threads that sould be used for solving. SCIP will try to use the configured maximum number of threads. If the problem that is currently read is too large SCIP will automatically use fewer threads, but never go below the configured minimum number of threads.

Using emphasis settings

The parameters concurrent/scip.../prefprio configure which concurrent solvers should be used. The concurrent solver scip will use the same settings as the SCIP instance configured by the user. The other concurrent solvers, e.g. scip-feas, will load the corresponding emphasis setting. The behavior of the prefprio parameter is as follows: If it is set to 1.0 for scip-feas and scip-opti, and to 0.0 for every other concurrent solver, then the threads will be evenly distributed between the two types scip-feas and scip-opti. An example: if 4 threads are used each of these concurrent solvers will use 2 threads. If the prefprio for one solver is set to 0.33 and the other is set to 1.0, then the former will use 1 thread and the latter will use 3 threads of the 4 available threads.

Running custom solvers

To use custom settings for the concurrent solvers there is the parameter concurrent/paramsetprefix. If custom parameters should be loaded by the concurrent solvers, then it must point to the folder where they are located (including a path separator at the end). The parameter settings must be named after the concurrent solvers, e.g. if only the concurrent solver scip is used they should be named scip-1, scip-2, scip-3. When different types of concurrent solvers are used the counter starts at one for each of them, e.g. scip-1 and scip-feas-1.