• Home
  • Search
  • Data Layout and SIMD Abstraction Layers: Decoupling Interfaces from Implementations
  • Open Access IconOpen Access
  • Cite Icon8
  • https://doi.org/10.1109/hpcs.2018.00089Copy DOI Icon

Data Layout and SIMD Abstraction Layers: Decoupling Interfaces from Implementations

  • Jul 1, 2018
  • Sylvain Jubertie +2 more
Show More
  • Abstract
  • Literature Map
  • References
  • Citations
  • Similar Papers
Abstract

From a high level point of view, developers define objects they manipulate in terms of structures or classes. For example, a pixel may be represented as a structure of three color components : red, green, blue and an image as an array of pixels. In such cases, the data layout is said to be organized as an array of structures (AoS). However, developing efficient applications on modern processors and accelerators often require to organize data in different ways. An image may also be stored as a structure of three arrays, one for each component. This data layout is called a structure of array (SoA) and is also mandatory to take advantage of SIMD units embedded in all modern processors. In this paper, we propose a lightweight C++ template-based framework to provide the high level representation most programmers use (AoS) on different data layouts fitted for SIMD vectorization. Some templated containers are provided for each proposed layout with a uniform AoS-like interface to access elements. Containers are transformed into different combinations of tuples and vectors from the C++ Standard Template Library (STL) at compile time. This way, we provide more optimization opportunities for the code, especially automatic vectorization. We study the performance of our data-layouts and compare them to their explicit versions, based on structures and vectors, for different algorithms and architectures (x86 and ARM). Results show that compilers do not always perform automatic vectorization on our data-layouts as with their explicit versions even if underlying containers and access patterns are similar. Thus, we investigate the use of SIMD intrinsics and of Boost.SIMD ! /bSIMD libraries to vectorize the codes. We show that combining our approach with Boost.SIMD/bSIMD libraries ensures a similar performance as with a manual vectorization using intrinsics, and in almost all cases better performance than with automatic vectorization without increasing the code complexity.

Similar Papers
  • Conference Article
  • Citations5

Inner array inlining for structure of arrays layout

  • Jun 19, 2018
  • Matthias Springer +2
  • PDF
  • Research Article
  • Citations35

Accelerating adaptive inverse distance weighting interpolation algorithm on a graphics processing unit.

  • Sep 01, 2017
  • Royal Society Open Science
  • Gang Mei +2
  • Conference Article
  • Citations3

Compiling SIMT Programs on Multi- and Many-Core Processors with Wide Vector Units: A Case Study with CUDA

  • Dec 01, 2018
  • Hancheng Wu +2
  • PDF
  • Research Article
  • Citations4

Complete Traversals and their Implementation Using the Standard Template Library

  • Dec 01, 1998
  • CLEI Electronic Journal
  • Eric Gamess +2
  • Research Article
  • Citations1

Tensor contraction in C++

  • Jan 01, 2001
  • IEEE Computer Graphics and Applications
  • J.F Blinn
  • Conference Article
  • Citations13

Multi-Range Supported Oblivious RAM for Efficient Block Data Retrieval

  • Feb 01, 2020
  • Yuezhi Che +1
  • Single Report
  • Citations1

Compiler and Runtime Approaches to Enable Large-Scale Irregular Programs. Final report, July 2013 - July 2019

  • Mar 11, 2020
  • Milind Kulkarni
  • Book Chapter
  • Citations1

Theory and Generality of Complete Traversals

  • Jan 01, 2000
  • David R Musser +1
  • Research Article

General education in the computer science curriculum

  • Apr 20, 2001
  • Journal of Computing Sciences in Colleges
  • M Mullinspaul
  • Conference Article
  • Citations9

Lambda functions for C++0x

  • Mar 16, 2008
  • Jaakko Järvi +1
  • Research Article
  • Citations5

Using Ensemble Learning to Improve Automatic Vectorization of Tensor Contraction Program

  • Jan 01, 2018
  • IEEE Access
  • Hui Liu +2
  • Conference Article
  • Citations3

On-chip memory efficient data layout for 2D FFT on 3D memory integrated FPGA

  • Sep 01, 2016
  • Shreyas G Singapura +2
  • Research Article
  • Citations202

The Vesta parallel file system

  • Aug 01, 1996
  • ACM Transactions on Computer Systems
  • Peter F Corbett +1
  • Research Article

Integration of the Standard Template Library and the Microsoft Foundation Class

  • Jun 01, 1999
  • ACM SIGPLAN Notices
  • Paul Wolfgang +1
  • PDF
  • Research Article
  • Citations5

Autovesk: Automatic Vectorized Code Generation from Unstructured Static Kernels Using Graph Transformations

  • Dec 15, 2023
  • ACM Transactions on Architecture and Code Optimization
  • Hayfa Tayeb +2
Cactus Communications logo

Copyright 2026 Cactus Communications. All rights reserved.