Distributed Algorithm Considerations
So far in this section, we've focused almost entirely on configuration and setup issues for the distributed algorithms in this section. These algorithms have been designed to be nearly indistinguishable from the single machine versions. Our hope is that, if you know how to use the single machine version, you'll find it straightforward to use the distributed version. The distributed algorithms respect all of the usual parameters. For distributed MIP, you can adjust strategies, adjust tolerances, set limits, etc. For concurrent MIP, you can allow Gurobi to choose the settings for each machine automatically or you can use concurrent environments to make your own choices. For distributed tuning, you can use the usual tuning parameters, including TuneTimeLimit, TuneTrials, and TuneOutput.
Performance Across Distributed Workers
There are a few things to be aware of when using distributed algorithms, though. One relates to relative machine performance. As we noted earlier, distributed algorithms work best if all of the workers give very similar performance. For example, if one machine in your worker pool were much slower than the others in a distributed tuning run, any parameter sets tested on the slower machine would appear to be less effective than if they were run on a faster machine. Similar considerations apply for distributed MIP and distributed concurrent. We strongly recommend that you use machines with very similar performance. Note that if your machines have similarly performing cores but different numbers of cores, we suggest that you use the Threads parameter to make sure that all machines use the same number of cores.
Another difference between the distributed algorithms and our
single-machine algorithms is in the callbacks. The
distributed MIP and distributed concurrent solvers do not
provide the full range of callbacks that are available with our
standard solvers. They will only provide the
section for details on the different callback types.
The distributed algorithms provide slightly different logging information from the standard algorithms. Consult the Distributed MIP Logging section for details.