[petsc-users] I am wondering if there is a way to implement SPMM

Cong Li solvercorleone at gmail.com
Tue Aug 4 05:31:57 CDT 2015


Actually, I am trying to implement s-step krylov subspace method.
I want to extend the Krylov subspace by s dimensions by using monomial,
which can be defined as C={X, AX, A^2X, ... , A^sX},  in one loop. So, my
plan now is to firstly calculate the recurrence, which is P_n(x)=xP_n-1(x),
and then use the results to update the items in C. And then, in the next
loop of Krylov subspace method, the C will be updated again. This means I
need to update C in every iteration.
This continues till the convergence criteria is satisfied.

I suppose A is huge sparse SPD matrix with millions of rows, and X is
tall-skinny dense matrix.

Do you still think MATNEST is a good way to define C.

Actually I am wondering if there is a way to do SPMM by using a submatrix
of C and also store the result in a submatrix of C.  If it is possible, I
think we can remove some of cost of data movement.
For example, C=[c_1, c_2,.., c_s], and I want to use the result of A*c_1 to
update c_2, and then use he result of A*c_2(updated) to update c_3 and so
on.
I don't need the intermediate result separately, such as the result of
A*c_1, A*c_2. And I only need the final C.
Is there any SPMM function or strategies I can use to achievement this?

Thanks

Cong Li



On Tue, Aug 4, 2015 at 6:46 PM, Patrick Sanan <patrick.sanan at gmail.com>
wrote:

> On Tue, Aug 04, 2015 at 06:09:30PM +0900, Cong Li wrote:
> > I am sorry that I should have explained it more clearly.
> > Actually I want to compute a recurrence.
> >
> > Like, I want to firstly compute A*X1=B1, and then calculate A*B1=B2,
> > A*B2=B3 and so on.
> > Finally I want to combine all these results into a bigger matrix C=[B1,B2
> > ...]
> >
> > Is there any way to do this efficiently.
> With no other information about your problem, one literal solution might
> be to use MATNEST to define C once you have computed B1,B2,..
> However, this invites questions about what you plan to do with C and
> whether you require explicit representations of some or all of these
> matrices, and what problem sizes you are considering.
> >
> >
> >
> > On Tue, Aug 4, 2015 at 5:45 PM, Patrick Sanan <patrick.sanan at gmail.com>
> > wrote:
> >
> > > On Tue, Aug 04, 2015 at 03:42:14PM +0900, Cong Li wrote:
> > > > Thanks for your reply.
> > > >
> > > > I have an other question.
> > > > I want to do SPMM several times and combine result matrices into one
> > > bigger
> > > > matrix.
> > > > for example
> > > > I firstly calculate AX1=B1, AX2=B2 ...
> > > > then I want to combine B1, B2.. to get a C, where C=[B1,B2...]
> > > >
> > > > Could you please suggest a way of how to do this.
> > > This is just linear algebra, nothing to do with PETSc specifically.
> > > A * [X1, X2, ... ] = [AX1, AX2, ...]
> > > >
> > > > Thanks
> > > >
> > > > Cong Li
> > > >
> > > > On Tue, Aug 4, 2015 at 3:27 PM, Jed Brown <jed at jedbrown.org> wrote:
> > > >
> > > > > Cong Li <solvercorleone at gmail.com> writes:
> > > > >
> > > > > > Hello,
> > > > > >
> > > > > > I am a PhD student using PETsc for my research.
> > > > > > I am wondering if there is a way to implement SPMM (Sparse
> > > matrix-matrix
> > > > > > multiplication) by using PETSc.
> > > > >
> > > > >
> > > > >
> > >
> http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatMatMult.html
> > > > >
> > >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150804/ceb3c958/attachment.html>


More information about the petsc-users mailing list