New or Improved Features

Version 12.0.0

Global Updates

  • Gurobi Compute Server now supports Gurobi Optimizer 12.0.0, in addition to past releases: 11.0.x and 10.0.x. Older versions are no longer supported nor packaged in the compute server.

  • Starting with 12.0.0, the reference manual of the Gurobi remote services, including the Compute Server and the Cluster Manager, is available on this website.

Thread-based Load balancing

The Compute Server supports thread-based load balancing of jobs across multiple nodes. This provides finer control over job allocation to nodes. Administrators must specify the thread limit for each node, which defines the maximum number of threads that can be reserved by all running jobs using the NODE_THREADLIMIT parameter. We recommend specifying the thread capacity for each node in the cluster, as each node may have a different capacity depending on its available hardware.

Additionally, submitted jobs can specify the maximum number of threads they are allowed to use, referred to as thread reservation. The thread reservation can be set using the ThreadLimit Gurobi environment parameter or the --thread-limit command-line flag when submitting a batch with grbcluster. If the thread reservation is not specified, or if an older version is being used, the thread reservation will default to the node’s thread limit divided by the number of allowed concurrent jobs.

Once a job is submitted, the nodes will collaborate to find an appropriate placement based on where the most threads are available. If there is a tie, the system will prefer nodes with fewer running jobs. Note that if a job is submitted with a thread reservation exceeding the thread limit of all nodes, it will be rejected. Otherwise, the job will be queued until a node with enough available threads is found. The load-balancing algorithm is greedy and will select the first job it can run.

In order to better support the thread-based load balancing explained above, the Cluster Manager provides additional visibility. To this end, the node view now includes the display of the node thread limit and the current thread reservation.

Job Interruption

Administrators can now interrupt a job that is already running in the cluster using actions in the Web UI or the command line grbcluster job interrupt <JOBID>. If the job is in the middle of an optimization, it will stop gracefully, as if it had reached a normal stopping condition, such as a time limit. However, the job itself will continue running, and it will wait for next command. This can help free up machine resources while allowing the client to react, retrieve the current solution, or take other appropriate actions. Note that this feature is only supported in runtimes 12.0.0 and later, and it will be ignored in earlier versions.