NumericAL
A header-only C++20 lexer built on REAL
Loading...
Searching...
No Matches
Namespaces
x86.hpp File Reference

The x86-64 tiles of the double matrix product: AVX-512 and AVX2 with FMA, chosen at run time. More...

#include <algorithm>
#include <array>
#include <cmath>
#include <complex>
#include <cstddef>
#include <cstdint>
#include "simd.hpp"
Include dependency graph for x86.hpp:

Go to the source code of this file.

Namespaces

namespace  numerical
 The NumericAL public API.
 
namespace  numerical::detail
 

Detailed Description

The x86-64 tiles of the double matrix product: AVX-512 and AVX2 with FMA, chosen at run time.

A wheel is built for the baseline x86-64 (SSE2), so the wider units are reached function by function: each tile is compiled for its instruction set (GCC's and Clang's target attribute; MSVC emits the intrinsics as written) and used only once cpuid reports the instructions and xgetbv reports the system saving their registers. Each element of C is then a chain of fused multiply-adds in ascending order of the depth, the same on any number of threads.

Definition in file x86.hpp.