F64SparseBlas
Sparse matrix routines as a backend half.
Inheritors
Properties
Whether this backend can do work on this host. koblas's own implementations always can, so the default is true; a binding reports whether the library it calls resolved.
Whether this is koblas's own implementation rather than a binding to a host library. The compiled-in SIMD kernels are portable however fast they are; only something calling out counts as accelerated.
Relative preference among the backends offered for one half (F64Blas, F64Decompositions, F64Kernels or a sparse counterpart). registerBackend picks the highest; the portable reference is 0.
Functions
gemv
In-place y = alpha · op(A) · x + beta · y, where op(A) is Aᵀ when transpose. Per BLAS convention beta == 0.0 overwrites y without reading it, so it may arrive uninitialized.
A · x, or Aᵀ · x when transpose, into a fresh result.
trsv
Solve op(T) · x = b in place, op transposing when transpose. x holds the right-hand side on entry and the solution on return. Only the lower or upper triangle of a is read, and unitDiag takes the diagonal as 1 without reading it, as the dense com.eignex.koblas.dense.F64Blas.trsv does.
Unlike the dense half, which follows dtrsv in reporting nothing and answering a singular triangle with infinities, this reports it. There is no sparse BLAS routine whose silence it has to match, and the value is looked up to divide by it anyway, so a healthy solve pays nothing; only the failing column pays the extra scan that tells a stored zero from a missing entry.
Throws
if a diagonal entry is missing or zero and unitDiag is false, naming its position.