The Gurobi Optimizer



Similar documents
Cloud Branching. Timo Berthold. joint work with Domenico Salvagnin (Università degli Studi di Padova)

Using diversification, communication and parallelism to solve mixed-integer linear programs

GUROBI OPTIMIZER QUICK START GUIDE. Version 6.0, Copyright c 2014, Gurobi Optimization, Inc.

Using computing resources with IBM ILOG CPLEX

CPLEX Tutorial Handout

- An Essential Building Block for Stable and Reliable Compute Clusters

Job Reference Guide. SLAMD Distributed Load Generation Engine. Version 1.8.2

Chapter 13: Binary and Mixed-Integer Programming

Mixed Integer Linear Programming in R

Binary search tree with SIMD bandwidth optimization using SSE

Introduction 1 Performance on Hosted Server 1. Benchmarks 2. System Requirements 7 Load Balancing 7

FPGA-based Multithreading for In-Memory Hash Joins

Parallel & Distributed Optimization. Based on Mark Schmidt s slides

Parallel Scalable Algorithms- Performance Parameters

Noncommercial Software for Mixed-Integer Linear Programming

Mark Bennett. Search and the Virtual Machine

Solving convex MINLP problems with AIMMS

BENCHMARKING CLOUD DATABASES CASE STUDY on HBASE, HADOOP and CASSANDRA USING YCSB

TOMLAB - For fast and robust largescale optimization in MATLAB

Understanding the Benefits of IBM SPSS Statistics Server

Improving Market Clearing Software Performance to Meet Existing and Future Challenges MISO s Perspective

Delivering Quality in Software Performance and Scalability Testing

Axceleon s CloudFuzion Turbocharges 3D Rendering On Amazon s EC2

Amazon EC2 XenApp Scalability Analysis

Scaling Objectivity Database Performance with Panasas Scale-Out NAS Storage

Optimizing the Performance of Your Longview Application

GPU File System Encryption Kartik Kulkarni and Eugene Linkov

An Overview Of Software For Convex Optimization. Brian Borchers Department of Mathematics New Mexico Tech Socorro, NM

PART IV Performance oriented design, Performance testing, Performance tuning & Performance solutions. Outline. Performance oriented design

Big Data Optimization at SAS

HP IMC Firewall Manager

DELL. Virtual Desktop Infrastructure Study END-TO-END COMPUTING. Dell Enterprise Solutions Engineering

Why Computers Are Getting Slower (and what we can do about it) Rik van Riel Sr. Software Engineer, Red Hat

MAGENTO HOSTING Progressive Server Performance Improvements

Virtuoso and Database Scalability

Informatica Ultra Messaging SMX Shared-Memory Transport

A numerically adaptive implementation of the simplex method

A Constraint Programming based Column Generation Approach to Nurse Rostering Problems

LS-DYNA Best-Practices: Networking, MPI and Parallel File System Effect on LS-DYNA Performance

Simplified Benders cuts for Facility Location

Unit 4: Performance & Benchmarking. Performance Metrics. This Unit. CIS 501: Computer Architecture. Performance: Latency vs.

IBM Rational ClearCase, Version 8.0

DSS. Diskpool and cloud storage benchmarks used in IT-DSS. Data & Storage Services. Geoffray ADDE

StACC: St Andrews Cloud Computing Co laboratory. A Performance Comparison of Clouds. Amazon EC2 and Ubuntu Enterprise Cloud

IMCM: A Flexible Fine-Grained Adaptive Framework for Parallel Mobile Hybrid Cloud Applications

Dell Virtualization Solution for Microsoft SQL Server 2012 using PowerEdge R820

Benchmarking Cassandra on Violin

Chapter 1: Introduction

PERFORMANCE ENHANCEMENTS IN TreeAge Pro 2014 R1.0

Accelerating Server Storage Performance on Lenovo ThinkServer

White Paper. Real-time Capabilities for Linux SGI REACT Real-Time for Linux

RevoScaleR Speed and Scalability

Azure Scalability Prescriptive Architecture using the Enzo Multitenant Framework

Architectures for Big Data Analytics A database perspective

Rethinking SIMD Vectorization for In-Memory Databases

