Boost.SIMD: generic programming for portable SIMDization

  • Authors:
  • Pierre Estérie;Joel Falcou;Mathias Gaunard;Jean-Thierry Lapresté

  • Affiliations:
  • Université Paris Sud, ORSAY, France;LRI, ORSAY, France;MetaScale SAS, ORSAY, France;Institut Pascal, Clermont-ferrand, France

  • Venue:
  • Proceedings of the 2014 Workshop on Programming models for SIMD/Vector processing
  • Year:
  • 2014

Quantified Score

Hi-index 0.00

Visualization

Abstract

SIMD extensions have been a feature of choice for processor manufacturers for a couple of decades. Designed to exploit data parallelism in applications at the instruction level, these extensions still require a high level of expertise or the use of potentially fragile compiler support or vendor-specific libraries. While a large fraction of their theoretical accelerations can be obtained using such tools, exploiting such hardware becomes tedious as soon as application portability across hardware is required. In this paper, we describe B OOST.SIMD, a C++ template library that simplifies the exploitation of SIMD hardware within a standard C++ programming model. BOOST.SIMD provides a portable way to vectorize computation on Altivec, SSE or AVX while providing a generic way to extend the set of supported functions and hardwares. We introduce a C++ standard compliant interface for the users which increases expressiveness by providing a high-level abstraction to handle SIMD operations, an extension-specific optimization pass and a set of SIMD aware standard compliant algorithms which allow to reuse classical C++ abstractions for SIMD computation. We assess BOOST.SIMD performance and applicability by providing an implementation of BLAS and image processing algorithms.