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.
Dr. Georg Hager
Regionales Rechenzentrum Erlangen
+49 (0)9131 85 28973