<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class=""><br class=""></div>  It is unlikely that the true number of colors is much less than 230 so I don't think you can save by reducing the number of colors more. <div class=""><br class=""></div><div class="">  Are you using IS_COLORING_LOCAL it eliminates much parallel communication so you would definitely benefit by using this, depending on how your FormFunction is written you may need to refactor your code slightly. </div><div class=""><br class=""></div><div class="">  There is also a hidden parameter which is a tradeoff of memory usage vs speed. If memory is not an issue for you then you could change this parameter. It is computed in MatFDColoringCreate_MPIXAIJ() called bcols You can just hardware bcols to iscoloring->n This may help a bit.</div><div class=""><br class=""></div><div class="">   The only way to drastically improve the time after the above is to reorganize the PETSc code and your code to evaluate multiple function evaluations "at the same time" but this is a major project (it has to be done for GPUs).</div><div class=""><div class=""><br class=""></div><div class="">  <span style="font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols; font-size: 12pt;" class="">MATCOLORINGMIS doesn't exist, it is a typo in the docs.</span></div><div class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" size="3" class=""><br class=""></font></div><div class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" size="3" class="">  Barry</font></div><div class=""><font face="Calibri, Helvetica, sans-serif, EmojiFont, Apple Color Emoji, Segoe UI Emoji, NotoColorEmoji, Segoe UI Symbol, Android Emoji, EmojiSymbols" size="3" class=""><br class=""></font><div><br class=""><blockquote type="cite" class=""><div class="">On May 11, 2022, at 2:25 PM, Jorti, Zakariae <<a href="mailto:zjorti@lanl.gov" class="">zjorti@lanl.gov</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta charset="UTF-8" class=""><div id="divtagdefaultwrapper" dir="ltr" style="font-style: normal; font-variant-caps: normal; font-weight: 400; 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; font-size: 12pt; font-family: Calibri, Helvetica, sans-serif;" class=""><div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" class=""><div style="margin-top: 0px; margin-bottom: 0px;" class="">Hello,<br class=""><br class="">I have used the -mat_coloring_view and -mat_fd_coloring_view flags as you suggested and it turns out that the coloring used was<span class="Apple-converted-space"> </span><span class="">MATCOLORINGSL.<span class="Apple-converted-space"> </span><br class=""></span></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><span class="">I have also tried other methods and obtained the following numbers of function evaluations per Jacobian building:  <span class="Apple-converted-space"> </span></span><br class="">- MATCOLORINGJP : 593<br class=""><span class="">- MATCOLORINGID : 327</span></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><span class="">- MATCOLORINGSL : 321</span></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><span class="">- MATCOLORINGGREEDY : 316</span></div><div style="margin-top: 0px; margin-bottom: 0px;" class=""><span class="">- MATCOLORINGLF :<span class="Apple-converted-space"> </span></span>230<br class=""><br class=""><span class="">Is there any parameter/trick we can try to further cut down the number of function evaluations? And also how could we use MATCOLORINGMIS as this latter does not appear in the MatColoringType options?<br class="">Many thanks.</span><br class=""><br class="">Zakariae<br class=""></div></div><hr tabindex="-1" style="display: inline-block; width: 1075.046875px;" class=""><div id="divRplyFwdMsg" dir="ltr" class=""><font face="Calibri, sans-serif" style="font-size: 11pt;" class=""><b class="">From:</b><span class="Apple-converted-space"> </span>Tang, Qi <<a href="mailto:tangqi@msu.edu" class="">tangqi@msu.edu</a>><br class=""><b class="">Sent:</b><span class="Apple-converted-space"> </span>Tuesday, May 10, 2022 10:51:07 AM<br class=""><b class="">To:</b><span class="Apple-converted-space"> </span>Barry Smith;<span class="Apple-converted-space"> </span><a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a><br class=""><b class="">Cc:</b><span class="Apple-converted-space"> </span>Jorti, Zakariae; Tang, Xianzhu<br class=""><b class="">Subject:</b><span class="Apple-converted-space"> </span>[EXTERNAL] Re: [petsc-users] MatColoring</font><div class=""> </div></div><div class="">We are using SNES + TS + dmstag. The current bottleneck is the number of residual evaluation (more than 300 per Jacobian building using the default coloring from dmstag). We talked to Patrick and we are not sure how to improve further.<div class=""><br class=""></div><div class="">So it looks like we should play with mat_coloring_type and see if others give us better performance.</div><div class=""><br class=""></div><div class="">If there is anything else we can play with, please also let us know. We also lag Jacobian and only build once every three Newton iterations, which works well. Thanks,</div><div class=""><br class=""></div><div class="">Qi<br class=""><div class=""><br class=""></div><div class=""><br class=""><div class=""><blockquote type="cite" class=""><div class="">On May 10, 2022, at 10:35 AM, Barry Smith <<a href="mailto:bsmith@petsc.dev" class="">bsmith@petsc.dev</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="" style="word-wrap: break-word; line-break: after-white-space;"><div class=""><br class=""></div>  This depends to some degree on how you are accessing applying the Jacobian construction process. <div class=""><br class=""></div><div class="">   If you are using SNES or TS then the SNES object handles most of the work of organizing the PETSc objects needed to compute the Jacobian and you can control the choices via the options database. </div><div class=""><br class=""></div><div class="">   With SNES/TS using a DM you can skip calling SNESSetJacobian() and simply use the option -snes_fd_color to have SNES compute the Jacobian for you. By default, the coloring is obtained from the DM (which is generally the best available coloring), you can have it use a coloring computed directly from the matrix structure with the options -snes_fd_color_use_mat -mat_coloring_type  jp power sl lf ld or greedy (see MatColoringType, MatColoringSetFromOptions) Use  -mat_fd_coloring_view to get information on the computation of the Jacobian from the coloring. Use  -mat_coloring_view to get information on the coloring used. (see MatFDColoringSetFromOptions)</div><div class=""><br class=""></div><div class="">  If you are using SNES/TS but not using a DM you need to compute the nonzero structure of the matrix yourself into J and call SNESSetJacobian(snes,J,J,SNESComputeJacobianDefaultColor,matfdcoloring); you need to create the matfdcoloring object with MatFDColoringCreate() using an iscoloring you obtained with MatColoringCreate() etc.  The same command line arguments as above allow you to control the coloring algorithm used and to view them etc.</div><div class=""><br class=""></div><div class="">  Barry</div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""></div><div class=""><br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On May 10, 2022, at 11:40 AM, Jorti, Zakariae via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov" class="">petsc-users@mcs.anl.gov</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div id="divtagdefaultwrapper" dir="ltr" class="" style="font-style: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; font-size: 12pt; font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;"><div class="" style="margin-top: 0px; margin-bottom: 0px;">Hi,<span class="Apple-converted-space"> </span><br class=""><br class="">I am solving a non-linear problem and using a finite difference approximation with coloring to compute the Jacobian matrix.<br class=""><br class=""></div><div class="">There are several coloring algorithms available in PETSc as indicated here:<br class=""><a href="https://urldefense.com/v3/__https://petsc.org/release/docs/manualpages/Mat/MatColoring.html__;!!HXCxUKc!1czn7o25s7aYCp0mPqVxWzr-S-Fc0qBskSUMuqiRAf5CiUQoJAYOwuyAak2yJhKKkULePn_T7-fyd0U$" class="">https://petsc.org/release/docs/manualpages/Mat/MatColoring.html</a><br class=""><br class="">And I was wondering how to switch from one to another in the Jacobian setup routine and also how to check which coloring algorithm I am currently using.<br class=""></div><br class=""><div class="" style="margin-top: 0px; margin-bottom: 0px;">Thank you.</div><div class="" style="margin-top: 0px; margin-bottom: 0px;"><br class=""></div><div class="" style="margin-top: 0px; margin-bottom: 0px;">Zakariae Jorti</div></div></div></blockquote></div></div></div></div></blockquote></div></div></div></div></div></div></blockquote></div><br class=""></div></div></body></html>