Skip to content

Determine SIMD at runtime#209

Merged
JoeyBF merged 4 commits intoSpectralSequences:masterfrom
JoeyBF:runtime_simd
Nov 12, 2025
Merged

Determine SIMD at runtime#209
JoeyBF merged 4 commits intoSpectralSequences:masterfrom
JoeyBF:runtime_simd

Conversation

@JoeyBF
Copy link
Collaborator

@JoeyBF JoeyBF commented Oct 29, 2025

This way we support all architectures that Rust supports, but we dispatch to a SIMD specialization depending on which instruction sets are available at runtime. This is possible thanks to the target_feature(enable = "...") attribute. I will extend the SIMD capabilities in #207.

@hoodmane
Copy link
Contributor

Generally looks reasonable to me. Why is this better than at compile time?

@JoeyBF
Copy link
Collaborator Author

JoeyBF commented Nov 12, 2025

In an HPC setting for example, it makes it easier to generate one binary that we can use on all nodes without loss of performance.

In general, I'm planning to implement some of the BLAS API (as in #207), and the industry standard is to bundle a number of kernels and do runtime dispatch.

@JoeyBF JoeyBF merged commit 2381c25 into SpectralSequences:master Nov 12, 2025
23 checks passed
@JoeyBF JoeyBF deleted the runtime_simd branch November 12, 2025 04:40
github-actions bot added a commit that referenced this pull request Nov 12, 2025
* Determine SIMD at runtime

* Allow unused constants in `fp`

* Disregard 32-bit x86 architectures

* Add appropriate decorations to intrinsics wrappers
github-actions bot added a commit to JoeyBF/sseq that referenced this pull request Nov 12, 2025
* Determine SIMD at runtime

* Allow unused constants in `fp`

* Disregard 32-bit x86 architectures

* Add appropriate decorations to intrinsics wrappers
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.

2 participants