Is it possible to let AIMMS use more CPU?

  • 26 October 2021
  • 5 replies

Userlevel 1

When AIMMS is solving on my machine, it consistently uses a little over 21% of the total CPU capacity. Is it possible to let AIMMS use more than this?

EDIT: After investigating a little more, the ‘problem’ occurs while AIMMS is building the model. CPU usage during the solve is harder to observe since it is quite quick. The CPLEX 20.1.sta file shows that it prepares to use up to 8 threads.


Best answer by Marcel Hunting 27 October 2021, 14:24

View original

5 replies

Userlevel 4
Badge +4

Parallelization of the AIMMS Engine is an ongoing (development) effort, and therefore the AIMMS Engine will not use multiple threads in all situations. AIMMS will only use one thread for model generation.

If you want to improve the performance of your AIMMS model then it would be useful to try the AIMMS Profiler. That way you can pinpoint the bottlenecks in your model.

Userlevel 1

@Marcel Hunting After reading you comment I did some experimenting and currently this happens in the model building phase (so not during the solve, my bad).

Can AIMMS use more resources in this case? My overall aim is to find out if there are throttles on performance that I could possibly undo.

Userlevel 1

@mohansx I think I misphrased my question. I am wondering whether there are AIMMS settings that would throttle CPU usage. If so, I’d like to expand AIMMS’ available CPU capacity in order to increase performance.

Userlevel 4
Badge +4

Hi @LowBjorn , During which part of running your AIMMS project is the CPU usage around 21%?

For the solving part, it depends on the problem type and solver whether multiple threads (and therefore more CPU) will be used. The solvers CPLEX and Gurobi use as many threads as possible by default, but, e.g., the solver CONOPT uses only one thread per default.

When solving a LP problem only one thread will be used if CPLEX or Gurobi uses the simplex algorithm, but multiple threads will be used when they use the barrier or concurrent algorithm. When solving a MIP problem multiple threads are typically only used if multiple (unexplored) branch-and-bounds nodes are available. Mostly only one thread will be used while solving the root node of a MIP problem.

It would be useful to enable solver logging to get more insight on what the solver is doing while CPU usage is around 21%. How to switch on solver logging is described in this How-To article.

Userlevel 5
Badge +2

@LowBjorn AIMMS (and the solver) use as much resources (CPU and memory) as is required out of the available resources. 

There is no way to force them to use more, which wouldn’t accomplish anything anyway. AIMMS would use more CPU if it needed to. 


One thing you can check is the option global_thread_limit which controls the number of CPU cores that AIMMS (and the solver) can use. 


Didn't find what you were looking for? Try searching on our documentation pages:

AIMMS Developer & PRO | AIMMS How-To | AIMMS SC Navigator