How do you multiply two sparse matrices?

I have two sparse tensors a and b of sizes (A, B, C, D) and (A, B) respectively.

How do I multiply the two of them?

I don’t want to copy b across a new third and fourth dimension C and D times because that wastes memory and also takes compute time. I also don’t want to convert both to dense and back to sparse (although converting b to dense at some point would be fine; it’s just a that takes time to convert).