Fiber SCIP Shared memory parallelization framework for SCIP
Fiber. SCIP - Shared memory parallelization framework for SCIP Yuji Shinano Zuse Institute Berlin 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 1
Outline Ø Ø Ø Fiber. SCIP in general How to build Fiber. SCIP How to run Fiber. SCIP and how it works Useful parameters and run time options ug[SCIP-*, *]-libraries about Para. SCIP 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 2
Fiber. SCIP in general Ø Fiber. SCIP is considered as a multi-threaded version of SCIP l External parallelization based on Ubiquity Generator (UG) Framework • Existing (sequential) solvers can be used Naming of instantiated solver by UG ug[base solver name, parallelization library name] 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 3
Instantiated parallel solvers by UG Mixed Integer Programming Problem(MIP) Solvers: Keep solving open instances using up to 80, 000 cores Para. Xpress potentially could handle over a million CPU cores Single thread Base Solver: SCIP Fiber. SCIP: ug[SCIP, C++11] Para. SCIP: ug[SCIP, MPI] Stochastic MIP Solver: Traveling Salesman Potentially could handle over a million CPU cores Problem (TSP) Solver Multi threaded Base Solver: Xpress Distributed memory Fiber. Xpress: Base Solver: PIPS-SBB ug[Xpress, C++11] ug[PISP-SBB, MPI] Para. Xpress: ug[Xpress, MPI] Base Solver: Concorde Fiber. Concorde: ug[Concorde, C++11] Para. Concorde: ug[Concorde, MPI] UG (Ubiquity Generator Framework) 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 4
Fiber. SCIP in general Ø Fiber. SCIP is considered as a multi-threaded version of SCIP l External parallelization based on Ubiquity Generator (UG) Framework • Existing (sequential) solvers can be used Naming of instantiated solver by UG ug[base solver name, parallelization library name] – ug[SCIP, C++11] : Fiber. SCIP – ug[SCIP, MPI]: Para. SCIP Instance solved inside of Fiber. SCIP is different from that of SCIP in default settings Ø Fiber. SCIP has not been tuned since 2013 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 5
Current performance of Fiber. SCIP As of 19 May 2020 (http: //plato. asu. edu/ftp/milp. html) - 45 + 13 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 6
How to build Fiber. SCIP Ø Download scipoptsuite-7. 0. 0. tgz from https: //scip. zib. de/index. php#download Ø Expand the archive and under scipoptsuite-7. 0. 0/ l compile Fiber. SCIP without Pa. PILO make ug l compile Fiber. SCIP with Pa. PILO make ug PAPILO=true Ø Test Fiber. SCIP l under scipoptsuite-7. 0. 0/ug make test 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 7
How to run Fiber. SCIP Ø Fiber. SCIP binary is located below as fscip (this is a symbolic link) l scipoptsuite-7. 0. 0/ug/bin/fscip • under scipoptsuite-7. 0. 0/ug/bin/ ls –la fscip-0. 9. 0. darwin. x 86_64. gnu. opt. spx 2 fscip -> fscip-0. 9. 0. darwin. x 86_64. gnu. opt. spx 2 Ø Run Fiber. SCIP with default settings l Under scipoptsuite-7. 0. 0/ug/check. . /bin/fscip. . /settings/default. set instance_data [–sth n] n : number of SCIP solver threads (each SCIP solver thread solves sub-MIPs) –sth n is omitted, the number of logical cores of PC is used 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 8
How UG initializes all solvers [Initialization] Original Load. Coordinator SCIP solver I/O , presolve waiting: running: presolved instance A: Original (sub-)problem presolved instance A’: Presolved presolved(sub-)problem instance P Solver 1 Solver 2 Presolved is 4 distributed Solver n Solver 3 instance All Solvers keep the presolved instance 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 9
Run Fiber. SCIP with default settings - 1 Ø External codes and instance sizes of original and presolved instance are displayed presolved problem is changed a lot 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 10
Run Fiber. SCIP with default settings - 2 Ø External codes and instance sizes of original and presolved instance are displayed presolved problem is not changed a lot 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 11
How UG does ramp-up (start with multiple trees search) [Ramp-up(Racing)] Original Load. Coordinator Base solver I/O , presolve waiting: running: Winner Solver 1 Solver 2 Solver 3 Solver n Solver 4 All Solvers start solving immediately, trying to generate different search trees ug[SCIP, *]: work with distributed domain propagation 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 12
How UG does ramp-up (start with multiple trees search) [Ramp-up(Racing)] Original Load. Coordinator Base solver I/O , presolve waiting: running: Winner Solver 1 Solver 2 Solver 3 The LC does not always collect all nodes Solver n Solver 4 When the racing terminated without enough open nodes, automatically the ramp-up is continued with normal ramp-up 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 13
Run Fiber. SCIP with default settings - 3 Ø racing stage status is displayed (can solved in racing stage) 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 14
Run Fiber. SCIP with default settings - 4 Ø racing stage status is displayed 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 15
How UG does ramp-up (start with a single tree search) [Normal Ramp-up] Original Load. Coordinator SCIP solver I/O , presolve waiting: running: presolved instance Solver 1 Solver 2 presolved instance Presolve again with added bound changes Solver 3 Solver n Solver 4 This procedure continues until all solvers become busy 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 16
How UG does ramp-up (start with a single tree search) [Normal Ramp-up] Original Load. Coordinator SCIP solver I/O , presolve waiting: running: presolved instance Solver 1 Solver 2 presolved instance Presolve again with added bound changes Solver 3 Solver n Solver 4 All transfer data need to be converted back for the presolved instance All feasible solutions need to be converted back for the original instance 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 17
Run Fiber. SCIP with default settings - 4 Ø Global lower bound and lower bound in all active solvers are displayed : 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 18
How UG does dynamic load balancing during primal single tree search in parallel Load. Coordinator Open nodes: Solver 1 Solver 2 p Solver 3 Solver 4 Solver 5 Solver n Try to keep p open nodes in Load. Coordinator Notification message: best lower bound, # nodes remain, # nodes solved - Send periodically and asynchronously - Interval is specified by a parameter Load. Coordinator makes selected Solvers in collecting mode Expected to have heavy nodes: large subtree underneath 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 19
Layered presolving Original A: Original (sub-)problem A’: Presolved (sub-)problem A’: Original (sub-)problem A’’: Presolved (sub-)problem UG causes algorithmic changes to the base solver 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 20
Useful parameters and run time options - 1 Ø Output presolved insance in LP format l Output. Presolved. Instance = TRUE in settings/default. set l The following file is generated • problem_name_presolved. lp 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 21
Useful parameters and run time options - 2 Ø Output all incumbent solutions and statistics l Quiet = FALSE in settings/default. set in this case, -q option should be used 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 22
Useful parameters and run time options - 3 Ø The following files are generated statistics about load balancing Fiber. SCIP statistics in racing stage Fiber. SCIP statistics Non default SCIP parameters used in Fiber. SCIP How upper and lower bounds are evolved (displayed in standard output in default) all incumbent solutions for presolved instances (Generated in Solvers) UG parameters 03. 06. 2020 all incumbent solutions for original instances (Generated in Solvers) SCIP Workshop, Online, 03 -04 Jun 2020 23
Useful parameters and run time options - 4 Ø log all SCIP outputs for solving sub-MIPs l The following files are generated. Each file contains SCIP outputs for solving sub-MIPs 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 24
Useful parameters and run time options - 5 Ø controlling racing termination criteria [UG parameter] (default: settings/default. set) Ø controlling SCIP algorithms by using SCIP parameters 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 25
User can control algorithms flexibly Load. Coordinator SCIP solver I/O , presolve -sl Each solver settings SCIP solver -s presolving settings Global root solving settings -sr Solver 1 Three independent parameter sets can be specified 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 26
Useful parameters and run time options - 6 Ø setting general SCIP parameter l User need to set –sl, -sr –s • make parameter file by using SCIP l run Fiber. SCIP (NOTE: gap is hard to control in Fiber. SCIP) 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 27
Useful parameters and run time options - 7 Ø User can customize racing settings l Set UG parameter as below l In this case, user provides below under settings/ • 00001. set, 00002. set, 00003. set • more than 3 Solvers work, different random seeds are used 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 28
What is ug[SCIP-*, *]-libraries Ø SCIP (Solving Constraint Integer Programs) l A software framework for LP based B&B algorithms l plugin based design Glue code Single thread Base Solver: SCIP Fiber. SCIP: ug[SCIP, C++11] Para. SCIP: ug[SCIP, MPI] UG (Ubiquity Generator Framework) 03. 06. 2020 Customized SCIP solvers (ex. SCIP-Jack) are developed as a set of plugins plus main function Software libraries Parallel Branch-and-Cut framework is provided ug[SCIP-*, *]-libraries are general purpose parallel B&B libraries SCIP Workshop, Online, 03 -04 Jun 2020 29
How to use ug[SCIP-*, *]-libraries Ø See the code under scipoptsuite-7. 0. 0/ug/ug_scip_applications 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 30
About Para. SCIP - 1 Ø If a user have MPI library on a cluster or a supercomputer, you can use Para. SCIP easily Ø Para. SCIP could faster than Fiber. SCIP even if it is on shared memory environment Ø Compiling Para. SCIP l Expand the archive and under scipoptsuite-7. 0. 0/ • compile Fiber. SCIP without Pa. PILO make ug COMM=mpi • compile Fiber. SCIP with Pa. PILO make ug PAPILO=true COMM=mpi Ø Run Para. SCIP mpirun –np 5. . /bin/parascip. . /settings/default. set instance_name. . number of MPI processes number of Solvers is 4 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 same as Fiber. SCIP 31
About Para. SCIP - 2 Ø A good summary 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 32
About Para. SCIP - 3 Ø For very hard MIP instances, Para. SCIP is strong to find good primal solutions Ø MIPLIB 2003: 4 instances are still open l MIPLIB did not have best known solutions, but MIPLIB 2017 has 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 33
dano 3 mip 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 34
t 1717 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 35
momentum 3 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 36
liu 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 37
Thanks for your interest and kind attention! 03. 06. 2020 SCIP Workshop, Online, 03 -04 Jun 2020 38
- Slides: 38