This section describes Gurobi Compute Server. This feature allows you to offload all of your Gurobi computations to a set of one or more servers.
When considering a program that uses Gurobi Compute Server, you can think of the optimization as proceeding in a sequence of three steps (although the following description is a bit over-simplified). In the first step, a client program builds an optimization model using any of the standard Gurobi interfaces (C, C++, Java, .NET, Python, MATLAB, R). In the second step, the computation associated with solving the model is performed on the server(s). In the third step, the results are passed back to the client.
All communication of model data and Gurobi results between the client and the server(s) is handled behind the scenes by the Gurobi libraries.
Gurobi compute servers support queuing and load balancing. You can set a limit on the number of simultaneous jobs each compute server will run. When this limit has been reached, subsequent jobs will be queued. If you have multiple compute servers, the current job load is automatically balanced among the available servers.
By default, the Gurobi job queue is serviced in a First-In, First-Out (FIFO) fashion. However, jobs can be given different priorities (through a client license file, or through API calls). Jobs with higher priorities are then selected from the queue before jobs with lower priorities.
Gurobi Compute Server provides several distributed-memory parallel features, including distributed tuning and distributed concurrent MIP. These features allow you to harness the power of multiple machines when solving a single model.
While these capabilities are meant to be transparent to the person writing or running the client programs. there are a few issues that developers and administrators need to be aware of, which are covered here.
If you are administering a Gurobi Compute Server environment, you have a few options when configuring your servers. For example, you can set the maximum number of jobs that will run on each server at a time, or set the password that will be required for client programs to access the servers. Gurobi Compute Server also provides a remote administration capability, to allow you to modify several of these choices later. These issues are covered in our section on setting up and administering a Gurobi Compute Server.
While the Gurobi Compute Server is meant to be transparent to both developers and users, there are a few aspects of compute server usage that you do need to be aware of. These include performance considerations, new optional APIs for configuring client programs, and capabilities that are only available in a Compute Server environment. These are covered in our section on Compute Server usage.