[petsc-dev] API changes in MatIS

Stefano Zampini stefano.zampini at gmail.com
Tue May 8 04:30:23 CDT 2012


All public API changes have to be documented at
> src/docs/website/documentation/changes/dev.html.
>
> http://petsc.cs.iit.edu/petsc/petsc-dev/rev/a942f19a37c9
>
>
Sorry, I didn't know that. A stupid question but, can you say how many
users are using MATIS objects?

2. What was wrong with the default MatGetVecs()?
>
>
There's a conceptual difference: default MatGetVecs uses mat->rmap->n and
mat->cmat->n as local sizes of the vectors since it assumes a distributed
Matrix. MATIS object is not distributed in a standard way (say, all
mat->rmap->n values sums to number of global rows), MatMult_IS is not
directly performed using the local part of the global vector, thus there is
not a real need (apart of Petsc checking the sizes) of the notion of
mat->rmap->n (or mat->cmap->n) as in the standard implementation. What you
really need is the global size of the vector; indeed the sizes of the local
vectors used to perform MatMult_IS doesn't sum up to the vector global size.

3. Options prefixes should inherit the prefix from the parent and should
> end with "_" so that they aren't squashed together with the suboptions.
>

Since MatSetOptionsPrefix(is->A,"is") was already there, I thought it was
right using the same prefix for local vectors. Change it as you prefer.


> 5. Why is the matrix being forced to be square?
>
>
MATIS were already forced to be square before I began using it.


Pushed a fix to the problems you highlighted

http://petsc.cs.iit.edu/petsc/petsc-dev/rev/93e67397a066

Calling MatSetBlockSize before MatSetSizes in MatCreateIS solved all my
problems.

Since we are speaking about MATIS. In my codes, I have a function (now it
is in Fortran but I can translate it)

MatISOptimize(Mat A,IS *LocalIS ,IS *GlobalIS)

which changes the MATIS object, changing its local to global mapping to
optimize either for local scatters and for global communications costs. It
also changes the local matrix associated to the MATIS object. The function
also returns the permutations used (if not PETSC_NULL). Can I add it to
matis.c? Since it changes the underlying object, what are the requirements
of PETSc? Should the user be able to insert the values with the original
ordering? Any suggestions?


-- 
Stefano
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20120508/28ef34ba/attachment.html>


More information about the petsc-dev mailing list