2014-05-08 18:29 GMT+0200, Matthew Knepley <[email protected]>: > On Thu, May 8, 2014 at 11:25 AM, marco restelli <[email protected]> > wrote: > >> Hi, >> I have a Cartesian communicator and some matrices distributed along >> the "x" direction. I would like to compute an all_reduce operation for >> these matrices in the y direction, and I wander whether there is a >> PETSc function for this. >> >> >> More precisely: >> >> a matrix A is distributed among processors 0 , 1 , 2 >> another A is distributed among processors 3 , 4 , 5 >> another A is distributed among processors 6 , 7 , 8 >> ... >> >> The x direction is 0,1,2; while the y direction is 0,3,6,... >> >> I would like to compute a matrix B = "sum of the matrices A" and a >> copy of B should be distributed among processors 0,1,2, another copy >> among 3,4,5 and so on. >> >> A way of doing this is getting the matrix coefficients, broadcasting >> them along the y direction and summing them in the matrix B; maybe >> however there is already a PETSc function doing this. >> > > There is nothing like this in PETSc. There are many tools for this using > dense > matrices in Elemental, but I have not seen anything for sparse matrices. > > Matt >
OK, thank you. Now, to do it myself, is MatGetRow the best way to get all the local nonzero entries of a matrix? Marco
