Portability across Arm NEON and SVE vector instruction sets using the NSIMD library: a case study on a Seismic Spectral-Element kernel - Archive ouverte HAL Access content directly
Conference Papers Year : 2021

Portability across Arm NEON and SVE vector instruction sets using the NSIMD library: a case study on a Seismic Spectral-Element kernel

Kenny Peou
  • Function : Author
  • PersonId : 1123568
Guillaume Quintin
  • Function : Author
  • PersonId : 1083394
Fabrice Dupros
  • Function : Author
  • PersonId : 1083395

Abstract

The SIMD paradigm (Single Instruction on Multiple Data) is implemented in almost all today's processors in the form of units with large registers and arithmetic execution units operating on them. Traditional SIMD instruction sets like SSE, AVX and AVX-512 on x86 architectures or NEON on Arm architectures have fixed size register widths (or vector lengths): 128-bit for SSE and NEON, 256-bit for AVX, and 512-bit for AVX-512. To vectorize a code, the easiest solution is to rely on automatic vectorization provided by compilers. Porting a code to a different SIMD unit only requires to recompile it. However, in many cases, like the Seismic Spectral-Element kernel considered in this study, compilers are not able to efficiently vectorize the code and developers may consider using compiler intrinsics for explicit vectorization. In this case, the developer has to rewrite his code for each targeted SIMD instruction set, which hinders maintainability and portability. The Arm SVE (Scalable Vector Extension) SIMD instruction set brings a different programming model called Vector-Length Agnostic (VLA) to address these limitations. It allows to decouple the vectorized code from the underlying SVE implementation. An SVE implementation may have 128-bit or n×128-bit registers, up to 2048-bit. The same SVE instruction may operate on a register independently of its length. Thus the same code will run on all SVE architectures without recompilation. In this paper, we study the vectorization of a Seismic Spectral-Element kernel using NEON and SVE intrinsics to illustrate the differences and the difficulties of porting a code to the VLA programming model. Several libraries address the problem of portability between fixed-size SIMD instruction sets but depend on the knowledge of the vector length at compile time and thus do not support VLA instruction sets like SVE. We propose to use the NSIMD library, which supports both paradigms, to create a single vectorized code for both instruction sets.
Fichier principal
Vignette du fichier
EFISPEC_NSIMD-IEEE.pdf (241.54 Ko) Télécharger le fichier
Origin Files produced by the author(s)

Dates and versions

hal-03533584 , version 1 (18-01-2022)

Identifiers

  • HAL Id : hal-03533584 , version 1

Cite

Sylvain Jubertie, Kenny Peou, Guillaume Quintin, Fabrice Dupros. Portability across Arm NEON and SVE vector instruction sets using the NSIMD library: a case study on a Seismic Spectral-Element kernel. HPCS 2020, Mar 2021, Virtual/Online Event, Spain. ⟨hal-03533584⟩
255 View
1341 Download

Share

Gmail Mastodon Facebook X LinkedIn More