# distribution of submatrix and subvector Re: how to extract a subvector?

Fri Jan 2 19:58:27 CST 2009

```Dear Barry:

When using MatGetSubmatrix() to get a submatrix in parallel mode, to my
knowledge, this function will exact the rows and cols for submatrix. This
submatrix is not redistributed. For example, if there is zero row and zero
col in a process, the row and col of this submatrix in this process are
zero, right?
However, to get a subvector using Vec scatter, the user needs to create the
subvector using MPI_COMM, that is new distribution for subvector is
generated. Just regarding only rows or cols of the submatrix and the
subvector, their distribution should be different even if using the same
index to get them, right? thanks a lot.

Regards,
Yujie

On Fri, Jan 2, 2009 at 5:15 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
>   The ix and iy are always global indices based on where the vector lives.
>
>   If you are going from a parallel to parallel vector then both indices are
> "global"
>
>  Barry
>
>
> On Jan 2, 2009, at 2:21 PM, Yujie wrote:
>
>  Dear Barry:
>>
>> I have a new question about the parameter "iy"(new index set of
>> subvector). To parallel vector, how to provide "ix" and "iy"?
>>
>> Just providing the local index subset for "ix" and "iy"? if it is, it is a
>> little difficult to let the local vector know its global position in the new
>> subvector? If the user needs to provide the global position of local vector
>> for "iy". some MPI communication should be needed, it looks like not a good
>> method. In exacting submatrix, the function hides this problem. could you
>> give me any comments? thanks a lot.
>>
>> Regards,
>>
>> Yujie
>>
>>
>> On Fri, Jan 2, 2009 at 11:46 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>
>>  VecScatter is for this purpose.
>>
>>  Rational: extracting subparts of vectors for ghost points etc takes place
>> many times in a simulation; maybe millions.
>> Thus separating it into a set-up followed by many uses is a  worthwhile
>> optimization. Extracting submatrices occur
>> much less often in a simulation, maybe tens, hundreds or thousands of
>> times so it is not worth the extra complexity
>> of having separate set-up followed by many uses. One could argue that
>> uniformity of design means we should have
>> handled matrices with a MatScatter concept to parallel the Vec approach,
>> but it is too late now :-).
>>
>>  Barry
>>
>>
>> On Jan 2, 2009, at 1:41 PM, Yujie wrote:
>>
>> Like MatGetSubMatrix(), whether is there a function to get a subvector in
>> parallel mode? I have checked some scatter functios, they don't likely work.
>> thanks a lot.
>>
>> Regards,
>>
>> Yujie
>>
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20090102/cd195b58/attachment.htm>
```