Hi Justin,

If  the only constraints you have are bounds on the variables, then you are
much better off using the TAO algorithms tron or blmvm. IPM builds its own
KKT matrix for a ksp solve that is undoubtably much less efficient than
what will be used in tron (blmvm avoids ksp solves all together).

That begin said, it looks like there's a bug in IPM and I'll try to track
it down, thanks for the report.

Jason


On Tue, Oct 14, 2014 at 9:34 PM, Justin Chang <jychan...@gmail.com> wrote:

>   Attached is the source code and the makefile used to compile/run the
> code.
>
>  The source code is basically a dumbed down version of SNES ex12 plus
> necessary TAO routines.
>
>  Thanks
>
> On Tue, Oct 14, 2014 at 8:39 PM, Matthew Knepley <knep...@gmail.com>
> wrote:
>
>>  On Tue, Oct 14, 2014 at 8:04 PM, Justin Chang <jychan...@gmail.com>
>> wrote:
>>
>>>  Hi all,
>>>
>>>  So I am writing a non-negative diffusion equation using DMPlex's FEM
>>> and Tao's SetVariableBounds functions. My code works really perfectly when
>>> I run it with one processor. However, once I use 2 or more processors, I
>>> get this error:
>>>
>>
>>  It looks like the problem is in the TAO definition, but you can check
>> by just solving your problem with, for instance, BJacobi-LU in parallel.
>>
>>
>>>  [0]PETSC ERROR: --------------------- Error Message
>>> --------------------------------------------------------------
>>> [0]PETSC ERROR: Nonconforming object sizes
>>> [0]PETSC ERROR: Vector wrong size 89 for scatter 88 (scatter reverse and
>>> vector to != ctx from size)
>>> [1]PETSC ERROR: --------------------- Error Message
>>> --------------------------------------------------------------
>>> [1]PETSC ERROR: Nonconforming object sizes
>>> [1]PETSC ERROR: Vector wrong size 87 for scatter 88 (scatter reverse and
>>> vector to != ctx from size)
>>> [1]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
>>> for trouble shooting.
>>> [1]PETSC ERROR: Petsc Development GIT revision: v3.5.2-526-gfaecc80  GIT
>>> Date: 2014-10-04 20:10:35 -0500
>>> [1]PETSC ERROR: [0]PETSC ERROR: See
>>> http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble
>>> shooting.
>>> [0]PETSC ERROR: Petsc Development GIT revision: v3.5.2-526-gfaecc80  GIT
>>> Date: 2014-10-04 20:10:35 -0500
>>> [0]PETSC ERROR: ./bin/diff2D on a arch-linux2-c-debug named pacotaco by
>>> justin Tue Oct 14 19:48:50 2014
>>> [0]PETSC ERROR: ./bin/diff2D on a arch-linux2-c-debug named pacotaco by
>>> justin Tue Oct 14 19:48:50 2014
>>> [1]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>>> --with-fc=gfortran --download-fblaslapack --download-mpich
>>> --with-debugging=1 --download-metis --download-parmetis --download-triangle
>>> --with-cmake=cmake --download-ctetgen --download-superlu
>>> --download-scalapack --download-mumps --download-hdf5 --with-valgrind=1
>>> -with-cmake=cmake
>>> [1]PETSC ERROR: Configure options --with-cc=gcc --with-cxx=g++
>>> --with-fc=gfortran --download-fblaslapack --download-mpich
>>> --with-debugging=1 --download-metis --download-parmetis --download-triangle
>>> --with-cmake=cmake --download-ctetgen --download-superlu
>>> --download-scalapack --download-mumps --download-hdf5 --with-valgrind=1
>>> -with-cmake=cmake
>>> [0]PETSC ERROR: #1 VecScatterBegin() line 1713 in
>>> /home/justin/petsc-master/src/vec/vec/utils/vscat.c
>>> #1 VecScatterBegin() line 1713 in
>>> /home/justin/petsc-master/src/vec/vec/utils/vscat.c
>>> [1]PETSC ERROR: [0]PETSC ERROR: #2 MatMultTranspose_MPIAIJ() line 1010
>>> in /home/justin/petsc-master/src/mat/impls/aij/mpi/mpiaij.c
>>> [0]PETSC ERROR: #2 MatMultTranspose_MPIAIJ() line 1010 in
>>> /home/justin/petsc-master/src/mat/impls/aij/mpi/mpiaij.c
>>> [1]PETSC ERROR: #3 MatMultTranspose() line 2242 in
>>> /home/justin/petsc-master/src/mat/interface/matrix.c
>>> #3 MatMultTranspose() line 2242 in
>>> /home/justin/petsc-master/src/mat/interface/matrix.c
>>> [0]PETSC ERROR: #4 IPMComputeKKT() line 616 in
>>> /home/justin/petsc-master/src/tao/constrained/impls/ipm/ipm.c
>>> [1]PETSC ERROR: #4 IPMComputeKKT() line 616 in
>>> /home/justin/petsc-master/src/tao/constrained/impls/ipm/ipm.c
>>> [1]PETSC ERROR: [0]PETSC ERROR: #5 TaoSolve_IPM() line 50 in
>>> /home/justin/petsc-master/src/tao/constrained/impls/ipm/ipm.c
>>> [0]PETSC ERROR: #5 TaoSolve_IPM() line 50 in
>>> /home/justin/petsc-master/src/tao/constrained/impls/ipm/ipm.c
>>> [1]PETSC ERROR: #6 TaoSolve() line 190 in
>>> /home/justin/petsc-master/src/tao/interface/taosolver.c
>>> #6 TaoSolve() line 190 in
>>> /home/justin/petsc-master/src/tao/interface/taosolver.c
>>> [0]PETSC ERROR: #7 main() line 341 in
>>> /home/justin/Dropbox/Research_Topics/Petsc_Nonneg_diffusion/src/diff2D.c
>>> [1]PETSC ERROR: #7 main() line 341 in
>>> /home/justin/Dropbox/Research_Topics/Petsc_Nonneg_diffusion/src/diff2D.c
>>> [1]PETSC ERROR: [0]PETSC ERROR: ----------------End of Error Message
>>> -------send entire error message to petsc-ma...@mcs.anl.gov----------
>>> ----------------End of Error Message -------send entire error message to
>>> petsc-ma...@mcs.anl.gov----------
>>> application called MPI_Abort(MPI_COMM_WORLD, 60) - process 0
>>> application called MPI_Abort(MPI_COMM_WORLD, 60) - process 1
>>> [cli_1]: aborting job:
>>> application called MPI_Abort(MPI_COMM_WORLD, 60) - process 1
>>> [cli_0]: aborting job:
>>> application called MPI_Abort(MPI_COMM_WORLD, 60) - process 0
>>>
>>>
>>>  I have no idea how or why I am getting this error. What does this mean?
>>>
>>
>>   It looks like one dof is given to proc 0 which should live on proc 1.
>> We have to look at the divisions
>> made in the KKT solver. Can you send a small example?
>>
>>    Matt
>>
>>
>>>  My code is essentially built off of SNES ex12.c. The Jacobian matrix,
>>> residual vector, and solution vector were created using DMPlex and the
>>> built-in FEM functions within. The Hessian matrix and gradient vector were
>>> created by simple matmult() functions of the jacobian and residual. The
>>> lower bounds vector was created by duplicating the solution vector (initial
>>> guess set to zero). My FormFunctionGradient() is basically the same thing
>>> as in the maros.c example. can give more information if needed.
>>>
>>> Thanks,
>>> Justin
>>>
>>
>>
>>
>>  --
>> 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
>>
>
>

Reply via email to