Hello Pierre,
   PDIPM works in parallel so you can have distributed Hessian, Jacobians, 
constraints, variables, gradients in any layout you want.  If you are using a 
DM then you can have it generate the Hessian.

Ideally, you want to have the layout below to minimize movement of 
matrix/vector elements across ranks.

  *   The layout of vectors x, bounds on x, and gradient is same.
  *   The row layout of the equality/inequality Jacobian is same as the 
equality/inequality constraint vector layout.
  *   The column layout of the equality/inequality Jacobian is same as that for 
x.
  *   The row and column layout for the Hessian is same as x.

The tutorial example ex1 is extremely small (only 2 variables) so its 
implementation is very simplistic. I think, in parallel, it ships off 
constraints etc. to rank 0. It’s not an ideal example w.r.t demonstrating a 
parallel implementation. We aim to add more examples as we develop PDIPM. If 
you have an example to contribute then we would most welcome it and provide 
help on adding it.

Thanks,
Shri
From: petsc-dev <petsc-dev-boun...@mcs.anl.gov> on behalf of Pierre Jolivet 
<pierre.joli...@enseeiht.fr>
Date: Monday, September 14, 2020 at 1:52 PM
To: PETSc Development <petsc-dev@mcs.anl.gov>
Subject: [petsc-dev] PDIPDM questions

Hello,
In my quest to help users migrate from Ipopt to Tao, I’ve a new question.
When looking at src/tao/constrained/tutorials/ex1.c, it seems that almost 
everything is centralized on rank 0 (local sizes are 0 but on rank 0).
I’d like to have my Hessian distributed more naturally, as in (almost?) all 
other SNES/TS examples, but still keep the Jacobian of my equality constraint, 
which is of dimension 1 x N (N >> 1), centralized on rank 0.
Is this possible?
If not, is it possible to supply the transpose of the Jacobian, of dimension N 
x 1, which could then be distributed row-wise like the Hessian?
Or maybe use some trick to distribute a MatAIJ/MatDense of dimension 1 x N 
column-wise? Use a MatNest with as many blocks as processes?

So, just to sum up, how can I have a distributed Hessian with a Jacobian with a 
single row?

Thanks in advance for your help,
Pierre

Reply via email to