<div dir="ltr"><div dir="ltr"><div><font color="#c27ba0">In the typical FD implementation, you only set local rows, but with FE and sometimes FV, you also create values that need to be communicated and summed on other processors.<br></font></div>Makes sense.<br></div><div dir="ltr"><div><br></div><div>Anyway, in this case, I am certain that I am giving the solver bitwise identical matrices from each process. I am not using a preconditioner, using BCGS, with Petsc version 3.13.3.</div><div><br></div><div>So then, how can I make sure that I am "using an MPI that follows the suggestion for implementers about determinism"? I am using MPICH version 3.3a2, didn't do anything special when installing it. Does that sound OK? If so, I could upgrade to the latest Petsc, try again, and if confirmed that it persists, could provide a reproduction scenario.<br><div><br><div><div><br></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Apr 1, 2023 at 9:53 PM Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Mark McClure <<a href="mailto:mark@resfrac.com" target="_blank">mark@resfrac.com</a>> writes:<br>
<br>
> Thank you, I will try BCGSL.<br>
><br>
> And good to know that this is worth pursuing, and that it is possible. Step<br>
> 1, I guess I should upgrade to the latest release on Petsc.<br>
><br>
> How can I make sure that I am "using an MPI that follows the suggestion for<br>
> implementers about determinism"? I am using MPICH version 3.3a2.<br>
><br>
> I am pretty sure that I'm assembling the same matrix every time, but I'm<br>
> not sure how it would depend on 'how you do the communication'. Each<br>
> process is doing a series of MatSetValues with INSERT_VALUES,<br>
> assembling the matrix by rows. My understanding of this process is that<br>
> it'd be deterministic.<br>
<br>
In the typical FD implementation, you only set local rows, but with FE and sometimes FV, you also create values that need to be communicated and summed on other processors.<br>
</blockquote></div></div>