14-18 October 2013
Amsterdam, Beurs van Berlage
Europe/Amsterdam timezone

Semi-automatic SIMD-efficient data layouts for object-oriented programs

14 Oct 2013, 17:25
Effectenbeurszaal (Amsterdam, Beurs van Berlage)


Amsterdam, Beurs van Berlage

Oral presentation to parallel session Software Engineering, Parallelism & Multi-Core Software Engineering, Parallelism & Multi-Core


Pascal Costanza (ExaScience Lab, Intel, Belgium)


Using Intel's SIMD architecture (SSE, AVX) to speed up operations on containers of complex class and structure objects is challenging, because it requires that the same data members of the different objects within a container have to be laid out next to each other, in a structure of arrays (SOA) fashion. Currently, programming languages do not provide automatic ways for arranging containers as structures of arrays. Instead, programmers have to change the data layout manually, which requires changed definitions of the classes involved that are at odds with object-oriented programming principles. This step is usually considered too invasive, and the common result is that programmers simply give up on the performance opportunity. I will present a novel technique, made possible by new C++11 capabilities, which bridges the gap and allows the programmer to lay out data in a structure of array format, and yet access the data members using the standard object-oriented programming style. The main value of the presented technique is that it makes the efficient use of Intel's SIMD architecture with C++ classes and structures substantially easier and thus available to a much wider audience of software developers.

Primary author

Pascal Costanza (ExaScience Lab, Intel, Belgium)

Presentation Materials