• Gurobi Staff

Hi Anliang,

It is very hard to recommend specific hardware without knowing the kind of problems you like to solve. I hope these articles help guide your decision:

Generally, we recommend faster processors over more cores because often the single-core performance is more important than better multi-threading support.

In any case, you should spend some time on parameter tuning to cut down on the solving time. Refer to this section in our documentation for further information:

Parameter Tuning Tool (gurobi.com)

Cheers,
Matthias

Hi Matthias,

Thank you very much for the information, it is really helpful. Problems I like to solve are mostly integer linear programming (ILP), and sometimes I deal with mixed ILP.

If I understand it correctly, single-thread performance is very important to Gurobi performance. This means a higher clock frequency takes a higher priority over multi-core. For commercial CPUs, desktop PCs normally have higher clock frequency than servers. Also, PCs usually support higher frequency RAM than servers do. In this way, it is better to choose high-performance PCs, right? Feel free to correct me if I am wrong.

For parameter tuning, I recently tried to move one instance that cannot be solved within three hours on my PC to neos server. And thanks to the free resources. The instance was solved within an hour where the method was changed from 5 on my PC (deterministic concurrent simplex) to 1 on neos servers (dual simplex). For the following solving info, could you please give more advice on parameter tuning for the same model with some other similar data files? Also, I find for most cases the optimal results came out very fast but the bound increased very slow (for a minimization problem). Which one is a better choice, proving optimality or improving the bound? Thanks again.