Scalable Data Analysis in R. Lee E. Edlefsen Chief Scientist UserR! 2011

HP A-IMC Firewall Manager

In-Memory Databases Algorithms and Data Structures on Modern Hardware. Martin Faust David Schwalb Jens Krüger Jürgen Müller

Performance Tuning for the Teradata Database

GAMS, Condor and the Grid: Solving Hard Optimization Models in Parallel. Michael C. Ferris University of Wisconsin

MS Exchange Server Acceleration

Performance Guideline for syslog-ng Premium Edition 5 LTS

Manjrasoft Market Oriented Cloud Computing Platform

PARALLELS CLOUD SERVER

A Middleware Strategy to Survive Compute Peak Loads in Cloud

Overview Motivating Examples Interleaving Model Semantics of Correctness Testing, Debugging, and Verification

Architectural patterns for building real time applications with Apache HBase. Andrew Purtell Committer and PMC, Apache HBase

Multilevel Load Balancing in NUMA Computers

Recommended hardware system configurations for ANSYS users

CHAPTER 1 INTRODUCTION

INTEGER PROGRAMMING. Integer Programming. Prototype example. BIP model. BIP models

Load and Performance Load Testing. RadView Software October

Choosing Between Commodity and Enterprise Cloud

Cisco UCS and Fusion- io take Big Data workloads to extreme performance in a small footprint: A case study with Oracle NoSQL database

Performance Testing. Slow data transfer rate may be inherent in hardware but can also result from software-related problems, such as:

Moving Virtual Storage to the Cloud. Guidelines for Hosters Who Want to Enhance Their Cloud Offerings with Cloud Storage

4D WebSTAR 5.1: Performance Advantages

Dell One Identity Manager Scalability and Performance

Tips and Tricks for Using Oracle TimesTen In-Memory Database in the Application Tier

2015 The MathWorks, Inc. 1

MS SQL Performance (Tuning) Best Practices:

Benchmark Hadoop and Mars: MapReduce on cluster versus on GPU

Contributions to Gang Scheduling

Part V Applications. What is cloud computing? SaaS has been around for awhile. Cloud Computing: General concepts

find model parameters, to validate models, and to develop inputs for models. c 1994 Raj Jain 7.1

Performance Analysis and Optimization Tool

Optimized Scheduling in Real-Time Environments with Column Generation

A Comparative Study on Vega-HTTP & Popular Open-source Web-servers

Map-Reduce for Machine Learning on Multicore

How Solace Message Routers Reduce the Cost of IT Infrastructure

Whitepaper: performance of SqlBulkCopy

Resource Utilization of Middleware Components in Embedded Systems

Jérôme Lepage - CFCamp Mondadori France

UTS: An Unbalanced Tree Search Benchmark

Resource Allocation Schemes for Gang Scheduling

Transcription:

The Gurobi Optimizer

Gurobi History Gurobi Optimization, founded July 2008 Zonghao Gu, Ed Rothberg, Bob Bixby Started code development March 2008 Gurobi Version 1.0 released May 2009 History of rapid, significant performance improvements Close to 2x average speedup year-over-year Over 1200 companies have become Gurobi customers Performance, superior support, transparent pricing and licensing History of continuing, significant innovations Free academic licenses First cloud offering Compute-server for client-server applications Distributed algorithms

Gurobi Algorithms Mixed-Integer Programming (MIP, MIQP, MIQCP) LP based branch-and-cut Parallel Concurrent Distributed concurrent Distributed parallel Linear and Quadratic Programming Primal simplex Dual simplex Parallel Barrier Concurrent Distributed concurrent Second-Order Cone Programming Parallel Barrier Linear Programming with piecewise linear objective Primal simplex Dual simplex

Gurobi APIs C, C++, Java,.NET, Python programming interfaces Simple command-line interface Python interactive interface Python modeling interface R and MATLAB matrix interfaces All standard modeling languages A variety of free-software projects

Gurobi Products Commercial and Academic Licenses Licensing options and pricing available at www.gurobi.com Free for academic use "Take Gurobi With You" program Cloud offering Amazon EC2 Gurobi Instant Cloud Gurobi Compute Server

