Skip to main content

Understanding Gurobi's Runtime Distribution

Answered

Comments

4 comments

  • David Torres Sanchez
    Gurobi Staff Gurobi Staff

    Hi Botan,

    These runtimes are so very small. Have you tried running the same experiment without solving the model? Also, what version of Gurobi are you using? We resolved a related issue in version 12.

    Since you are using simplex and this problem solves very quickly, there's probably minimal memory allocation, no multi-threading 

    Cheers, 
    David

    0
  • Botan Citil
    First Comment
    Gurobi-versary
    First Question

    Hi David,

    Thank you for your message. I am using Gurobi version 11.0. I have not yet run the experiment without solving the model, but I can test that and compare the runtimes.

    My main interest is understanding the variance in solving time for the same linear program. Specifically, I want to determine whether it is normal to observe some variation in solving time when running the same model on the same computers. I have also noticed that variances are more prevalent and chaotic as the model size increases. Below, I have attached a screenshot containing a graph that records the solve time of a linear program with 14,993 constraints and 29,991 continuous variables (5 are unbounded, and 29,986 are constrained to ≥ 0).

    Best,
    Botan

    0
  • David Torres Sanchez
    Gurobi Staff Gurobi Staff

    Hi Botan,

    This could be the effects of performance variability: What is performance variability?

    But a few ingredients are missing from the script:

    with gp.Env() as env, gp.read(filename, env=env) as model:
    # set seed, optimize, ...

    Cheers, 
    David

    0
  • Riley Clement
    Gurobi Staff Gurobi Staff

    Some notes on variation in solve time under identical conditions:

    At Gurobi we maintain several large clusters of machines for benchmarking and tuning purposes.  We are not only interested in determinism of the solution paths, but minimal variance in runtime across identical machines running the same version of Gurobi and model.  We went through a cluster upgrade last year and there was some difficulty in finding machines that could provide us the consistency we were looking for.  With identical machines we could guarantee identical solution paths but even consistent timings were difficult to obtain with many candidate machines with factors such as thermal effects on CPUs to turbo boosting coming into play.
     
    For very small, easy models, that require very consistent timing you end up needing to set all sorts of system parameters to minimize performance variations across machines and across time - using numactl to pin threads to NUMA codes, running OS threads on separate cores to handle interrupts, p-state/c-state transmissions to maximize clock rate and more.

    - Riley

    0

Please sign in to leave a comment.