[petsc-users] When to destroy an IS?

Matthew Knepley knepley at gmail.com
Wed Feb 24 11:41:09 CST 2016


On Wed, Feb 24, 2016 at 9:58 AM, Florian Lindner <mailinglists at xgm.de>
wrote:

> Hello,
>
> I create a couple of index sets:
>
>   ISLocalToGlobalMapping _ISmapping;
>   IS ISlocal, ISlocalInv, ISglobal, ISidentity, ISidentityGlobal;
>   ISLocalToGlobalMapping ISidentityMapping;
>
>   // Create an index set which maps myIndizes to continous chunks of
> matrix rows.
>   ierr = ISCreateGeneral(PETSC_COMM_WORLD, myIndizes.size(),
> myIndizes.data(), PETSC_COPY_VALUES, &ISlocal); CHKERRV(ierr);
>   ierr = ISSetPermutation(ISlocal); CHKERRV(ierr);
>   ierr = ISInvertPermutation(ISlocal, myIndizes.size(), &ISlocalInv);
> CHKERRV(ierr);
>   ierr = ISAllGather(ISlocalInv, &ISglobal); CHKERRV(ierr); // Gather the
> IS from all processors
>   ierr = ISLocalToGlobalMappingCreateIS(ISglobal, &_ISmapping);
> CHKERRV(ierr); // Make it a mapping
>
>   // Create an identity mapping and use that for the rows of matrixA.
>   ierr = ISCreateStride(PETSC_COMM_WORLD, _matrixA.ownerRange().second -
> _matrixA.ownerRange().first, _matrixA.ownerRange().first, 1, &ISidentity);
> CHKERRV(ierr);
>   ierr = ISSetIdentity(ISidentity); CHKERRV(ierr);
>   ierr = ISAllGather(ISidentity, &ISidentityGlobal); CHKERRV(ierr);
>   ierr = ISLocalToGlobalMappingCreateIS(ISidentityGlobal,
> &ISidentityMapping); CHKERRV(ierr);
>
>   ierr = MatSetLocalToGlobalMapping(_matrixC.matrix, _ISmapping,
> _ISmapping); CHKERRV(ierr); // Set mapping for rows and cols
>   ierr = MatSetLocalToGlobalMapping(_matrixA.matrix, ISidentityMapping,
> _ISmapping); CHKERRV(ierr); // Set mapping only for cols, use identity for
> rows
>
>
> Two questions:
>
> 1) Since I only need the _ISmapping again, is there any way to optimize
> that, i.e. use less temporary variables?
>

It is not clear to me what is being done.


> 2) Do all IS variables (_ISmapping, ISlocal, ISlocalInv, ISglobal,
> ISidentity, ISidentityGlobal, ISidentityMapping) need to be destroyed using
> ISDestroy at the end? Or only the ones that were created using a ISCreate*
> function (ISlocal, ISidentity)?
>

All of them since you create new ISes with all those functions like
ISInvertPermutation.

  Matt


> Thanks,
>
> Florian
>



-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160224/2cc89bd5/attachment.html>


More information about the petsc-users mailing list