Yes but it will have reduced number of rows. Thank you Barry Smith it works 
very well :)

Dnia Wtorek, 28 Marca 2017 01:56 Barry Smith <[email protected]> napisał(a) 
> 
>    Use ISCreateStride() to indicate all the columns; MatGetSubMatrices_MPIAIJ 
> handles this as a special case and never generates the integer list of all 
> columns.
> 
> Note that the resulting matrix will have the same number of columns as the 
> original matrix. What do you want to do with this matrix?
> 
>    Barry
> 
> So make the start of the stride 0, the step 1 and the length be the same as 
> the number of columns in the original matrix.
> 
> 
> > On Mar 27, 2017, at 4:21 PM, Łukasz Kasza <[email protected]> wrote:
> > 
> > 
> > 
> > 
> > Dear PETSC users, 
> > 
> > Lets say that I want to use MatGetSubMatrices(Mat mat,PetscInt n,const IS 
> > irow[],const IS icol[],MatReuse scall,Mat *submat[]) and I want to get 
> > every column of the specified rows. However initially I dont know which 
> > column indexes to pass in icol, I just know that I need everything. 
> > 
> > My question is, how to implement this efficiently in parallel aij format? I 
> > could for instance pass a range of indexes from 0 to the size of the 
> > matrix, but my concern is that this way the communication cost will 
> > increase for large matrices as the request will be sent for all columns for 
> > every row in irow. Other solution would be to exchange between the 
> > processes info regarding indexes of nonzero columns and then call 
> > MatGetSubmatrices with indexes in icol only of nonzero columns. 
> > 
> > Any help much appreciated,
> > Best Regards
> > 
> > 



Reply via email to