Checking ampl.mod for gurobi_options...Checking ampl.com for gurobi_options...Executing AMPL.processing data.processing commands.Executing on prod-exec-7.neos-server.org Presolve eliminates 24 constraints and 48 variables.Adjusted problem:2281 variables:        1608 binary variables        649 integer variables        24 linear variables9162 constraints, all linear; 36252 nonzeros        894 equality constraints        8268 inequality constraints1 linear objective; 1 nonzero. Gurobi 9.1.1: bestbound=1mipfocus=3method=1timing=1wantsol=1outlev=1logfreq=100logfile = RESULT\log\trail_N6S6-6-method.txtthreads=4Gurobi Optimizer version 9.1.1 build v9.1.1rc0 (linux64)Thread count: 32 physical cores, 64 logical processors, using up to 4 threadsOptimize a model with 9162 rows, 2281 columns and 36252 nonzerosModel fingerprint: 0x5403a7adVariable types: 24 continuous, 2257 integer (1608 binary)Coefficient statistics:  Matrix range     [1e+00, 1e+04]  Objective range  [1e+00, 1e+00]  Bounds range     [1e+00, 4e+03]  RHS range        [1e+00, 3e+04]Presolve removed 4008 rows and 300 columnsPresolve time: 0.05sPresolved: 5154 rows, 1981 columns, 20868 nonzerosVariable types: 0 continuous, 1981 integer (1332 binary)Presolve removed 606 rows and 288 columnsPresolved: 4548 rows, 1693 columns, 19475 nonzeros  Root relaxation: objective 2.000000e+00, 318 iterations, 0.02 seconds     Nodes    |    Current Node    |     Objective Bounds      |     Work Expl Unexpl |  Obj  Depth IntInf | Incumbent    BestBd   Gap | It/Node Time      0     0    2.00000    0  365          -    2.00000      -     -    0s     0     0    5.33333    0  446          -    5.33333      -     -    0sH    0     0                     272.0000000    5.33333  98.0%     -    1sH    0     0                     208.0000000    5.33333  97.4%     -    1sH    0     0                     192.0000000    5.33333  97.2%     -    1s     0     0    6.00000    0  304  192.00000    6.00000  96.9%     -    1sH    0     0                     191.0000000    6.00000  96.9%     -    1s     0     0    6.22222    0  281  191.00000    6.22222  96.7%     -    1sH    0     0                     160.0000000    6.22222  96.1%     -    1sH    0     0                     144.0000000    6.22222  95.7%     -    2s     0     0    8.00000    0  267  144.00000    8.00000  94.4%     -    2sH    0     0                     139.0000000    8.00000  94.2%     -    2sH    0     0                     128.0000000    8.00000  93.8%     -    2sH    0     0                     112.0000000    8.00000  92.9%     -    2s     0     0    8.00000    0  322  112.00000    8.00000  92.9%     -    2sH    0     0                      91.0000000    8.00000  91.2%     -    2sH    0     0                      75.0000000    8.00000  89.3%     -    3sH    0     0                      64.0000000    8.00000  87.5%     -    3s     0     0    8.00000    0  272   64.00000    8.00000  87.5%     -    3s     0     0    8.00000    0  360   64.00000    8.00000  87.5%     -    3s     0     0    8.00000    0  258   64.00000    8.00000  87.5%     -    4s     0     0    8.00000    0  338   64.00000    8.00000  87.5%     -    4s     0     0    9.00000    0  291   64.00000    9.00000  85.9%     -    5s     0     0    9.00000    0  378   64.00000    9.00000  85.9%     -    5s     0     0   10.00000    0  311   64.00000   10.00000  84.4%     -    6s     0     0   10.00000    0  329   64.00000   10.00000  84.4%     -    7s     0     0   11.00000    0  187   64.00000   11.00000  82.8%     -    7s     0     0   11.00000    0  274   64.00000   11.00000  82.8%     -    7s     0     0   11.00000    0  308   64.00000   11.00000  82.8%     -    8s     0     0   11.00000    0  341   64.00000   11.00000  82.8%     -    8s     0     0   11.00000    0  297   64.00000   11.00000  82.8%     -    9s     0     0   11.00000    0  297   64.00000   11.00000  82.8%     -    9s     0     2   11.00000    0  249   64.00000   11.00000  82.8%     -    9sH   39    52                      63.0000000   11.00000  82.5%  2931   15sH   82   147                      62.0000000   11.00000  82.3%  1550   17sH   83   147                      59.0000000   11.00000  81.4%  1532   17sH  307   317                      58.0000000   11.00000  81.0%   623   21sH  399   435                      55.0000000   11.00000  80.0%   581   24sH  477   461                      54.0000000   11.00000  79.6%   534   24sH  917   833                      51.0000000   11.00000  78.4%   409   32s  1228  1079   27.00000   38  264   51.00000   27.00000  47.1%   442  100s  1981  1336   27.47447   38  404   51.00000   27.00000  47.1%   688  202sH 1993  1285                      48.0000000   27.00000  43.8%   701  202sH 2020  1236                      47.0000000   27.00000  42.6%   711  209sH 2029  1182                      43.0000000   27.00000  37.2%   720  209s  2575  1316   38.00000   41  251   43.00000   29.00000  32.6%  1130  305s  3297  1528   32.02026   45  512   43.00000   30.00000  30.2%  1429  405s  3984  1657   35.00000   38  494   43.00000   32.00000  25.6%  1570  519s  4794  2124   33.18760   57  436   43.00000   32.00000  25.6%  1708  629s  5432  2597   35.00000   38  427   43.00000   32.00000  25.6%  1796  722s  6163  3010   33.37547   43  508   43.00000   33.00000  23.3%  1837  821s  6792  3293   34.00000   54  327   43.00000   34.00000  20.9%  1853  913s  8924  3816   38.00000   44  171   43.00000   35.00000  18.6%  1636 1046s  9480  3997   39.33925   44  306   43.00000   35.00000  18.6%  1629 1100s 10541  4390   38.00000   39  180   43.00000   35.00000  18.6%  1618 1214s 11765  4868   38.00000   45  193   43.00000   35.00000  18.6%  1610 1324s 13108  5325   36.50000   57  459   43.00000   35.00000  18.6%  1586 1428s 14094  5655   38.11023   51  375   43.00000   35.00000  18.6%  1580 1512s 15374  5830   38.00000   58  121   43.00000   37.00000  14.0%  1559 1652s 17702  5762 infeasible   47        43.00000   38.00000  11.6%  1431 1725s 20476  5616   38.00000   51  185   43.00000   38.00000  11.6%  1300 1802s 24142  5583   38.00000   45  117   43.00000   38.00000  11.6%  1181 1905s 28070  5607   38.00000   53  170   43.00000   38.00000  11.6%  1087 2005s 31601  5690 infeasible   53        43.00000   38.00000  11.6%  1022 2112s 33979  5836   38.00000   50   90   43.00000   38.00000  11.6%   989 2200s 36998  5897   38.00000   50  241   43.00000   38.00000  11.6%   958 2316s 39858  5879   38.00000   63  238   43.00000   38.00000  11.6%   936 2428s 41895  5887   38.00000   48   93   43.00000   38.00000  11.6%   922 2510s 44671  5851   38.00000   42  150   43.00000   38.00000  11.6%   905 2621s 47103  5818   38.00000   53  265   43.00000   38.00000  11.6%   893 2720s 49708  5224 infeasible   54        43.00000   39.00000  9.30%   876 2803s 53356  3370 infeasible   48        43.00000   40.00000  6.98%   847 2915s 55584  2718 infeasible   51        43.00000   40.00000  6.98%   840 3000s 59580     0     cutoff   51        43.00000   41.83569  2.71%   818 3106s Cutting planes:  Gomory: 170  Cover: 2407  Implied bound: 116  Projected implied bound: 7  Clique: 12  MIR: 4507  StrongCG: 934  Flow cover: 8693  GUB cover: 30  Inf proof: 4  Zero half: 2998  Network: 86  RLT: 609  Relax-and-lift: 433 Explored 60530 nodes (49361318 simplex iterations) in 3106.59 secondsThread count was 4 (of 64 available processors) Solution count 10: 43 47 48 ... 63 Optimal solution found (tolerance 1.00e-04)Best objective 4.300000000000e+01, best bound 4.300000000000e+01, gap 0.0000%Gurobi Optimizer version 9.1.1 build v9.1.1rc0 (linux64)Thread count: 32 physical cores, 64 logical processors, using up to 4 threadsOptimize a model with 9162 rows, 2281 columns and 36252 nonzerosModel fingerprint: 0x6fd81fbeCoefficient statistics:  Matrix range     [1e+00, 1e+04]  Objective range  [1e+00, 1e+00]  Bounds range     [1e+00, 4e+03]  RHS range        [1e+00, 3e+04]Iteration    Objective       Primal Inf.    Dual Inf.      Time       0    4.3000000e+01   2.025000e+03   0.000000e+00      0s      13    4.3000000e+01   0.000000e+00   0.000000e+00      0s Solved in 13 iterations and 0.00 secondsOptimal objective  4.300000000e+01 Times (seconds):Input =  0.00859651Solve =  11869.1 (summed over threads)Output = 0.0454882Elapsed = 3107Gurobi 9.1.1: optimal solution; objective 4349361318 simplex iterations60530 branch-and-cut nodesplus 13 simplex iterations for intbasis suffix bestbound OUT;

