On May 9, 2011, at 4:04 AM, Gong Ding wrote:

> Hi
> I created a flexible AIJ matrix type ?named as FAIJ. It has an extra hash 
> table for nonzero which do not have pre-allocated position. And the buffered 
> values in hash table will be flushed to AIJ array at MatAssemblyEnd. Both 
> sequential and parallel version have been implemented and tested.
> 
> The test results show that for middle size problem ? matrix size around 1M, 
> FAIJ without any pre-allocation still pretty fast. The shortcoming is memory 
> overkill exists. Fortunately, modern computers have larger and larger memory. 
>  User with FAIJ matrix only needs to provide approximate nonzero pattern or 
> even skip this step. 
> 
   Cool! This is a very nice feature; thanks for writing it.

> However, direct solvers such as mumps and superlu_dist will crash. This is 
> caused by type compare functions, i.e.:
> ierr = PetscTypeCompare((PetscObject)A,MATMPIAIJ,&isAIJ);CHKERRQ(ierr);
> FAIJ matrix is derived from AIJ, but it has its own type name, i.e. 
> MATMPIFAIJ. The above function will assign isAIJ false.
> 
> Is there any function like ?PetscBaseType? exist?  FAIJ matrix can hold its 
> type name as well as its base type name. 

   We don't have a good general mechanism for handling this situation. I'll 
think about what can be done for this.

> 
> I hope FAIJ can be accepted by petsc 3.2. 

   Please see 
http://www.mcs.anl.gov/petsc/petsc-as/developers/index.html#Sending_patches_to_update_the_
 for how to prepare a patch that we can add to petsc-dev.

    Barry

> Thanks.
> 
> Gong Ding
> 
> 
> 
> 
> 

Reply via email to