The Gurobi Amazon Cloud Optimize on as many machines as you need, when you need them No need to purchase new computers or new Gurobi licenses Pay for what you use only pay for software and computers when you need to solve optimization models Distributed computing is included at no extra charge except for the cost of the machines No change is required to your code Use it alone or to supplement licenses you already own Available on Amazon Web Services

Gurobi Instant Cloud Gurobi Instant Cloud makes it fast and easy to use the cloud for optimization. Simply install Gurobi Optimizer on your computers, then connect them to the cloud in one step: Launch the Gurobi Instant Cloud from your account on www.gurobi.com Select a nearby data center and fast computers to quickly solve your models Use the Gurobi Instant Cloud dashboard to start and stop cloud computers and to configure your client computers Access it over the Internet via any Windows, Linux or Mac computer Confidently connect to your cloud server using automatic 256-bit AES encryption

How To Get Started Using Gurobi Gurobi 6.0 is installed on your virtual machine The license key expires October 31 Easy to get a free academic license key on Gurobi website Various examples in all programming APIs can be found in the "examples" sub-directory of the Gurobi distribution Some rich examples with detailed problem description and interactive demo are available on our website http://examples.gurobi.com Let's briefly look at one of them http://examples.gurobi.com/fcnfexample/

Distributed Optimization

Parallel algorithms and hardware Parallel algorithms must be designed around hardware What work should be done in parallel How much communication is required How long will communication take Goal: Make best use of available processor cores

Multi-Core Hardware Multi-core CPU Core Core Core Core Computer Memory Bottleneck

Distributed Computing Multi-core CPU Core Core Core Core Network Computer Memory Bottleneck Huge bottleneck!

How Slow Is Communication? Multi-core CPU Core Core Core Core Network Computer Memory 50GB/s 60ns latency 100MB/s 100us latency Network is ~1000x slower than memory Faster on a supercomputer, but still relatively slow

Distributed Algorithms in Gurobi 6.0 3 distributed algorithms in version 6.0 Distributed tuning Distributed concurrent LP (new in 6.0) MIP Distributed MIP (new in 6.0)

Distributed Tuning Tuning: MIP has lots of parameters Tuning performs test runs to find better settings Independent solves are obvious candidate for parallelism Distributed tuning a clear win 10x faster on 10 machines Hard to go back once you have tried it

Concurrent Optimization Run different algorithms/strategies on different machines/cores First one that finishes wins Nearly ideal for distributed optimization Communication: Send model to each machine Winner sends solution back Concurrent LP: Different algorithms: Primal simplex/dual simplex/barrier Concurrent MIP: Different strategies Default: vary the seed used to break ties Easy to customize via concurrent environments

Distributed MIP

Distributed MIP Architecture Manager-worker paradigm Manager Send model to all workers Track dual bound and worker node counts Rebalance search tree to put useful load on all workers Distribute feasible solutions Workers Solve MIP nodes Report status and feasible solutions Synchronized deterministically

Distributed MIP Phases Racing ramp-up phase Distributed concurrent MIP Solve same problem individually on each worker, using different parameter settings Stop when problem is solved or enough nodes are explored Choose a winner worker that made the most progress Main phase Discard all worker trees except the winner's Collect active nodes from winner, distribute them among now idle workers Periodically synchronize to rebalance load

Bad Cases for Distributed MIP Easy problems Why bother with heavy machinery? Small search trees Nothing to gain from parallelism Unbalanced search trees Most nodes sent to workers will be solved immediately and worker will become idle again "neos3" solved with SIP (predecessor of SCIP) Achterberg, Koch, Martin: "Branching Rules Revisited" (2004)

Good Cases for Distributed MIP Large search trees Well-balanced search trees Many nodes in frontier lead to large sub-trees "vpm2" solved with SIP (predecessor of SCIP) Achterberg, Koch, Martin: "Branching Rules Revisited" (2004)

Performance

