Skip to content

Latest commit

 

History

History
66 lines (48 loc) · 2.45 KB

README.md

File metadata and controls

66 lines (48 loc) · 2.45 KB

SIMD Library Evaluation

Introduction

This repository contains benchmarks for some of the most popular SIMD libraries available.

The code available here is part of the implementation used in my Bachelor's Thesis, "Evaluation of C++ SIMD Libraries," which can be found here. Please note that this repo only contains part of the code used, and some alterations have been made since then.

This repo allows benchmarking of the following libraries and extensions:

  • AVX2 (VC, Highway, Libsimdpp, PureSimd, NSIMD, SIMD Everywhere, Intrinsics, AutoVectorization)
  • AVX512 (Highway, Libsimdpp, PureSimd, NSIMD, SIMD Everywhere, Intrinsics, AutoVectorization)
  • SVE (Highway, PureSimd, SIMD Everywhere, Intrinsics, AutoVectorization)
  • NEON (Highway, Libsimdpp, PureSimd, NSIMD, SIMD Everywhere, Intrinsics, AutoVectorization)

Findings

Mandelbrot Benchmark targeting AVX2

Mandelbrot Benchmark AVX2

Mandelbrot Benchmark targeting AVX512

Mandelbrot Benchmark AVX512

Mandelbrot Benchmark targeting SVE

Mandelbrot Benchmark SVE

Mandelbrot Benchmark targeting NEON

Mandelbrot Benchmark NEON

Recreating the Benchmarks

Disclaimer:

Please note that this repository contains code that was primarily developed for research use within our lab environment. It may not be easily portable or adaptable to other systems or environments. I recommend using this code as a reference or starting point to familiarize yourself with the functionalities and usage of specific libraries.

Getting started

Install and build the following libraries.

You will have to adjust the include paths of the libraries in the Makefile (it is probably best to rewrite it completely).

Build Benchmarks

On x86 Machines with AVX2

$ make AVX2

On x86 Machines with AVX512

$ make AVX512

On ARM machines with SVE

$ make SVE

On ARM machines with NEON

$ make NEON