Funktionen

Print[PRINT]
.  Home  .  Publikationen  .  Fopra/SEP/Bachelor  .  rock23

Rocke, F. (2023):

Evaluation of C++ SIMD Libraries


Single Instruction, Multiple Data (SIMD) units parallelize code through vectorization, thus enabling substantial performance improvements. Over the last two decades, SIMD units have become part of most CPUs. Despite this availability, many applications are not taking full advantage of SIMD units since utilizing the performance potential requires highly hardwaredependent instructions. However, the increase in performance and the substantial energy savings provided by these instructions should no longer be ignored, leading to the need for an e!cient SIMD API to allow for an e!cient and portable programming model.

This thesis will evaluate six of the most popular SIMD libraries by reviewing their supported extensions, functions, documentation, and ease of use. Furthermore, we will benchmark the performance of the selected libraries using a floating point benchmark and compare their results to dedicated intrinsics implementations using the AVX2, AVX512, SVE, and NEON SIMD extensions. Finally, we will also take a closer look at Google’s SIMD library, Highway, which has been rising in popularity recently. We will assess if the library is ready to take on complex real-world algorithms by conducting a case study on the vectorization of an algorithm operating on unsigned integers.

The results of the floating-point benchmark show that multiple libraries can match the performance of compiler intrinsics. Highway excelled with a strong performance across multiple SIMD extensions for the real-world integer algorithm. Thus, Highway may currently be the most suitable SIMD library for many software projects.