MIPLIB 2010 Testset MIPLIB 2010 test set Set of 361 mixed-integer programming models Collected by academic/industrial committee MIPLIB 2010 benchmark test set Subset of the full set - 87 of the 361 models Those that were solvable by 2010 codes (Solvable set now includes 206 of the 361 models) Notes: Definitely not intended as a high-performance computing test set More than 2/3 solve in less than 100s 8 models solve at the root node ~1/3 solve in fewer than 1000 nodes

Three Views of 16 Cores Consider three different tests, all using 16 cores: On a 16-core machine: Run the standard parallel code on all 16 cores Run the distributed code on four 4-core subsets On four 4-way machines: Run the distributed code Which gives the best results?

Parallel MIP on 1 Machine Use one 16-core machine: Multi-core CPU Multi-core CPU Memory Memory Computer

Distributed MIP on 1 machine Treat one 16-core machine as four 4-core machines: Multi-core CPU Multi-core CPU Memory Memory Computer

Distributed MIP on 4 machines Use four 4-core machines Multi-core CPU Multi-core CPU Multi-core CPU Multi-core CPU Memory Memory Memory Memory Computer Computer Computer Computer Network

Performance Results Using one 16-core machine (MIPLIB 2010, baseline is 4-core run on the same machine) Config >1s >100s One 16-core 1.57x 2.00x Four 4-core 1.26x 1.82x Better to run one-machine algorithm on 16 cores than treat the machine as four 4-core machines Degradation isn't large, though

Performance Results Comparing one 16-core machine against four 4-core machines (MIPLIB 2010, baseline is single-machine, 4-core run) Config >1s >100s One 16-core machine 1.57x 2.00x Four 4-core machines 1.43x 2.09x Given a choice Comparable mean speedups Other factors Cost: four 4-core machines are much cheaper Admin: more work to admin 4 machines

Distributed Algorithms in 6.0 MIPLIB 2010 benchmark set Intel Xeon E3-1240v3 (4-core) CPU Compare against 'standard' code on 1 machine Machine s >1s >100s Wins Losses Speedup Wins Losses Speedup 2 40 16 1.14x 20 7 1.27x 4 50 17 1.43x 25 2 2.09x 8 53 19 1.53x 25 2 2.87x 16 52 25 1.58x 25 3 3.15x

Some Big Wins Model seymour Hard set covering model from MIPLIB 2010 4944 constraints, 1372 (binary) variables, 33K non-zeroes Machines Nodes Time (s) Speedup 1 476,642 9,267-16 1,314,062 1,015 9.1x 32 1,321,048 633 14.6x

Some Big Wins Model a1c1s1 lot sizing model from MIPLIB 2010 3312 constraints, 3648 variables (192 binary), 10k non-zeros Machines Nodes Time (s) Speedup 1 3,510,833 17,299-49 9,761,505 1,299 13.3x

Distributed Concurrent Versus Distributed MIP MIPLIB 2010 benchmark set (versus 1 machine run): >1s Machines Concurrent Distributed 4 1.26x 1.43x 16 1.40x 1.58x Machines >100s Concurrent Distributed 4 1.50x 2.09x 16 2.00x 3.15x

Distributed MIP Licensing Commercial Not included must purchase the distributed option Ask your sales representative for benchmarks or pricing Academic Named-user: not included in licenses from Gurobi website Site license: includes distributed parallel algorithms

Gurobi 6.5 Currently in beta phase Release scheduled for November 2015

Gurobi 6.5 Enhancements Variable hints API recorder and replay UpdateMode parameter BarX attribute to query the best barrier iterate OPB file format reader APIs Gurobi environments in Python interface IIS support in MATLAB R interface extensions Licensing Password protection for token servers Single-use licenses without token server Distributed WorkerPort parameter Distributed MIP logging Packaging Compute Server encryption routines in separate library Separate libc++ and libstdc++ ports on Mac to support clang++ Performance improvements

Variable Hints Provide hints to the solver which variable should take which value Guides heuristics and branching VarHintVal attribute: Specifies value for variable VarHintPri attribute: Specifies level of confidence in this particular variable value Comparison to MIP starts: MIP start is used to provide an initial feasible solution to the solver Is evaluated prior to starting the solution process Provides incumbent if feasible Does not influence solution process if it is not feasible Variable Hints guide the search High quality hints should lead to a high quality solution quickly Either through heuristics or through branching Affects the whole solution process

