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