MatGetSubMatrix question
Jed Brown
jed at 59A2.org
Wed May 27 07:58:43 CDT 2009
Barry Smith wrote:
>
> On May 26, 2009, at 6:30 PM, Lisandro Dalcin wrote:
>
>> On Tue, May 26, 2009 at 7:03 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>>
>>> I think this change may make sense. The switch would be done by
>>> putting
>>> the ISAllGather() inside each current implementation. (The current
>>> implementations are already not scalable, so this will not change that).
>>>
>>> Anybody want to try this change?
>>>
>>
>> But then you are forcibly introducing a non-scalable ISAllGather() on
>> every call to MatGetSubMatrix(). No chance to factor-out this
>> operation if you need to get submatrices many times in the case
>> nonzero-patterns and submat-indices never changing.
>
> Hmm, we could stash the isallgathered version inside the submatrix
> and then use a "state" value in the IS passed in to
> determine if the is was changed and if not simply reuse the stashed
> isallgathered version.
It seems to me that with MAT_REUSE_MATRIX, the user is asserting that
they are the same. In debug mode (at least) we should confirm that this
is indeed so, but that's a local operation. Checking 'state' would be a
way to skip this check, but I'm not convinced it's a necessary
optimization.
In the process of making this change, I'm updating a couple of the IS
man pages for their meaning in parallel. While figuring out that
precise meaning, I noticed that the min and max fields of IS can be
removed, they are only used here:
../vec/vec/utils/vscat.c
1112: if (ix->min >= start && ix->max < end) islocal = PETSC_TRUE; else islocal = PETSC_FALSE;
1329: if (iy->min >= start && iy->max < end) islocal = PETSC_TRUE; else islocal = PETSC_FALSE;
Jed
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20090527/48866845/attachment.sig>
More information about the petsc-dev
mailing list