Skip to main content

suggestions to pick a computing server

Answered

Comments

7 comments

  • Matthias Miltenberger
    Gurobi Staff 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

    0
  • Anliang Cai
    Gurobi-versary
    First Comment
    First Question

    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 variables
    9162 constraints, all linear; 36252 nonzeros
    894 equality constraints
    8268 inequality constraints
    1 linear objective; 1 nonzero.

    Gurobi 9.1.1: bestbound=1
    mipfocus=3
    method=1
    timing=1
    wantsol=1
    outlev=1
    logfreq=100
    logfile = RESULT\log\trail_N6S6-6-method.txt
    threads=4
    Gurobi Optimizer version 9.1.1 build v9.1.1rc0 (linux64)
    Thread count: 32 physical cores, 64 logical processors, using up to 4 threads
    Optimize a model with 9162 rows, 2281 columns and 36252 nonzeros
    Model fingerprint: 0x5403a7ad
    Variable 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 columns
    Presolve time: 0.05s
    Presolved: 5154 rows, 1981 columns, 20868 nonzeros
    Variable types: 0 continuous, 1981 integer (1332 binary)
    Presolve removed 606 rows and 288 columns
    Presolved: 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 - - 0s
    H 0 0 272.0000000 5.33333 98.0% - 1s
    H 0 0 208.0000000 5.33333 97.4% - 1s
    H 0 0 192.0000000 5.33333 97.2% - 1s
    0 0 6.00000 0 304 192.00000 6.00000 96.9% - 1s
    H 0 0 191.0000000 6.00000 96.9% - 1s
    0 0 6.22222 0 281 191.00000 6.22222 96.7% - 1s
    H 0 0 160.0000000 6.22222 96.1% - 1s
    H 0 0 144.0000000 6.22222 95.7% - 2s
    0 0 8.00000 0 267 144.00000 8.00000 94.4% - 2s
    H 0 0 139.0000000 8.00000 94.2% - 2s
    H 0 0 128.0000000 8.00000 93.8% - 2s
    H 0 0 112.0000000 8.00000 92.9% - 2s
    0 0 8.00000 0 322 112.00000 8.00000 92.9% - 2s
    H 0 0 91.0000000 8.00000 91.2% - 2s
    H 0 0 75.0000000 8.00000 89.3% - 3s
    H 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% - 9s
    H 39 52 63.0000000 11.00000 82.5% 2931 15s
    H 82 147 62.0000000 11.00000 82.3% 1550 17s
    H 83 147 59.0000000 11.00000 81.4% 1532 17s
    H 307 317 58.0000000 11.00000 81.0% 623 21s
    H 399 435 55.0000000 11.00000 80.0% 581 24s
    H 477 461 54.0000000 11.00000 79.6% 534 24s
    H 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 202s
    H 1993 1285 48.0000000 27.00000 43.8% 701 202s
    H 2020 1236 47.0000000 27.00000 42.6% 711 209s
    H 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 seconds
    Thread 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 threads
    Optimize a model with 9162 rows, 2281 columns and 36252 nonzeros
    Model fingerprint: 0x6fd81fbe
    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]
    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 seconds
    Optimal objective 4.300000000e+01

    Times (seconds):
    Input = 0.00859651
    Solve = 11869.1 (summed over threads)
    Output = 0.0454882
    Elapsed = 3107
    Gurobi 9.1.1: optimal solution; objective 43
    49361318 simplex iterations
    60530 branch-and-cut nodes
    plus 13 simplex iterations for intbasis

    suffix bestbound OUT;

    Regards,
    Anliang

    0
  • Matthias Miltenberger
    Gurobi Staff 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

    0
  • Anliang Cai
    Gurobi-versary
    First Comment
    First Question

    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. 

    Thank you for your time.

    All the best,

    Anliang 

    0
  • Matthias Miltenberger
    Gurobi Staff 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

    0
  • Thomas Opfer
    Gurobi-versary
    Collaborator

    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.

    0
  • Anliang Cai
    Gurobi-versary
    First Comment
    First Question

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

    0

Please sign in to leave a comment.