Inner array inlining for structure of arrays layout

Inner array inlining for structure of arrays layout
复制标题

数组布局结构的内部数组内联

DOI:
10.1145/3219753.3219760
复制
发表时间:
2018
期刊:
Proceedings of the 5th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY@PLDI 2018)
影响因子:
--
通讯作者:
Hidehiko Masuhara
Hidehiko Masuhara
中科院分区:
--
文献类型:
--
作者:
Matthias Springer;Yaozhu Sun;Hidehiko Masuhara

文献摘要

相似文献

以前的工作已经表明,与传统的阵列结构(AOS)数据布局相比,经过充分研究和SIMD友好的阵列结构(SOA)数据布局策略可以加速高性能计算中的应用程序。然而,标准的SOA布局不能处理内部数组结构;这种结构经常出现在基于图的应用程序和面向对象的设计中,具有高度多样性的关联。我们提出了不同的技术内联(嵌入)内部数组到AOS或SOA布局,以及嵌入式C++/CUDA DSL,让程序员编写这样的布局在一个符号接近标准C++的设计和实现。我们评估了几种布局策略与交通流模拟,在交通规划中的一个重要的现实世界的应用。
Previous work has shown how the well-studied and SIMD-friendly Structure of Arrays (SOA) data layout strategy can speed up applications in high-performance computing compared to a traditional Array of Structures (AOS) data layout. However, a standard SOA layout cannot handle structures with inner arrays; such structures appear frequently in graph-based applications and object-oriented designs with associations of high multiplicity.This work extends the SOA data layout to structures with array-typed fields. We present different techniques for inlining (embedding) inner arrays into an AOS or SOA layout, as well as the design and implementation of an embedded C++/CUDA DSL that lets programmers write such layouts in a notation close to standard C++. We evaluate several layout strategies with a traffic flow simulation, an important real-world application in transport planning.