F64CblasKernels
The host OpenBLAS behind koblas's level-1 primitives. koblas applies the level-1 dispatch threshold, so these methods normally see only runs worth dispatching, but the F64Kernels contract makes a length of zero legal everywhere and an override of the threshold routes those here. Each routine answers one itself: an empty run sits at the end of its array, where there is no element to take an address of.
Constructors
F64CblasKernels
Properties
config
isAvailable
The level-1 kernels come from CBLAS.
minDispatchLength
The run length from which this backend replaces the compiled-in kernels, or null for the platform default.
name
priority
Functions
asum
axpy
Adds alpha * x(xOff + i) into y(yOff + i) over the first len entries.
dot
Sum of a(aOff + i) * b(bOff + i) over the first len entries; 0 for an empty run.
nrm2
scale
swap
Exchange the two runs (BLAS dswap). Two loads and two stores an element, so an implementation is bound by memory rather than by issue rate; the default is the plain loop for that reason.
Four dots against a shared right operand. For r in 0..3, out(outOff + r) is the dot of the run at aOff + r * stride with the run at bOff. Defaults to four dot calls, so an implementation that can read the shared operand once for all four should override it.
Adds mult * a(k) into y and returns the dot of the same run with x, in one pass. A symmetric product needs both halves of every column, and one pass reads the column once rather than twice.
Four symvColumn runs at aOff + r * stride, their dots landing in out(r). Defaults to four calls, so an implementation that can read x and y once for all four should override it.