[petsc-users] MatPrealloctor

Randall Mackie rlmackie862 at gmail.com
Fri Jul 29 16:51:38 CDT 2022


Barry,

So adding the call to MatSetBlockSize to the preallocator does fix the error, but that is not necessary if I simply replace the call to MatPreallocaterPreallocate with a call to MatMPIAIJSetPreallocation.

And it’s confusing to me especially in light of this exchange a couple months ago about block sizes:

https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2022-May/046094.html <https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2022-May/046094.html>

Honestly it’s not very clear why in one case I need to explicitly set the block size (when using the MatPreallocator) but not in the other case.

Thanks,

Randy

> On Jul 29, 2022, at 2:36 PM, Barry Smith <bsmith at petsc.dev> wrote:
> 
>  
>   Because you create the DMDA with a dof of 3, this triggers any matrices it creates and the localtoglobalmapping object it creates to have a block size of three. The error you are seeing is that a localtoglobal with a block size of 3 cannot be attached to a matrix with a block size of 1.
> 
>   The "block size" of 3 for the localtoglobalmapping does not have a lot of meaning but it is used to optimize the storage and application of global to local mappings.
> 
>   Barry
> 
> 
>> On Jul 29, 2022, at 5:33 PM, Randall Mackie <rlmackie862 at gmail.com <mailto:rlmackie862 at gmail.com>> wrote:
>> 
>> Why do I have to set the block size to 3? I’m not trying to create a block matrix.
>> 
>> In fact just a couple months ago I was told I don’t have block matrices and I had to remove calls to set the block size:
>> 
>> https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2022-May/046094.html <https://lists.mcs.anl.gov/mailman/htdig/petsc-users/2022-May/046094.html>
>> 
>> This works fine without the MatPreallocator routines.
>> 
>> Randy
>> 
>>> On Jul 29, 2022, at 2:23 PM, Barry Smith <bsmith at petsc.dev <mailto:bsmith at petsc.dev>> wrote:
>>> 
>>> 
>>>   I'm hoping that it is as simple as that you did not set the block size of your newly created matrix to 3?
>>> 
>>> 
>>> 
>>>> On Jul 29, 2022, at 4:04 PM, Randall Mackie <rlmackie862 at gmail.com <mailto:rlmackie862 at gmail.com>> wrote:
>>>> 
>>>> Hi Barry,
>>>> 
>>>> It seems like this should be trivial to get working but so far I’ve been unsuccessful.
>>>> Most likely I’m doing something wrong but I have no idea what that is.
>>>> 
>>>> I’ve attached a little test program that fails with the errors:
>>>> 
>>>> [0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
>>>> [0]PETSC ERROR: Petsc has generated inconsistent data
>>>> [0]PETSC ERROR: Blocksize of layout 1 must match that of mapping 3 (or the latter must be 1)
>>>> [0]PETSC ERROR: See https://petsc.org/release/faq/ <https://petsc.org/release/faq/> for trouble shooting.
>>>> [0]PETSC ERROR: Petsc Release Version 3.17.3, Jun 29, 2022
>>>> [0]PETSC ERROR: ./test on a linux-gfortran-complex-debug named rmackie-VirtualBox by rmackie Fri Jul 29 12:16:13 2022
>>>> [0]PETSC ERROR: Configure options --with-clean=1 --with-scalar-type=complex --with-debugging=1 --with-fortran=1 --download-mpich=../external/mpich-4.0.1.tar.gz
>>>> [0]PETSC ERROR: #1 PetscLayoutSetISLocalToGlobalMapping() at /home/rmackie/PETSc/petsc-3.17.3/src/vec/is/utils/pmap.c:363
>>>> [0]PETSC ERROR: #2 MatSetLocalToGlobalMapping() at /home/rmackie/PETSc/petsc-3.17.3/src/mat/interface/matrix.c:2012
>>>> 
>>>> 
>>>> Any help to point me in the right direction is appreciated.
>>>> 
>>>> Randy M.
>>>> 
>>>> <files.zip>
>>>> 
>>>>> On Jul 28, 2022, at 2:49 PM, Barry Smith <bsmith at petsc.dev <mailto:bsmith at petsc.dev>> wrote:
>>>>> 
>>>>> 
>>>>>   I am not sure what you are asking exactly but I think so, so long have you have called MatSetLocalToGlobalMapping() and the "stencil" idea makes sense for your discretization.
>>>>> 
>>>>>  Barry
>>>>> 
>>>>> 
>>>>>> On Jul 28, 2022, at 5:41 PM, Randall Mackie <rlmackie862 at gmail.com <mailto:rlmackie862 at gmail.com>> wrote:
>>>>>> 
>>>>>> Dear PETSc users:
>>>>>> 
>>>>>> Can one use a MatPreallocator and then call MatPreAlloctorPreallocate if using MatStencil routines (which seem to call MatSetValuesLocal).
>>>>>> 
>>>>>> 
>>>>>> Thanks, Randy
>>>>> 
>>>> 
>>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20220729/61f7b557/attachment-0001.html>


More information about the petsc-users mailing list