changes to PCASM pushed

Lisandro Dalcin dalcinl at gmail.com
Tue Nov 25 16:42:42 CST 2008


I've pushed my changes to PCASM. I've implemented a 'smart' subdomain
partitioner based on MatPartitioner, and falling back to a by chunks
of rows partitioning if no good partitioner is available
(PCASMCreateSubdomains(), and a convenience routine
PCASMDestroySubdomains(), as now PCASM takes full ownership of
subdomain index set and the array memory holding them). I'll really
appreciate if some of you can review all this, as it was a bit tricky
for me to get it right for all AIJ matrix types, external partitioner
package availability, etc. The biggest crap is that I had to build by
hand a MATMPIADJ, I believe MatConvert() cannot be used in the case of
block-aij matrices (see comments in source code).

A few things missing:

1) Make it the default. Easy to do once I get review and feedback and
you agree to to that.
2) More testing. I'll try to do some work this week.
3) Fortran interface. I would really appreciate any help here.


BTW, the fallback to by-row partitioning (actually the former default)
could perhaps be done better by reusing some of the sparse reordering
routines for SPARSEPACK. I'm thinking about finding a
pseudo-peripheral node, do a level-set traversal, and then do the
partitioning (of course, handling the case of more than one connected
component in the graph). Not really smart, but far better that
partitioning rows in chunks (and more or less equivalent to it for
structured grids in natural ordering) . However, I believe this should
really go to a new PETSc-native (only uniprocessor) MatPartitioning
implementation, righ? Any comments?




-- 
Lisandro Dalcín
---------------
Centro Internacional de Métodos Computacionales en Ingeniería (CIMEC)
Instituto de Desarrollo Tecnológico para la Industria Química (INTEC)
Consejo Nacional de Investigaciones Científicas y Técnicas (CONICET)
PTLC - Güemes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594




More information about the petsc-dev mailing list