<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:DengXian;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Aptos;
        panose-1:2 11 6 4 2 2 2 2 2 4;}
@font-face
        {font-family:"\@DengXian";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:10.0pt;
        font-family:"Aptos",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Aptos",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;
        mso-ligatures:none;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt">Thank you, both Hong and Matt.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt">-Ling<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt"><o:p> </o:p></span></p>
<div id="mail-editor-reference-message-container">
<div>
<div>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">Zhang, Hong <hongzhang@anl.gov><br>
<b>Date: </b>Friday, January 17, 2025 at 12:34</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;color:black">PM<br>
<b>To: </b>Matthew Knepley <knepley@gmail.com>, Zou, Ling <lzou@anl.gov><br>
<b>Cc: </b>petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov><br>
<b>Subject: </b>Re: [petsc-users] Auto sparsity detection?<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">We have an example in src/ts/tutorials/autodiff on using AD for reaction-diffusion equations. It does exactly what Matt said - differentiating the stencil kernel to get the Jacobian kernel. More
 information is available in this report: <a href="https://urldefense.us/v3/__https://arxiv.org/abs/1909.02836__;!!G_uCfscf7eWS!YAjJAY_-Po-R_8afPXjkPNIMrtGRpuOyrIvGq4kmS_GIk9E44GkBWYmWA38JPV_6BtwsHl2enTCgdAxzrgQ$">
https://arxiv.org/abs/1909.02836</a><o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black">Hong (Mr.)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt;color:black"><o:p> </o:p></span></p>
</div>
<div class="MsoNormal" align="center" style="text-align:center"><span style="font-size:12.0pt">
<hr size="2" width="98%" align="center">
</span></div>
<div id="divRplyFwdMsg">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:black"> petsc-users <petsc-users-bounces@mcs.anl.gov> on behalf of Matthew
 Knepley <knepley@gmail.com><br>
<b>Sent:</b> Friday, January 17, 2025 6:22 AM<br>
<b>To:</b> Zou, Ling <lzou@anl.gov><br>
<b>Cc:</b> petsc-users@mcs.anl.gov <petsc-users@mcs.anl.gov><br>
<b>Subject:</b> Re: [petsc-users] Auto sparsity detection?</span><span style="font-size:12.0pt">
<o:p></o:p></span></p>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"> <o:p></o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">On Thu, Jan 16, 2025 at 10:43</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif"> </span><span style="font-size:12.0pt">PM Zou, Ling <<a href="mailto:lzou@anl.gov">lzou@anl.gov</a>> wrote:<o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p><span style="font-size:11.0pt">Thank you, Matt.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">Seems that at least the matrix coloring part I am following the ‘best practice’.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</blockquote>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">Yes, for FD approximations of the Jacobian.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">If you have a stencil operation (like FEM or FVM), then AD can be very useful because you<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">only have to differentiate the kernel to get the Jacobian kernel.<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">  Thanks,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">     Matt<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"> <o:p></o:p></span></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<p><span style="font-size:11.0pt"> </span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">-Ling</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt"> </span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<div id="x_m_6510721863087075056mail-editor-reference-message-container">
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p><b><span style="font-size:12.0pt;color:black">From: </span></b><span style="font-size:12.0pt;color:black">Matthew Knepley <<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>><br>
<b>Date: </b>Thursday, January 16, 2025 at 9:01</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black"> </span><span style="font-size:12.0pt;color:black">PM<br>
<b>To: </b>Zou, Ling <<a href="mailto:lzou@anl.gov">lzou@anl.gov</a>><br>
<b>Cc: </b><a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a> <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>><br>
<b>Subject: </b>Re: [petsc-users] Auto sparsity detection?</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<p><span style="font-size:1.0pt;color:white">On Thu, Jan 16, 2025 at 9:</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">50 PM Zou, Ling via petsc-users <petsc-users@</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">mcs.</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">anl.</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">gov>
 wrote: Hi all, Does PETSc has some automatic matrix sparsity detection algorithm available? Something like: https:</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">//docs.</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">sciml.</span><span style="font-size:1.0pt;font-family:"Arial",sans-serif;color:white"> </span><span style="font-size:1.0pt;color:white">ai/NonlinearSolve/stable/basics/sparsity_detection/</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:1.0pt;color:white">ZjQcmQRYFpfptBannerStart</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<div style="border:none;border-top:none #90A4AE 1.0pt;padding:12.0pt 0in 0in 0in;border-width:initial;border-right-color:initial;border-bottom-color:initial;border-left-color:initial;border-radius:4px;min-width:200px;border-top-style:initial" id="x_m_6510721863087075056pfptBannert0a6dmn">
<div id="x_m_6510721863087075056pfptBannert0a6dmn">
<div id="x_m_6510721863087075056pfptBannert0a6dmn">
<p style="line-height:13.5pt;background:#D0D8DC"><b><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">This Message Is From an External Sender</span></b><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<div id="x_m_6510721863087075056pfptBannert0a6dmn">
<p style="line-height:13.5pt;background:#D0D8DC"><span style="font-size:12.0pt;font-family:"Arial",sans-serif;color:black">This message came from outside your organization.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
</div>
<p style="background:#D0D8DC"><span style="font-size:12.0pt;color:black"> </span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</div>
<p><span style="font-size:1.0pt;color:white">ZjQcmQRYFpfptBannerEnd</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:12.0pt">On Thu, Jan 16, 2025 at 9:50</span><span style="font-size:12.0pt;font-family:"Arial",sans-serif"> </span><span style="font-size:12.0pt">PM Zou, Ling via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</a>>
 wrote:<o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p><span style="font-size:11.0pt">Hi all,</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt"> </span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">Does PETSc has some automatic matrix sparsity detection algorithm available?</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">Something like: <a href="https://urldefense.us/v3/__https:/docs.sciml.ai/NonlinearSolve/stable/basics/sparsity_detection/__;!!G_uCfscf7eWS!ccEx6zmuNrVADqtN50hO2N0k4Qs-A70nztAjMLu-JElnjhK5w84BpYC8CAINd6KihSxaS2rx_LgpqUVM49U$">
https://docs.sciml.ai/NonlinearSolve/stable/basics/sparsity_detection/</a></span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</blockquote>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt">Sparsity detection would rely on introspection of the user code for ComputeFunction(), which is not<o:p></o:p></span></p>
<p><span style="font-size:12.0pt">possible in C (unless you were to code up your evaluation in some symbolic framework).<o:p></o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p><span style="font-size:11.0pt">The background is that I use finite differencing plus matrix coloring to (efficiently) get the Jacobian.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">For the matrix coloring part, I color the matrix based on mesh connectivity and variable dependencies, which is not bad, but just try to be lazy to even eliminating this part.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</blockquote>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt">This is how the automatic frameworks also work. This is how we compute the sparsity pattern for PetscFE and PetscFV.<o:p></o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p><span style="font-size:11.0pt">A related but different question, how much does PETSc support automatic differentiation?</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">I see some old paper:</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt"><a href="https://ftp.mcs.anl.gov/pub/tech_reports/reports/P922.pdf">https://ftp.mcs.anl.gov/pub/tech_reports/reports/P922.pdf</a></span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">and discussion in the roadmap:</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt"><a href="https://urldefense.us/v3/__https:/petsc.org/release/community/roadmap/__;!!G_uCfscf7eWS!ccEx6zmuNrVADqtN50hO2N0k4Qs-A70nztAjMLu-JElnjhK5w84BpYC8CAINd6KihSxaS2rx_Lgpw6v6hKE$">https://petsc.org/release/community/roadmap/</a></span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">I am thinking that if AD works so I don’t even need to do finite differencing Jacobian, or have it as another option.</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</blockquote>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt">Other people understand that better than I do.<o:p></o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt">  Thanks,<o:p></o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt">     Matt<o:p></o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<p><span style="font-size:11.0pt">Best,</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt"> </span><span style="font-size:12.0pt"><o:p></o:p></span></p>
<p><span style="font-size:11.0pt">-Ling</span><span style="font-size:12.0pt"><o:p></o:p></span></p>
</blockquote>
<p><span style="font-size:12.0pt"><o:p> </o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt">--<o:p></o:p></span></p>
<p><span style="font-size:12.0pt">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<o:p></o:p></span></p>
<p><span style="font-size:12.0pt"> <o:p></o:p></span></p>
<p><span style="font-size:12.0pt"><a href="https://urldefense.us/v3/__http:/www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!d-7O5V0pNvm_fDSKhNk_ilXP0jG-_MBnectBJ0BfVPOSzARXvYWAahGyRNf1cKCh9dJKEiFt2caV$">https://www.cse.buffalo.edu/~knepley/</a><o:p></o:p></span></p>
</div>
</blockquote>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">--<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:12.0pt"><a href="https://urldefense.us/v3/__http:/www.cse.buffalo.edu/*knepley/__;fg!!G_uCfscf7eWS!cWyHnKq-Gzasz3ooIUAgTl0RTGrzg0fW8jwVOi0AHE_Ydv4dnayXiG06EPQYvp6guWhXYTv8DMnOu7xNNzJR$">https://www.cse.buffalo.edu/~knepley/</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</body>
</html>