C++ Data Layout Abstractions through Proxy Types

  • Programs that process linearly indexed fields with structured element types in a data-parallel way usually suffer from the fact that compilers fail to generate efficient code if the selected data layout appears inappropriate for the chosen target architecture. If their internal heuristics cannot proof a performance gain from a data-parallel execution, compilers may fall back to scalar code generation. Data access through proxy types together with a customized container is one means to assist the compiler in generating efficient machine code in these cases without changing the user code. We present an automated proxy-type generator (using Clang’s LibTooling) and a configurable C++ container that supports different data layouts in a transparent way.
Metadaten
Author:Florian Wende
Document Type:In Proceedings
Parent Title (English):2019 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW), 14th International Workshop on Automatic Performance Tunings (iWAPT)
First Page:758
Last Page:767
Year of first publication:2019
DOI:https://doi.org/10.1109/IPDPSW.2019.00126