IBM Support

Does CPLEX Optimization Studio behaves differently under NUMA architecture?

Question & Answer


Question

Is CPLEX engine aware of NUMA?

Answer

By default CPLEX has limited NUMA awareness.
Some of the Barrier code takes the NUMA architecture into consideration in terms of using mutexes on NUMA rather than the spin locks that work better on other architectures, as well as some places in the code that consider NUMA when allocating memory. However, in terms of complete NUMA awareness, by default CPLEX is not. Nonetheless, CPLEX's CPU binding parameter gives the user control over the CPUs, and hence NUMA nodes, that CPLEX uses. One particularly case where this can help is if the operating system heavily uses CPU 0, in which case you may get faster performance (or less performance variability) by binding CPLEX to CPUs other than node 0. 

But in terms of ubiquitous checks to see if certain memory segments fit into the local memory if a NUMA node, as of today CPLEX does not do that.

Additionnaly, while CPLEX is not explicitly NUMA aware, the fact that operating systems tend to allocate memory from the memory banks of the same CPU where the thread requesting memory is running does help. Of course, there are many factors that work against any possibility of being NUMA friendly. For example, search tree nodes may be generated in one thread then processed in another, running on another CPU. Or cuts may be generated in any thread, then they will be used in other threads. Still, CPLEX ensures that at least the matrix of the LP relaxation (which is actually the largest chunk of memory used) resides in the memory bank of the CPU where the creating thread was running at the time the matrix was created.

[{"Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSSA5P","label":"IBM ILOG CPLEX Optimization Studio"},"ARM Category":[{"code":"a8m0z000000bri0AAA","label":"Performance (Engine behaviour and API performance)"}],"ARM Case Number":"TS005263700","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Version(s)"}]

Product Synonym

CPLEX;COS

Document Information

Modified date:
23 March 2021

UID

ibm16435091