Skip to main content

Module host

Module host 

Source
Expand description

Host class and the serial GEMM rate of each class.

The rate the width and batch rules use is keyed by the kernel dispatch the machine takes, not by the CPU model. The class is threadteam::HostClass, re-exported here: one enum and one detection for the dispatch costs and the rates below.

classns per flopmultiply-adds per nssource
x86_64-avx5120.03215.6AMD Ryzen AI 9 HX 470 at 2.0 GHz (boost off): GEMM f64 0.0641 ns per MAC (faer-benchmark data/probes/20261026-awake-team-linux/tables-consts-exec3.md, gemm_per_mac; the tc_matmul seq times of tables-confirm-exec3.md agree: 0.0678, 0.0657, 0.0644 ns per MAC at n = 48, 64, 96), halved to a flop (a MAC is two flops), then 1 / (2 * 0.032) = 15.6
aarch64-apple0.018527Apple M5 Max, the serial GEMM rate (about 54 GFLOP/s, threadteam docs/design/thresholds.md section 3.2)
every other class0.018527the generic row: the fastest known value of each column (the minimum of the ns per flop, the maximum of the multiply-adds per ns over the measured classes); it keeps work serial

The rate of a class and the dispatch costs of the same class in threadteam come from the same machine in the same clock state: boost on or off moves both by about 1.66x and leaves their ratio stable within a few percent (raw-exec3-boost, tables-*-exec3-boost.md).

Enums§

HostClass
The class of the machine, keyed by the kernel dispatch it will take, not by the CPU model. Detected once per process by HostClass::detect.

Functions§

muladds_per_ns
Serial multiply-adds per nanosecond on this host (muladds_per_ns_of of HostClass::detect).
muladds_per_ns_of
Serial multiply-adds per nanosecond of one GEMM item on a host class: the same rate as ns_per_flop_of (1 / ns_per_flop / 2), rounded as the table in the module documentation states it.
ns_per_flop
Estimated serial time per real flop on this host (ns_per_flop_of of HostClass::detect); the one default the width choice uses everywhere. The width itself is the token’s decision (Exec::width_for over this estimate).
ns_per_flop_of
Estimated serial time per real flop of a GEMM item on a host class (the table in the module documentation).