Changes
Page history
Update BLAS
authored
Mar 23, 2023
by
Alfredo Correa
Hide whitespace changes
Inline
Side-by-side
BLAS.md
View page @
21d6bfb6
...
...
@@ -27,4 +27,4 @@ All these operations are now supported for CPU and GPU memory, real and complex.
| |
`blas::gemm(aa, blas::H(A), B, bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k \bar A_{ki} B_{kj} + \beta C_{ij}`
$ |
`CC=~*A *B`
|
`C=blas::gemm(aa, blas::H(A), B)`
|
`transform(begin(transposed(A)), end(transposed(A)), begin(CC), begin(CC), [BT=transposed(B)](auto const& Ac, auto&& Cr) {transform(begin(BT), end(BT), begin(Cr), begin(Cr), [&Ac](auto const& Bc, auto&& c){return aa*blas::dot(blas::C(Ac), Bc) + bb*c;}); return move(Cr);})`
|
| |
`blas::gemm(aa, blas::H(A), blas::H(B), bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k \bar A_{ki} \bar B_{jk} + \beta C_{ij}`
$ |
`CC=~*A * ~*B`
|
`C=blas::gemm(aa, blas::H(A), blas::H(B))`
|
`transform(begin(transposed(A)), end(transposed(A)), begin(CC), begin(CC), [&B](auto const& Ac, auto&& Cr) {transform(begin(B), end(B), begin(Cr), begin(Cr), [&Ac](auto const& Bc, auto&& c) {return conj(std::transform_reduce(begin(Ac), end(Ac), begin(Bc), 0.0*c, std::plus<>{}, [](auto const& a, auto const& b) {return a*b;}));}); return move(Cr);})`
|
| |
`blas::gemm(aa, blas::T(A), blas::H(B), bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k A_{ki} \bar B_{jk} + \beta C_{ij}`
$ |
`CC=~A * ~*B`
|
`C=blas::gemm(aa, blas::T(A), blas::H(B))`
|
`transform(begin(transposed(A)), end(transposed(A)), begin(CC), begin(CC), [&B](auto const& Ac, auto&& Cr) {transform(begin(B), end(B), begin(Cr), begin(Cr), [&Ac](auto const& Bc, auto&& c) {return std::transform_reduce(begin(Ac), end(Ac), begin(Bc), 0.0*c, std::plus<>{}, [](auto const& a, auto const& b) {return a*conj(b);});}); return move(Cr);})`
|
| |
`blas::gemm(aa, blas::H(A), blas::T(B), bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k \bar A_{ki} B_{jk} + \beta C_{ij}`
$
|
`CC=~*A * ~B`
|
`C=blas::gemm(aa, blas::H(A), blas::T(B))`
|
`transform(begin(transposed(A)), end(transposed(A)), begin(CC), begin(CC), [&B](auto const& Ac, auto&& Cr) {transform(begin(B), end(B), begin(Cr), begin(Cr), [&Ac](auto const& Bc, auto&& c) {return std::transform_reduce(begin(Ac), end(Ac), begin(Bc), 0.0*c, std::plus<>{}, [](auto const& a, auto const& b) {return conj(a)*b;});}); return move(Cr);})`
|
| |
~~
`blas::gemm(aa, blas::H(A), blas::T(B), bb, C)`
~~
| $
`C_{ij} \leftarrow \alpha \sum_k \bar A_{ki} B_{jk} + \beta C_{ij}`
$
(not BLAS-implemented) | |
|
`transform(begin(transposed(A)), end(transposed(A)), begin(CC), begin(CC), [&B](auto const& Ac, auto&& Cr) {transform(begin(B), end(B), begin(Cr), begin(Cr), [&Ac](auto const& Bc, auto&& c) {return std::transform_reduce(begin(Ac), end(Ac), begin(Bc), 0.0*c, std::plus<>{}, [](auto const& a, auto const& b) {return conj(a)*b;});}); return move(Cr);})`
|