MaTAXPY with same nonzero pattern is much faster.
> On Jan 30, 2018, at 10:10 PM, Marius Buerkle wrote:
>
> Thanks. While B'*C*B may not have the same nonzero pattern as A it does not
> matter as this is done by MaTAXPY with different nonzero pattern it should
> not matter
Thanks. While B'*C*B may not have the same nonzero pattern as A it does not matter as this is done by MaTAXPY with different nonzero pattern it should not matter when using MatPtAPNumeric_MPIAIJ_MPIAIJ_scalable() with a restricted reduction. I will give it a try.
To do this most
To do this most efficiently you would compute exactly the part of F =
B'*C*B you need (that matches the nonzero pattern of A) do a MatAXPY() with
same numerical pattern and then just stick the values of D into the original
matrix (without worrying about excluding the new nonzeros since
Not sure how much overhead it produces but copying the actual values with MatGetRow is not necessary as I only need the col position of the nonzero elements in each row.
Inserting the Matrix back is not so complicated as the submatrix is a continous square matrix from somewhere in the bigger
The matrix A is the extracted submatrix and I am basicallly doing something like this D=A+B'*C*B. Where A, B, and C are sparse but B'*C*C will clearly generate some addional nonzero entries in D. And D should go back into the bigger matrix but only the entries which are already nonzero in A.
> On Jan 30, 2018, at 6:53 PM, Marius Buerkle wrote:
>
> Barry,
>
> Thanks for you reply. The pulled matrix is symmetric but that's it. At the
> moment I am doing a copy of the matrix right after MatCreateSubMatrix to keep
> it's nonzero structure. To insert the matrix
Could you tell us exactly what matrix matrix products you are doing?
Barry
> On Jan 30, 2018, at 6:53 PM, Marius Buerkle wrote:
>
> Barry,
>
> Thanks for you reply. The pulled matrix is symmetric but that's it. At the
> moment I am doing a copy of the matrix right
Barry,
Thanks for you reply. The pulled matrix is symmetric but that's it. At the
moment I am doing a copy of the matrix right after MatCreateSubMatrix to keep
it's nonzero structure. To insert the matrix which I obtained after the
multiplications back into the bigger matrix I use the
Marius,
We don't provide a way to insert a "generic" sparse matrix into a bigger
matrices (dense matrices coming from element stiffness matrices yes) so I don't
see any simple solution. Does the submatrix you pull out have any particular
structure, what does it represent?
Barry
> On