<div dir="ltr"><div dir="ltr"><div dir="ltr">It is definitely valuable to have partitioners produce machine independent results.  We right now have to generate different outputs on different machines in the testing system. <div><br></div><div>So far we found that just a few partitioners (literally Metis, ParMETIS and PTScotch ) are interesting. Is it possible to have these packages to take a user-provided random generator ?</div><div><br></div><div>BTW, a while ago, Jed recommended to take a look at KaHIP. I actually invested a little bit on that a few months ago, and I found that KaHIP does not even provide a parallel partitioning interface and then I gave up to spend more time on it. We are definitely interested in the parallel partitioning since it can potentially partition a large mesh.</div><div><br></div><div><br></div><div>Thanks,</div><div><br></div><div>Fande Kong</div><div><br></div><div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Sun, Jan 6, 2019 at 9:49 PM Jed Brown via petsc-dev <<a href="mailto:petsc-dev@mcs.anl.gov" target="_blank">petsc-dev@mcs.anl.gov</a>> wrote:<br></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">METIS will use its internal implementation if USE_GKRAND is defined.<br>
Maybe other partitioners have similar functionality.<br>
<br>
I'm not wild about the complexity of providing our own definitions.<br>
Note that libmetis.so does not link to libpetsc.so so it would be<br>
nontrivial to make that work with both shared and static libraries.<br>
<br>
"Smith, Barry F. via petsc-dev" <<a href="mailto:petsc-dev@mcs.anl.gov" target="_blank">petsc-dev@mcs.anl.gov</a>> writes:<br>
<br>
>    It really irks me that we can't use the various partitioners in our nightly tests because they use rand() and produce different results on <br>
> different machines.<br>
><br>
>    Here is what I propose<br>
><br>
> 1) add ./configure flag --with-petsc-rand<br>
><br>
> 2) if the flag is set then provide our own rand() and srand() (by crudely wrapping PetscRandom()) in pinit.c which is compiled if the flag is set<br>
><br>
> 3) add the --with-petsc-rand to all the nightlybuilds<br>
><br>
>   Problems with this plan?<br>
><br>
>     Barry<br>
</blockquote></div>