Skip to content
GitLab
Menu
Why GitLab
Pricing
Contact Sales
Explore
Why GitLab
Pricing
Contact Sales
Explore
Sign in
Get free trial
Changes
Page history
Update BLAS
authored
Mar 23, 2023
by
Alfredo Correa
Show whitespace changes
Inline
Side-by-side
BLAS.md
View page @
e218e529
...
@@ -24,4 +24,4 @@ All these operations are now supported for CPU and GPU memory, real and complex.
...
@@ -24,4 +24,4 @@ All these operations are now supported for CPU and GPU memory, real and complex.
| |
<s>
`blas::gemm(aa, blas::J(A), B, bb, C)`
</s>
| $
`C_{ij} \leftarrow \alpha \sum_k A_{ik}^* B_{kj} + \beta C_{ij}`
$ (not BLAS-implemented) | | |
`transform(begin(A), end(A), begin(C), begin(C), [BT=transposed(B)](auto const& Ar, auto&& Cr) {transform(begin(BT), end(BT), begin(Cr), begin(Cr), [&Ar](auto const& Bc, auto&& c) {return aa*blas::dot(blas::C(Ar), Bc) + bb*c;}); return std::move(Cr);});`
|
| |
<s>
`blas::gemm(aa, blas::J(A), B, bb, C)`
</s>
| $
`C_{ij} \leftarrow \alpha \sum_k A_{ik}^* B_{kj} + \beta C_{ij}`
$ (not BLAS-implemented) | | |
`transform(begin(A), end(A), begin(C), begin(C), [BT=transposed(B)](auto const& Ar, auto&& Cr) {transform(begin(BT), end(BT), begin(Cr), begin(Cr), [&Ar](auto const& Bc, auto&& c) {return aa*blas::dot(blas::C(Ar), Bc) + bb*c;}); return std::move(Cr);});`
|
| |
<s>
`blas::gemm(aa, blas::J(A), blas::J(B), bb, C)`
</s>
| $
`C_{ij} \leftarrow \alpha \sum_k \bar{A_{ik}} \bar{B_{kj}} + \beta C_{ij}`
$ (not BLAS-implemented) | | |
`transform(begin(A), end(A), begin(C), begin(C), [BT=transposed(B)](auto const& Ar, auto&& Cr) {transform(begin(BT), end(BT), begin(Cr), begin(Cr), [&Ar](auto const& Bc, auto&& c) {return aa*blas::dot(blas::C(Ar), blas::C(Bc)) + bb*c;}); return std::move(Cr);});`
|
| |
<s>
`blas::gemm(aa, blas::J(A), blas::J(B), bb, C)`
</s>
| $
`C_{ij} \leftarrow \alpha \sum_k \bar{A_{ik}} \bar{B_{kj}} + \beta C_{ij}`
$ (not BLAS-implemented) | | |
`transform(begin(A), end(A), begin(C), begin(C), [BT=transposed(B)](auto const& Ar, auto&& Cr) {transform(begin(BT), end(BT), begin(Cr), begin(Cr), [&Ar](auto const& Bc, auto&& c) {return aa*blas::dot(blas::C(Ar), blas::C(Bc)) + bb*c;}); return std::move(Cr);});`
|
| |
`blas::gemm(aa, A, blas::H(B), bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k A_{ik} \bar B_{jk} + \beta C_{ij}`
$ |
`C = aa*(A* ~*B)`
(or
`+=`
) |
`C = blas::gemm(aa, A, blas::H(B))`
`C += blas::gemm(aa, A, blas::H(B))`
|
`transform(begin(A), end(A), begin(CC), begin(CC), [&](auto const& Ar, auto&& Cr){return blas::gemv(aa, blas::J(B), Ar, bb, move(Cr));})`
|
| |
`blas::gemm(aa, A, blas::H(B), bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k A_{ik} \bar B_{jk} + \beta C_{ij}`
$ |
`C = aa*(A* ~*B)`
(or
`+=`
) |
`C = blas::gemm(aa, A, blas::H(B))`
`C += blas::gemm(aa, A, blas::H(B))`
|
`transform(begin(A), end(A), begin(CC), begin(CC), [&](auto const& Ar, auto&& Cr){return blas::gemv(aa, blas::J(B), Ar, bb, move(Cr));})`
|
| |
`blas::gemm(aa, blas::H(A), B, bb, C)`
| $
`C_{ij} \leftarrow \alpha \sum_k \bar A_{ki} B_{kj} + \beta C_{ij}`
$
(not BLAS-implemented) | | |
|
| |
`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);})`
|