Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SIMD support for Windows #47

Open
ErichZimmer opened this issue Apr 13, 2024 · 0 comments
Open

SIMD support for Windows #47

ErichZimmer opened this issue Apr 13, 2024 · 0 comments
Assignees
Labels
feature adding a new feature to the code

Comments

@ErichZimmer
Copy link
Contributor

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
@ErichZimmer ErichZimmer added the feature adding a new feature to the code label Apr 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature adding a new feature to the code
Projects
None yet
Development

No branches or pull requests

2 participants