I assume it's MKL sparse that fails for empty matrices, because the BLAS and LAPACK should follow the Netlib convention.
I'm sorry that MKL is unwilling to do nothing for you :-) Jeff On Sat, May 30, 2020 at 4:26 PM Mills, Richard Tran via petsc-dev < petsc-dev@mcs.anl.gov> wrote: > Thanks for the replies, everyone. It suppose is not actually that hard for > me to handle these dimensions properly -- I just hadn't personally > encountered or thought much about when such operations with empty matrices > might arise, and was initially puzzled about what multiplication by an > "empty" matrix even means. I think I see now why I need to put in the work > to handle these cases properly. (Sure wish that MKL could just do it, > though!) > > --Richard > > On 5/30/20 4:09 PM, Stefano Zampini wrote: > > On May 31, 2020, at 1:03 AM, Jed Brown <j...@jedbrown.org> > <j...@jedbrown.org> wrote: > > Stefano Zampini <stefano.zamp...@gmail.com> <stefano.zamp...@gmail.com> > writes: > > > If A is 0x8 and B is 8x5 then C is correct to be of size 0x5. The rows and > columns of the resulting matrix have to follow the rules. > > Right, I think if you said C is 0x0 (which seems like Richard's proposal), > you'd need to relax shape compatibility logic in many places, including in > ways that might produce confusing errors. > > > Richard > > In the triple matrix product case, your code will break, because the > operation will no longer be associative > > A 3x0, B 0x8, C 8x7 -> (ABC) is a valid 3x7 matrix (empty) > > If I understand you right, (AB) would be a 0x0 matrix, and it can no longer > be multiplied against C > > > Richard, what is the hardship in preserving the shape relations? > > > -- Jeff Hammond jeff.scie...@gmail.com http://jeffhammond.github.io/