<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 15 Sep 2020, at 9:25 PM, Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div dir="ltr" class="">On Tue, Sep 15, 2020 at 3:05 PM Pierre Jolivet <<a href="mailto:pierre.jolivet@enseeiht.fr" class="">pierre.jolivet@enseeiht.fr</a>> wrote:<br class=""></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class="">Thank you Barry for the very comprehensive answer, this gives me hope that I’ll indeed be able to help our Ipopt users transition to Tao when this is in place/if this gets done!<div class="">Shri, my Hessian and my x are currently distributed (really standard distribution, nothing fancy) using the same layout.</div><div class="">I _need_ to centralize the Jacobian on rank 0, because there is currently no way to distribute a matrix with a single row on more than one rank.</div><div class=""><div class="">So in this scenario, PDIPM is indeed not usable, cf. the previous trace.</div><div class="">When you say: "The column layout of the equality/inequality Jacobian is same as that for x”, this is currently not achievable with a distributed x and a single equality/inequality Jacobian.</div><div class="">The two fixes I see:</div><div class="">1) provide the transpose of the Jacobian (of dimension N x 1, so can be split row-wise no problem, but this may have side effect I’m not anticipating)</div><div class=""></div></div></div></blockquote><div class=""><br class=""></div><div class="">This sounds like the easiest and most natural thing.</div></div></div></div></blockquote><div><br class=""></div><div>I think I’m opening a can of worms here…</div><div><div>[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------</div><div>[0]PETSC ERROR: No support for this operation for this object type</div><div>[0]PETSC ERROR: Mat type transpose</div><div>[0]PETSC ERROR: #1 MatTranspose() line 4946 in /Users/jolivet/Documents/repositories/petsc/src/mat/interface/matrix.c</div><div>[0]PETSC ERROR: #2 TaoSetup_PDIPM() line 972 in /Users/jolivet/Documents/repositories/petsc/src/tao/constrained/impls/ipm/pdipm.c</div><div>[0]PETSC ERROR: #3 TaoSetUp() line 269 in /Users/jolivet/Documents/repositories/petsc/src/tao/interface/taosolver.c</div><div>[0]PETSC ERROR: #4 TaoSolve() line 215 in /Users/jolivet/Documents/repositories/petsc/src/tao/interface/taosolver.c</div><div><br class=""></div><div>Trivial to fix by hardwiring a MatDuplicate() in src/mat/impls/transpose/transm.c, but this may not be so easy after all.</div><div><br class=""></div><div>Thanks,</div><div>Pierre</div></div><br class=""><blockquote type="cite" class=""><div class=""><div dir="ltr" style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><div class="gmail_quote"><div class="">  Thanks,</div><div class=""><br class=""></div><div class="">      Matt</div><div class=""> </div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex; border-left-width: 1px; border-left-style: solid; border-left-color: rgb(204, 204, 204); padding-left: 1ex;"><div style="overflow-wrap: break-word;" class=""><div class=""><div class="">2) provide the Jacobian as a Mat_MPIColumn (for lack of a better name, to quote Barry) </div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Pierre</div><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 15 Sep 2020, at 8:18 PM, Barry Smith <<a href="mailto:bsmith@petsc.dev" target="_blank" class="">bsmith@petsc.dev</a>> wrote:</div><br class=""><div class=""><div style="overflow-wrap: break-word;" class=""><div class=""><br class=""></div> <span class="Apple-converted-space"> </span>Pierre,<div class=""><br class=""></div><div class="">   <span class="Apple-converted-space"> </span>Based on my previous mail I am hoping that the <font face="Times New Roman, serif" size="3" class="">PDIPM algorithm itself won't need a major refactorization to be scalable, only a custom matrix type is needed to store and compute with the  Hessian in a scalable way.</font></div><div class=""><font face="Times New Roman, serif" size="3" class=""><br class=""></font></div><div class=""><font face="Times New Roman, serif" size="3" class="">   Barry</font></div><div class=""><font face="Times New Roman, serif" size="3" class=""><br class=""></font></div><div class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Sep 15, 2020, at 12:50 PM, Pierre Jolivet <<a href="mailto:pierre.jolivet@enseeiht.fr" target="_blank" class="">pierre.jolivet@enseeiht.fr</a>> wrote:</div><br class=""><div class=""><div style="overflow-wrap: break-word;" class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On 15 Sep 2020, at 5:40 PM, Abhyankar, Shrirang G <<a href="mailto:shrirang.abhyankar@pnnl.gov" target="_blank" class="">shrirang.abhyankar@pnnl.gov</a>> wrote:</div><br class=""><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">Pierre,<u class=""></u><u class=""></u></span></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">  <span class="Apple-converted-space"> </span>You are right. There are a few MatMultTransposeAdd that may need conforming layouts for the equality/inequality constraint vectors and equality/inequality constraint Jacobian matrices. I need to check if that’s the case. We only have ex1 example currently, we need to add more examples. We are currently working on making PDIPM robust and while doing it will work on adding another example.<u class=""></u><u class=""></u></span></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class=""><u class=""></u> <u class=""></u></span></div><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Very naive question, but given that I have a single constraint, how do I split a 1 x N matrix column-wise? I thought it was not possible.<u class=""></u><u class=""></u></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><i class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class=""><u class=""></u> <u class=""></u></span></i></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">When setting the size of the constraint vector, you need to set the local size on one rank to 1 and all others to zero. For the Jacobian, the local row size on that rank will be 1 and all others to zero. The column layout for the Jacobian should follow the layout for vector x. So each rank will set the local column size of the Jacobian to local size of x.</span></div></div></div></blockquote><div class=""><br class=""></div><div class="">That is assuming I don’t want x to follow the distribution of the Hessian, which is not my case.</div><div class="">Is there some plan to make PDIPM handle different layouts?</div><div class="">I hope I’m not the only one thinking that having a centralized Hessian when there is a single constraint is not scalable?</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Pierre</div><div class=""><br class=""></div><blockquote type="cite" class=""><div class=""><div style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none;" class=""><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">Shri<u class=""></u><u class=""></u></span></div><div style="margin: 0in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class=""><u class=""></u> <u class=""></u></span></div><div class=""><blockquote type="cite" style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">On 15 Sep 2020, at 2:21 AM, Abhyankar, Shrirang G <<a href="mailto:shrirang.abhyankar@pnnl.gov" target="_blank" style="color: blue; text-decoration: underline;" class="">shrirang.abhyankar@pnnl.gov</a>> wrote:<u class=""></u><u class=""></u></div></div><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><u class=""></u> <u class=""></u></div><div class=""><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">Hello Pierre,</span><u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">  <span class="Apple-converted-space"> </span>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.<span class=""> </span></span><u class=""></u><u class=""></u></div></div></div></blockquote><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><u class=""></u> <u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Could you please show an example where this is the case?<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">pdipm->x, which I’m assuming is a working vector, is both used as input for Hessian and Jacobian functions, e.g., <a href="https://gitlab.com/petsc/petsc/-/blob/master/src/tao/constrained/impls/ipm/pdipm.c#L369" target="_blank" style="color: blue; text-decoration: underline;" class="">https://gitlab.com/petsc/petsc/-/blob/master/src/tao/constrained/impls/ipm/pdipm.c#L369</a> (Hessian) + <a href="https://gitlab.com/petsc/petsc/-/blob/master/src/tao/constrained/impls/ipm/pdipm.c#L473" target="_blank" style="color: blue; text-decoration: underline;" class="">https://gitlab.com/petsc/petsc/-/blob/master/src/tao/constrained/impls/ipm/pdipm.c#L473</a> (Jacobian)<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I thus doubt that it is possible to have different layouts?<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">In practice, I end up with the following error when I try this (2 processes, distributed Hessian with centralized Jacobian):<u class=""></u><u class=""></u></div></div><div class=""><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: Nonconforming object sizes<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: Vector wrong size 14172 for scatter 0 (scatter reverse and vector to != ctx from size)<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: #1 VecScatterBegin() line 96 in /Users/jolivet/Documents/repositories/petsc/src/vec/vscat/interface/vscatfce.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: #2 MatMultTransposeAdd_MPIAIJ() line 1223 in /Users/jolivet/Documents/repositories/petsc/src/mat/impls/aij/mpi/mpiaij.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: #3 MatMultTransposeAdd() line 2648 in /Users/jolivet/Documents/repositories/petsc/src/mat/interface/matrix.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: Nonconforming object sizes<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: Vector wrong size 13790 for scatter 27962 (scatter reverse and vector to != ctx from size)<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: #4 TaoSNESFunction_PDIPM() line 510 in /Users/jolivet/Documents/repositories/petsc/src/tao/constrained/impls/ipm/pdipm.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #5 TaoSolve_PDIPM() line 712 in /Users/jolivet/Documents/repositories/petsc/src/tao/constrained/impls/ipm/pdipm.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[1]PETSC ERROR: #6 TaoSolve() line 222 in /Users/jolivet/Documents/repositories/petsc/src/tao/interface/taosolver.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #1 VecScatterBegin() line 96 in /Users/jolivet/Documents/repositories/petsc/src/vec/vscat/interface/vscatfce.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #2 MatMultTransposeAdd_MPIAIJ() line 1223 in /Users/jolivet/Documents/repositories/petsc/src/mat/impls/aij/mpi/mpiaij.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #3 MatMultTransposeAdd() line 2648 in /Users/jolivet/Documents/repositories/petsc/src/mat/interface/matrix.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #4 TaoSNESFunction_PDIPM() line 510 in /Users/jolivet/Documents/repositories/petsc/src/tao/constrained/impls/ipm/pdipm.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #5 TaoSolve_PDIPM() line 712 in /Users/jolivet/Documents/repositories/petsc/src/tao/constrained/impls/ipm/pdipm.c<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">[0]PETSC ERROR: #6 TaoSolve() line 222 in /Users/jolivet/Documents/repositories/petsc/src/tao/interface/taosolver.c<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><u class=""></u> <u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">I think this can be reproduced by ex1.c by just distributing the Hessian instead of having it centralized on rank 0.<u class=""></u><u class=""></u></div></div><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><br class=""><br class=""><u class=""></u><u class=""></u></div><blockquote type="cite" style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">Ideally, you want to have the layout below to minimize movement of matrix/vector elements across ranks.</span><u class=""></u><u class=""></u></div></div><p style="margin-right: 0in; margin-left: 1in; font-size: 11pt; font-family: Calibri, sans-serif; margin-bottom: 0in;" class=""><span style="font-size: 10pt; font-family: Symbol;" class=""><span class="">·<span style="font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: "Times New Roman";" class="">        <span class=""> </span></span></span></span><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">The layout of vectors x, bounds on x, and gradient is same.</span><u class=""></u><u class=""></u></p><p style="margin-right: 0in; margin-left: 1in; font-size: 11pt; font-family: Calibri, sans-serif; margin-bottom: 0in;" class=""><span style="font-size: 10pt; font-family: Symbol;" class=""><span class="">·<span style="font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: "Times New Roman";" class="">        <span class=""> </span></span></span></span><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">The row layout of the equality/inequality Jacobian is same as the equality/inequality constraint vector layout.</span><u class=""></u><u class=""></u></p><p style="margin-right: 0in; margin-left: 1in; font-size: 11pt; font-family: Calibri, sans-serif; margin-bottom: 0in;" class=""><span style="font-size: 10pt; font-family: Symbol;" class=""><span class="">·<span style="font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: "Times New Roman";" class="">        <span class=""> </span></span></span></span><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">The column layout of the equality/inequality Jacobian is same as that for x.</span><u class=""></u><u class=""></u></p></div></blockquote><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><u class=""></u> <u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Very naive question, but given that I have a single constraint, how do I split a 1 x N matrix column-wise? I thought it was not possible.<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><u class=""></u> <u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Thanks,<u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Pierre<u class=""></u><u class=""></u></div></div><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><br class=""><br class=""><u class=""></u><u class=""></u></div><blockquote type="cite" style="margin-top: 5pt; margin-bottom: 5pt;" class=""><div class=""><p style="margin-right: 0in; margin-left: 1in; font-size: 11pt; font-family: Calibri, sans-serif; margin-bottom: 0in;" class=""><span style="font-size: 10pt; font-family: Symbol;" class=""><span class="">·<span style="font-style: normal; font-variant-caps: normal; font-weight: normal; font-stretch: normal; font-size: 7pt; line-height: normal; font-family: "Times New Roman";" class="">        <span class=""> </span></span></span></span><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">The row and column layout for the Hessian is same as x.</span><u class=""></u><u class=""></u></p><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class=""> </span><u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">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.</span><u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class=""> </span><u class=""></u><u class=""></u></div></div><div class=""><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">Thanks,</span><u class=""></u><u class=""></u></div></div><div class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><span style="font-size: 12pt; font-family: "Times New Roman", serif;" class="">Shri</span><u class=""></u><u class=""></u></div></div></div><div style="border-style: solid none none; border-top-width: 1pt; border-top-color: rgb(181, 196, 223); padding: 3pt 0in 0in;" class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><b class=""><span style="font-size: 12pt;" class="">From:<span class=""> </span></span></b><span style="font-size: 12pt;" class="">petsc-dev <<a href="mailto:petsc-dev-bounces@mcs.anl.gov" target="_blank" style="color: blue; text-decoration: underline;" class="">petsc-dev-bounces@mcs.anl.gov</a>> on behalf of Pierre Jolivet <<a href="mailto:pierre.jolivet@enseeiht.fr" target="_blank" style="color: blue; text-decoration: underline;" class="">pierre.jolivet@enseeiht.fr</a>><br class=""><b class="">Date:<span class=""> </span></b>Monday, September 14, 2020 at 1:52 PM<br class=""><b class="">To:<span class=""> </span></b>PETSc Development <<a href="mailto:petsc-dev@mcs.anl.gov" target="_blank" style="color: blue; text-decoration: underline;" class="">petsc-dev@mcs.anl.gov</a>><br class=""><b class="">Subject:<span class=""> </span></b>[petsc-dev] PDIPDM questions</span><u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hello,<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">In my quest to help users migrate from Ipopt to Tao, I’ve a new question.<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">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).<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">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.<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Is this possible?<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">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?<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">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?<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">So, just to sum up, how can I have a distributed Hessian with a Jacobian with a single row?<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Thanks in advance for your help,<u class=""></u><u class=""></u></div></div></div><div class=""><div style="margin-left: 0.5in;" class=""><div style="margin: 0in 0in 0in 0.5in; font-size: 11pt; font-family: Calibri, sans-serif;" class="">Pierre</div></div></div></div></blockquote></div></div></div></blockquote></div><br class=""></div></div></blockquote></div><br class=""></div></div></div></blockquote></div><br class=""></div></div></blockquote></div><br clear="all" class=""><div class=""><br class=""></div>--<span class="Apple-converted-space"> </span><br class=""><div dir="ltr" class="gmail_signature"><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class=""><div dir="ltr" class=""><div class="">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br class="">-- Norbert Wiener</div><div class=""><br class=""></div><div class=""><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank" class="">https://www.cse.buffalo.edu/~knepley/</a></div></div></div></div></div></div></div></div></div></blockquote></div><br class=""></body></html>