[Trilinos-Users] Tpetra::CrsMatrix caching related to C= A^T B and D = A*C
davydden at gmail.com
Wed Sep 26 07:04:02 EDT 2018
> On 24 Sep 2018, at 16:48, Chris Siefert <csiefer at sandia.gov> wrote:
>>>> 3) Running with fillComplete'd matrices for is going to be much, much faster than running w/o fillComplete. You do *not* need to do what you're doing. Could you try removing the resumeFill and redoing the timing?
>>> looks like I have to do this, otherwise I get:
>>> Exception on processing:
>>> Throw number = 1
>>> Throw test that evaluated to true: C.isFillActive() == false
>>> the check is here:
>>> https://github.com/trilinos/Trilinos/blob/master/packages/tpetra/core/ext/TpetraExt_MatrixMatrix_def.hpp#L204 <https://github.com/trilinos/Trilinos/blob/master/packages/tpetra/core/ext/TpetraExt_MatrixMatrix_def.hpp#L204>
>>> So to me it looks like it’s not possible to call C = A^T B with C being fillComplete().
> Huh. That's weird. I need to look into that.
Thanks, please let me know if you find something.
On one hand the documentation of MatrixMatrix::Multiply says that C can be fillComplete: "On entry to this method, if C is fill complete, then C's graph must have the correct structure, that is, its structure must equal the structure of A*B.”, on another hand the TPetra lessons state in several places that after calling fillComplete() modification to values is not possible (which is different in EPetra). But even if fillComplete() moves data from one memory space to another (like GPU), I think conceptually it should still be possible to do multiplication with fillComple’ed C = A^T B.
Michael, would you happen to know the reason for this limitation?
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Trilinos-Users