I'm using Gurobi to solve a MIQP, both in my local machine and in a computing cluster.
My local machine has a Intel Core i7-3632QM @ 2.20GHz processor, and when running my program in it, Gurobi outputs the following information:
Gurobi Optimizer version 9.1.1 build v9.1.1rc0 (win64)
Thread count: 4 physical cores, 8 logical processors, using up to 8 threads
which is in accordance with my local machine's processor.
The computing cluster I am using has 32 Intel (R) Xeon(R) Gold 5218 CPU @ 2.30GHz processors. I am using SLURM as a resource manager, and I choose the number of CPUs to use through the command "--cpus-per-task". However, no matter how many CPUs I use to run my program, when running my program in the cluster, Gurobi always outputs:
Gurobi Optimizer version 9.1.2 build v9.1.2rc0 (linux64)
Thread count: 32 physical cores, 32 logical processors, using up to 32 threads
As expected, when running my program in the cluster, the optimization time of my program decreases the more CPUs I allow it to use. However, what is a bit puzzling to me is that I need to set --cpus-per-task to at least 4 in order to get the same performance I have in my local machine. For example, if I set --cpus-per-task=1, the optimization program takes much longer when running in the cluster.
My questions are: is there a reason why I need 4 CPUs in the cluster to achieve the same performance I get using one CPU in my local machine? Am I misunderstanding how the parallel optimization features of Gurobi are expected to work?
Please sign in to leave a comment.