NUMA Optimizations
General Remarks
This project aims at developing programming and optimization strategies to improve data placement on shared memory computers with non-uniform data access characteristics. This includes ccNUMA systems, but also multi-core processors that often have a complex hierarchical cache structure.
C++ programming techniques for High Performance Computing on systems with non-uniform memory access using OpenMP
Diploma thesis at the
Georg Simon Ohm University of Applied Sciences Nuremberg.
Author: Holger Stengel (now RRZE)
Supervisor: Georg Hager (HPC Services).
Abstract: This work develops programming methodologies for C++ that respect the need for optimal NUMA page placement in OpenMP code. An overloaded new[] operator is presented that guarantees proper placement for arrays of objects. Along the same lines, the STL vector<> class can be endowed with an allocator class argument that serves the same purpose. The disadvantages of std::vector<> in terms of performance and usability in a NUMA setting are circumvented by developing a special numa_vector<> container which is compatible with all STL algorithms. Finally, a container with a segmented, padded data structure, including appropriate iterators, allows one to make generic algorithms aware of data segmentation of any kind (including NUMA) without sacrificing performance.
Downloads:
Poster (English),
Thesis (in German).
Contact
Project manager:
Dr. Georg Hager
Regionales Rechenzentrum Erlangen
HPC Services
Martensstr. 1
91058 Erlangen
+49 (0)9131 85 28973
georg.hager@rrze.fau.de



