Orrery
A GPU-accelerated N-body gravitational simulator
Loading...
Searching...
No Matches
orrery::backend::CpuFeatures Struct Reference

The instruction set extensions this project can make use of. More...

#include <orrery/backend/cpu_features.hpp>

Public Attributes

bool avx {}
 256-bit floating-point vectors, with the operating system's consent.
bool avx2 {}
 256-bit integer vectors and the wider shuffles, on the same terms.
bool fma {}
 Fused multiply-add.

Detailed Description

The instruction set extensions this project can make use of.

Deliberately short. This is not a general CPU identification library, and a field is added when a kernel is written that needs it, so that every entry here has something in the project that reads it. AVX-512 is absent because the target part does not implement it, which section 2 of the implementation plan records; Phase 7's kernel is 256-bit for that reason rather than by preference.

Member Data Documentation

◆ avx

bool orrery::backend::CpuFeatures::avx {}

256-bit floating-point vectors, with the operating system's consent.

True only when the processor reports AVX and the operating system has enabled the upper vector state, so a caller can act on this alone.

◆ fma

bool orrery::backend::CpuFeatures::fma {}

Fused multiply-add.

Separate from AVX2 because the two are separate feature bits, and because what the kernel gains from each is different: AVX2 supplies the width and FMA halves the number of rounding steps in the accumulation.


The documentation for this struct was generated from the following file: