libCEED icon indicating copy to clipboard operation
libCEED copied to clipboard

Use "Fixed-size Sparse Matrix x Dense Matrix" (FsSpMDM) interface for `xsmm` backend

Open sebastiangrimberg opened this issue 8 months ago • 3 comments

For certain applications using a non-tensor basis, the basis is quite sparse and the basis application can take advantage of this to increase performance. This FsSpMDM implementation in LIBXSMM benchmarks the sparse vs. dense kernels during construction (after JiT) and chooses the faster one. This could be an easy thing to try out in libCEED.

sebastiangrimberg avatar Oct 25 '23 21:10 sebastiangrimberg

For reference, PyFR uses this: https://github.com/PyFR/PyFR/blob/ff01337aef17d0cd999ab016e53a8bb23d866b10/pyfr/backends/openmp/xsmm.py.

sebastiangrimberg avatar Oct 25 '23 21:10 sebastiangrimberg

Interesting and perhaps related to recent work from Brubeck and Farrell on bases with sparsity properties.

jedbrown avatar Oct 25 '23 22:10 jedbrown

Thanks for the reference!

Another common application which I had in mind is for constructing the discrete gradient interpolation from H1 to H(curl) on an element, or discrete curl from H(curl) to H(div). These are typically very sparse and involve only couplings between dofs sharing a face or edge, for example.

sebastiangrimberg avatar Oct 25 '23 23:10 sebastiangrimberg