GHC can run Haskell threads on multiple cores and CPUs, which is the the way to make use of current and future multi-core and many-core architectures with GHC. However, GHC's runtime system currently treats all available cores/CPUs equal. This often results in bad performance on NUMA (non-uniform memory achitectures), where the memory-access latency and bandwidth chracteristics vary in dependence on the CPU and (physical) memory region accessed - i.e., each CPU has its own memory that it can access faster than that of other CPUs.
The goal of this project is to increase GHC's awareness of the memory characteristics of NUMA machines by allocating physical memory pages in suitable memory areas, making GC NUMA-aware, and providing library support to allocate memory with specific CPU affinity.
We have a 8x dualcore AMD Opteron NUMA machine (i.e., overall 16 cores) to develop and test code on.
Interested Mentors
Interested Students