Skip to content

Conversation

@serge-sans-paille
Copy link
Contributor

Update supported architecture and make various usage scenario more explicit.

Fix #1202

@serge-sans-paille
Copy link
Contributor Author

cc @Jaegermeiste

README.md Outdated
### Auto detection of the instruction set extension to be used

The same computation operating on vectors and using the most performant instruction set available:
The same computation operating on vectors and using the most performant instruction set available at compile time, absed on the provided compiler flags (e.g. ``-mavx2`` for GCC and Clang to target AVX2):
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we could add a reference to this and maybe suggest the arch levels to the user?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I provide an example here: https://github.com/DiamonDinoia/random

Update supported architecture and make various usage scenario more
explicit.

Fix #1202
@serge-sans-paille
Copy link
Contributor Author

serge-sans-paille commented Nov 16, 2025 via email

@DiamonDinoia
Copy link
Contributor

we could add a reference to [2]this and maybe suggest the arch levels to the user?
I'm not sure about that: we're ine README, and I assume people should know stuff about SIMD when using xsimd. One thing we could do is point at an academic lesson on SIMD (in addition to the wikipedia page I've already added).

I agree, maybe in the dynamic dispatch page we can mention this.

@serge-sans-paille serge-sans-paille merged commit 79902d7 into master Nov 19, 2025
120 checks passed
@Jaegermeiste
Copy link

All these changes look positive; however, they still don't make clear the interaction between Xsimd's capabilities and the compiler target for the application.

We have 3 primary variables:

  1. Processor Capabilities
  2. Compiler Architecture Target for Xsimd library
  3. Compiler Architecture Target for the client application

What is the interplay between these variables?

Can I do something like compile Xsimd for AVX512 no matter what, and automagically, with one client binary (compiled targeting say SSE2, since that was the former Windows 10 baseline hardware requirement), and if the processor supports say AVX2, Xsimd will leverage that? Or are we capped at SSE2 no matter what in this scenario?

If I'm using dispatch to handle multiple architectures, say SSE2 and AVX2, do I target SSE2 or AVX2 in my compiler settings?

Answers to these questions are still not made clear.

This has little to do with understanding how SIMD works per se, nor processor architecture settings, and everything to do with how the library works under the hood, which is still not crystal clear.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Documentation] ELI5 the interaction between Compiler settings and how Xsimd leverages runtime architecture detection

5 participants