Regards,
Anliang

• Gurobi Staff

Hi Anliang,

I recommend trying out a few parameters to see how the solver performs (Cuts, Presolve, MIPFocus). Ideally, you should find a similar but smaller model that is faster to solve, so you don't have to invest so much time.

Please understand that we cannot do parameter tuning based on a single log file.

Cheers,
Matthias

Hi Matthias,

Thank you very much. One more question, I tend to buy machines with AMD CPUs. Is there any difference between machines with AMD and INTEL CPUs? The problems I solve are mostly Integer Linear Programming (ILP), and might also involve mixed ILP. The OS is usually WIN10 or WIN server. The software I use is AMPL/Gurobi, might switch to python with Gurobi.

All the best,

Anliang

• Gurobi Staff

Hi Anliang,

I don't think any of the two is clearly better than the other and they both produce capable CPUs. Note that I am by no means an expert concerning cutting-edge CPU hardware specifics, so please take my advice with a grain of salt.

Cheers,
Matthias

You might also try to continue using your current machine and restrict Gurobi to 6 cores. The remaining 2 cores might be sufficient for your other work. The difference between 6 and 8 cores for Gurobi might be less than you expect. Just give it a try.

Thanks Matthias and Thomas. Currently, I am following the advice by limiting threads to 14. It works well.