blis
blis copied to clipboard
Implement "sandwich product" matrix operations
This PR adds new BLAS-like level 3 operations which include a diagonal matrix "sandwiched" between two other matrices:
bli_gemdm:C = alpha*A*D*B + beta*Cbli_gemdmt:C = alpha*tri[ul](A*D*B) + beta*Cbli_syrkd:C = alpha*A*D*A^T + beta*Cbli_herkd:C = alpha*A*D*A^H + beta*Cbli_syr2kd:C = alpha*(A*D*B^T + B*D*A^T) + beta*Cbli_her2kd:C = alpha*A*D*B^H + conj(alpha)*B*conj(D)*A^H + beta*C
Currently, there are the following things to do:
- [ ] Implement remaining kernels needed for mixed-precision/mixed-domain and 1m.
- [ ] Integrate into the BLIS testsuite.
- [ ] herkd: D has to be real (not checked or implemented in packing)
- [ ] her2kd: need to use conj(D) in second product