API Recorder Setting "Record" parameter to 1 will produce "recording000.grbr" file Tracks all Gurobi API calls Use gurobi_cl recording000.grbr to replay file Replay Gurobi execution independently from your own application Use cases: Debug performance issues Measures time spent in API calls (e.g., model building) and algorithms (solving) Identify cases where your program leaks Gurobi models or environments Lists number of models and environments that were never freed by your program Relay exact sequence of commands your program issues to Gurobi technical support in case you run into a question or issue that is difficult to reproduce Just send recording file, instead of having to send the whole application

Gurobi Environments in Python Interface Default Python environment is not created until it is first used Can be released with the new disposedefaultenv method Particularly useful in ipython Notebook Previously Gurobi would always consume a license token as long as a notebook was open

Performance Improvements in Gurobi 6.5 beta Problem Class # Wins Losses >1s >100s Speedu p # Wins Losses Speedup LP 376 105 50 1.08x 135 45 31 1.09x primal 353 96 53 1.04x 146 49 24 1.06x dual 329 86 50 1.07x 110 36 23 1.12x barrier 370 92 38 1.09x 111 44 20 1.23x QCP 68 9 7 1.01x 18 5 2 1.33x MILP 1741 930 471 1.36x 753 474 188 1.71x MIQCP 120 76 23 3.57x 48 39 5 13.41x Gurobi 6.0 vs. 6.5β: > 1.00x means that Gurobi 6.5β is faster QP and MIQP: test sets too small to be meaningful QCP results also questionable due to size of test set

Where does the MIP Performance come from? Cuts 24.1% Improved MIR aggregation 11.2% Improved node cut selection 5.1% More sophisticated root cut filtering and abort criterion 4.1% More aggressive implied bound cuts 1.2% More aggressive sub-mip cuts 0.8% Presolve15.6% Improvements in probing 7.0% Fixed sparse presolve 3.8% Merging parallel integer columns with arbitrary scalars 1.4% Disconnected components in presolve 1.3% More stable non-zero cancellation 0.7% Aggregating symmetric continuous variables 0.6% Branching 7.7% Replaced 10-5 threshold by 10-8 2.6% Follow-on branching 2.4% Using reduced costs as pseudo-costs 1.3% Modified threshold in implications based tie-breaking 1.2%

Where does the MIP Performance come from? MIP/LP integration 7.5% Adjusting pi to get stronger reduced costs 3.8% Improvements in simplex pricing 3.6% Heuristics 3.5% New heuristic running in parallel to the root node 2.4% Randomization in fix-and-dive heuristics 1.1% Node presolve 3.9% Improved conflict analysis 1.8% More node bound strengthening 1.4% Slightly faster propagation 0.7% Compiler 2.0% Switched to Intel 2016 compiler 2.0%

Where does the MIQCP Performance come from? Change # Wins Losses >1s >100s Speedu p # Wins Losses Speedup cone disaggr. 116 40 0 1.79x 25 16 0 4.43x branching thr. 106 30 6 1.39x 24 10 6 2.34x impr. presolve 114 12 2 1.16x 34 5 0 1.40x impr. OA cuts 110 48 25 1.51x 46 27 7 2.30x Cone disaggregation See Vielma, Dunning, Huchette, Miles (2015) Branching threshold See MILP: changing 10-5 to 10-8 Improved presolve Detecting one particular structure to improve bound strengthening Improved outer approximaxtion cuts See Günlük and Linderoth (2011)

Projected Roadmap Performance Parallelism Improve performance on 12+ core systems Improve distributed MIP performance and scalability Enhanced Gurobi Cloud offering Piecewise-linear extensions PWL objective in MIP PWL constraint coefficients in MIP Automatic linearization of common logical constraints

Thank You New academic users should visit our Academic Licensing page to get free academic versions of Gurobi http://www.gurobi.com/products/licensing-and-pricing/academic-licensi ng New commercial users should request a free evaluation version of Gurobi either directly from your account rep or by emailing sales@gurobi.com. If you have any general questions, please feel free to email info@gurobi.com.