[petsc-users] Flexiable AIJ matrix for nonzeros -- hash table version

Barry Smith bsmith at mcs.anl.gov
Mon May 9 07:35:41 CDT 2011


   Also please read Chapter 5 of http://www.mcs.anl.gov/petsc/petsc-as/developers/developers.pdf and try to make the new source code confirm to the PETSc style as much as possible.

     Thanks

     Barry

On May 9, 2011, at 7:32 AM, Barry Smith wrote:

> 
> 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
>> 
>> 
>> 
>> 
>> 
> 



More information about the petsc-users mailing list