blis icon indicating copy to clipboard operation
blis copied to clipboard

Implement "sandwich product" matrix operations

Open devinamatthews opened this issue 1 year ago • 0 comments

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*C
  • bli_gemdmt: C = alpha*tri[ul](A*D*B) + beta*C
  • bli_syrkd: C = alpha*A*D*A^T + beta*C
  • bli_herkd: C = alpha*A*D*A^H + beta*C
  • bli_syr2kd: C = alpha*(A*D*B^T + B*D*A^T) + beta*C
  • bli_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

devinamatthews avatar Feb 16 '24 23:02 devinamatthews