[petsc-users] syntax for routine in PCMGSetResidual

Matthew Knepley knepley at gmail.com
Thu Nov 12 19:53:10 CST 2015


On Thu, Nov 12, 2015 at 7:39 PM, Timothée Nicolas <
timothee.nicolas at gmail.com> wrote:

> Sorry, here is the full error message
>
> [0]PETSC ERROR: Nonconforming object sizes
> [0]PETSC ERROR: Preconditioner number of local rows -1 does not equal
> resulting vector number of rows 71808
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
> for trouble shooting.
> [0]PETSC ERROR: Petsc Release Version 3.6.0, Jun, 09, 2015
> [0]PETSC ERROR: ./mips_implicit on a arch-linux2-c-opt named helios90 by
> tnicolas Fri Nov 13 10:39:14 2015
> [0]PETSC ERROR: Configure options
> --prefix=/csc/softs/anl/petsc-3.6.0/intel-15.0.0.090/bullxmpi-1.2.8.2/real
> --with-debugging=0 --with-x=0 --with-cc=mpicc --with-fc=mpif90
> --with-cxx=mpicxx --with-fortran --known-mpi-shared-libraries=1
> --with-scalar-type=real --with-precision=double --CFLAGS="-g -O3 -mavx
> -mkl" --CXXFLAGS="-g -O3 -mavx -mkl" --FFLAGS="-g -O3 -mavx -mkl"
> [0]PETSC ERROR: #1 PCApply() line 472 in
> /csc/releases/buildlog/anl/petsc-3.6.0/intel-15.0.0.090/bullxmpi-1.2.8.2/real/petsc-3.6.0/src/ksp/pc/interface/precon.c
> [0]PETSC ERROR: #2 KSP_PCApply() line 242 in
> /csc/releases/buildlog/anl/petsc-3.6.0/intel-15.0.0.090/bullxmpi-1.2.8.2/real/petsc-3.6.0/include/petsc/private/kspimpl.h
> [0]PETSC ERROR: #3 KSPInitialResidual() line 63 in
> /csc/releases/buildlog/anl/petsc-3.6.0/intel-15.0.0.090/bullxmpi-1.2.8.2/real/petsc-3.6.0/src/ksp/ksp/interface/itres.c
> [0]PETSC ERROR: #4 KSPSolve_GMRES() line 235 in
> /csc/releases/buildlog/anl/petsc-3.6.0/intel-15.0.0.090/bullxmpi-1.2.8.2/real/petsc-3.6.0/src/ksp/ksp/impls/gmres/gmres.c
> [0]PETSC ERROR: #5 KSPSolve() line 604 in
> /csc/releases/buildlog/anl/petsc-3.6.0/intel-15.0.0.090/bullxmpi-1.2.8.2/real/petsc-3.6.0/src/ksp/ksp/interface/itfunc.c
>

The PC uses the matrix it gets to determine sizes, and compare to the input
vectors it gets for PCApply(). The
preconditioner matrix is not setup or is not reporting sizes, for example
if its a MATSHELL it does not have any sizes.

  Matt


> 2015-11-13 10:38 GMT+09:00 Matthew Knepley <knepley at gmail.com>:
>
>> On Thu, Nov 12, 2015 at 6:47 PM, Timothée Nicolas <
>> timothee.nicolas at gmail.com> wrote:
>>
>>> Hi all,
>>>
>>> In the manual and the documentation, the syntax for the routine to be
>>> given as argument of PCMGSetResidual:
>>>
>>> PCMGSetResidual <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/PC/PCMGSetResidual.html#PCMGSetResidual>(PC pc,PetscInt <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Sys/PetscInt.html#PetscInt> l,PetscErrorCode <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Sys/PetscErrorCode.html#PetscErrorCode> (*residual)(Mat <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Mat/Mat.html#Mat>,Vec <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Vec/Vec.html#Vec>,Vec <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Vec/Vec.html#Vec>,Vec <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Vec/Vec.html#Vec>),Mat <http://www.mcs.anl.gov/petsc/petsc-3.6/docs/manualpages/Mat/Mat.html#Mat> mat)
>>>
>>>
>>> is not specified. I mean that the order of the vectors is not specified.
>>> I suppose it is something like
>>> residual(Mat,b,x,r) with r = b - Mat*x, but it could as well be any
>>> combination like residual(Mat,r,x,b). There is no example in the
>>> documentation of the usage so I am confused. Does it absolutely need to be
>>> set ? I find the manual a bit confusing on this point. Is it only if
>>> matrix-free matrices are used ?
>>>
>>> In the present situation, I use matrix-free operators in a multigrid
>>> preconditioner (but the interpolation and restriction are not matrix free)
>>> and have not set this residual function yet. I get the following error:
>>>
>>
>> Always always always give the entire error message. We want the stack.
>>
>> The problem here looks like the preconditioner is reporting -1 rows for
>> process 13.
>>
>>   Matt
>>
>>
>>> [13]PETSC ERROR: Preconditioner number of local rows -1 does not equal
>>> resulting vector number of rows 67584
>>>
>>> Could this be related ? By the way, I don't understand what is meant by
>>> the "preconditioner number of local rows". I have separately tested the
>>> operators at each level and they are fine.
>>>
>>> Best
>>>
>>> Timothee
>>>
>>
>>
>>
>> --
>> What most experimenters take for granted before they begin their
>> experiments is infinitely more interesting than any results to which their
>> experiments lead.
>> -- Norbert Wiener
>>
>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20151112/13e4abcd/attachment.html>


More information about the petsc-users mailing list