Skip to content

SIMD support for Windows #47

Description

@ErichZimmer

Preface

Currently, SIMD is isolated to the FFT libraries that is later used for digital image correlation. For instance, PocketFFT uses GCC vector extensions as a means for portable SIMD instructions for compilers that use GCC. However, some architectures are not fully supported using GCC vector extensions along with requiring a GCC-compatible compiler. While this may not be an issue on UNIX-like systems, this can be an issue on Windows. This is mainly attributed to Windows not shipping with a compiler and MinGW having some compatibility issues since they cannot use MSVC import libs for Microsoft runtime libraries due to license restrictions. As such, I would like to investigate using Google's Highway SIMD library as a portable means for SIMD instructions while allowing for more SIMD architectures and dynamic dispatch. Due to the structure of the PocketFFT library, this may be a 15 minute change and a few hours of debugging and testing to ensure it works as advertised.

Solutions

  • We could replace __attribute__(vector_size(N, T)) with Highway vectors so MSVC compilers on Windows can exploit SIMD for FFTs.
  • or Require GCC-compatible compilers (Intel ICC, Clang-cl, MinGW) for SIMD which means no SIMD optimizations for MSVC

Metadata

Metadata

Labels

featureadding a new feature to the code

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions