If I have a multi-processor board that has cache-coherent non-uniform memory access ( NUMA ), i.e. separate \"northbridges\" with separate RAM for each processor, does any compi
Linux kernel knows about NUMA and will try to give your process pages from memory local to the current CPU (source: U. Drepper, "What Every Programmer Should Know About Memory".)
For MS platforms, the compiler is not aware of NUMA. However, the system is NUMA aware and will attempt to allocate memory in the same node.
See http://code.msdn.microsoft.com/64plusLP for some more details on how recent versions of Windows handle NUMA.
NUMA-aware memory allocation is not done at compile time. Making assumptions like this would be bad for portability.
On Linux, this is a kernel function, though you can control this at runtime with numactl
or set_mempolicy
or with libnuma
.