Report a bug
If you spot a problem with this page, click here to create a GitHub issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
a local clone.
mir.blas
Low-level ndslice wrapper for BLAS.
Authors:
Ilya Yaroshenko
Examples:
import mir.ndslice.slice: sliced; import mir.ndslice.topology: universal; auto a = [3.0, 5, 2, 4, 2, 3].sliced(2, 3).universal; auto b = [2.0, 3, 4].sliced(3, 1).universal; auto c = [100.0, 100].sliced(2, 1).universal; gemm(1.0, a, b, 1.0, c); assert(c == [[6 + 15 + 8 + 100], [8 + 6 + 12 + 100]]);
- T
dot(T, SliceKind kindX, SliceKind kindY)(Slice!(const(T)*, 1, kindX)x, Slice!(const(T)*, 1, kindY)y); - auto
nrm2(T, SliceKind kindX)(Slice!(const(T)*, 1, kindX)x); - auto
asum(T, SliceKind kindX)(Slice!(const(T)*, 1, kindX)x); - void
axpy(T, SliceKind kindX, SliceKind kindY)(Ta, Slice!(const(T)*, 1, kindX)x, Slice!(T*, 1, kindY)y); - void
scal(T, SliceKind kindX)(Ta, Slice!(T*, 1, kindX)x); - void
copy(T, SliceKind kindX, SliceKind kindY)(Slice!(const(T)*, 1, kindX)x, Slice!(T*, 1, kindY)y); - void
swap(T, SliceKind kindX, SliceKind kindY)(Slice!(T*, 1, kindX)x, Slice!(T*, 1, kindY)y); - void
ger(T, SliceKind kindX, SliceKind kindY, SliceKind kindA)(Talpha, Slice!(const(T)*, 1, kindX)x, Slice!(const(T)*, 1, kindY)y, Slice!(T*, 2, kindA)a); - void
gerc(T, SliceKind kindX, SliceKind kindY, SliceKind kindA)(Talpha, Slice!(const(T)*, 1, kindX)x, Slice!(const(T)*, 1, kindY)y, Slice!(T*, 2, kindA)a); - void
gemv(T, SliceKind kindA, SliceKind kindX, SliceKind kindY)(Talpha, Slice!(const(T)*, 2, kindA)a, Slice!(const(T)*, 1, kindX)x, Tbeta, Slice!(T*, 1, kindY)y); - void
gemm(T, SliceKind kindA, SliceKind kindB, SliceKind kindC)(Talpha, Slice!(const(T)*, 2, kindA)a, Slice!(const(T)*, 2, kindB)b, Tbeta, Slice!(T*, 2, kindC)c); - void
syrk(T, SliceKind kindA, SliceKind kindC)(Uplouplo, Talpha, Slice!(const(T)*, 2, kindA)a, Tbeta, Slice!(T*, 2, kindC)c); - void
trmm(T, SliceKind kindA, SliceKind kindB)(cblas.Sideside, cblas.Uplouplo, cblas.Diagdiag, Talpha, Slice!(const(T)*, 2, kindA)a, Slice!(T*, 2, kindB)b); - void
trsm(T, SliceKind kindA, SliceKind kindB)(cblas.Sideside, cblas.Uplouplo, cblas.Diagdiag, Talpha, Slice!(const(T)*, 2, kindA)a, Slice!(T*, 2, kindB)b); - @trusted void
symv(T, SliceKind kindA, SliceKind kindX, SliceKind kindY)(Uplouplo, Talpha, Slice!(const(T)*, 2, kindA)a, Slice!(const(T)*, 1, kindX)x, Tbeta, Slice!(T*, 1, kindY)y); - @trusted void
symm(T, SliceKind kindA, SliceKind kindB, SliceKind kindC)(Sideside, Uplouplo, Talpha, Slice!(const(T)*, 2, kindA)a, Slice!(const(T)*, 2, kindB)b, Tbeta, Slice!(T*, 2, kindC)c); - auto
iamax(T, SliceKind kindX)(Slice!(const(T)*, 1, kindX)x);
Copyright © 2016-2020 by Ilya Yaroshenko | Page generated by
Ddoc on Mon Mar 30 13:58:23 2020