<div dir="ltr"><div dir="ltr"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Sep 15, 2019 at 5:19 PM Danyang Su via petsc-users <<a href="mailto:petsc-users@mcs.anl.gov">petsc-users@mcs.anl.gov</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">
<div bgcolor="#FFFFFF">
<p>Dear All,</p>
<p>I have a question regarding strange partition problem in PETSc
3.11 version. The problem does not exist on my local workstation.
However, on a cluster with different PETSc versions, the partition
seems quite different, as you can find in the figure below, which
is tested with 160 processors. The color means the processor owns
that subdomain. In this layered prism mesh, there are 40 layers
from bottom to top and each layer has around 20k nodes. The
natural order of nodes is also layered from bottom to top. <br>
</p>
<p>The left partition (PETSc 3.10 and earlier) looks good with
minimum number of ghost nodes while the right one (PETSc 3.11)
looks weired with huge number of ghost nodes. Looks like the right
one uses partition layer by layer. This problem exists on a a
cluster but not on my local workstation for the same PETSc version
(with different compiler and MPI). Other than the difference in
partition and efficiency, the simulation results are the same. <br>
</p>
<br>
<p><img src="cid:16d36fbb723df16a97e1" alt="partition
difference" width="1054" height="633"></p>
<p>Below is PETSc configuration on three machine:</p>
<p>Local workstation (works fine): ./configure --with-cc=gcc
--with-cxx=g++ --with-fc=gfortran --download-mpich
--download-scalapack --download-parmetis --download-metis
--download-ptscotch --download-fblaslapack --download-hypre
--download-superlu_dist --download-hdf5=yes --download-ctetgen
--with-debugging=0 COPTFLAGS=-O3 CXXOPTFLAGS=-O3 FOPTFLAGS=-O3
--with-cxx-dialect=C++11</p>
<p>Cluster with PETSc 3.9.3 (works fine):
--prefix=/scinet/niagara/software/2018a/opt/intel-2018.2-intelmpi-2018.2/petsc/3.9.3
CC=mpicc CXX=mpicxx F77=mpif77 F90=mpif90 FC=mpifc
COPTFLAGS="-march=native -O2" CXXOPTFLAGS="-march=native -O2"
FOPTFLAGS="-march=native -O2" --download-chaco=1
--download-hypre=1 --download-metis=1 --download-ml=1
--download-mumps=1 --download-parmetis=1 --download-plapack=1
--download-prometheus=1 --download-ptscotch=1 --download-scotch=1
--download-sprng=1 --download-superlu=1 --download-superlu_dist=1
--download-triangle=1 --with-avx512-kernels=1
--with-blaslapack-dir=/scinet/niagara/intel/2018.2/compilers_and_libraries_2018.2.199/linux/mkl
--with-debugging=0 --with-hdf5=1
--with-mkl_pardiso-dir=/scinet/niagara/intel/2018.2/compilers_and_libraries_2018.2.199/linux/mkl
--with-scalapack=1
--with-scalapack-lib="[/scinet/niagara/intel/2018.2/compilers_and_libraries_2018.2.199/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so,/scinet/niagara/intel/2018.2/compilers_and_libraries_2018.2.199/linux/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so]"
--with-x=0</p>
<p>Cluster with PETSc 3.11.3 (looks weired):
--prefix=/scinet/niagara/software/2019b/opt/intel-2019u4-intelmpi-2019u4/petsc/3.11.3
CC=mpicc CXX=mpicxx F77=mpif77 F90=mpif90 FC=mpifc
COPTFLAGS="-march=native -O2" CXXOPTFLAGS="-march=native -O2"
FOPTFLAGS="-march=native -O2" --download-chaco=1 --download-hdf5=1
--download-hypre=1 --download-metis=1 --download-ml=1
--download-mumps=1 --download-parmetis=1 --download-plapack=1
--download-prometheus=1 --download-ptscotch=1 --download-scotch=1
--download-sprng=1 --download-superlu=1 --download-superlu_dist=1
--download-triangle=1 --with-avx512-kernels=1
--with-blaslapack-dir=/scinet/intel/2019u4/compilers_and_libraries_2019.4.243/linux/mkl
--with-cxx-dialect=C++11 --with-debugging=0
--with-mkl_pardiso-dir=/scinet/intel/2019u4/compilers_and_libraries_2019.4.243/linux/mkl
--with-scalapack=1
--with-scalapack-lib="[/scinet/intel/2019u4/compilers_and_libraries_2019.4.243/linux/mkl/lib/intel64/libmkl_scalapack_lp64.so,/scinet/intel/2019u4/compilers_and_libraries_2019.4.243/linux/mkl/lib/intel64/libmkl_blacs_intelmpi_lp64.so]"
--with-x=0</p>
<p>And the partition is used by default dmplex distribution.</p>
<p> !c distribute mesh over processes<br>
call
DMPlexDistribute(dmda_flow%da,stencil_width, &<br>
PETSC_NULL_SF, &<br>
PETSC_NULL_OBJECT, &<br>
distributedMesh,ierr)<br>
CHKERRQ(ierr)</p>
<p>Any idea on this strange problem? </p>
<p></p></div></blockquote><div>I just looked at the code. Your mesh should be partitioned by k-way partitioning using Metis since its on 1 proc for partitioning. This code</div><div>is the same for 3.9 and 3.11, and you get the same result on your machine. I cannot understand what might be happening on your cluster</div><div>(MPI plays no role). Is it possible that you changed the adjacency specification in that version?</div><div><br></div><div> Thanks,</div><div><br></div><div> Matt </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div bgcolor="#FFFFFF"><p>Thanks,</p>
<p>Danyang<br>
</p>
</div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div>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</div><div><br></div><div><a href="http://www.cse.buffalo.edu/~knepley/" target="_blank">https://www.cse.buffalo.edu/~knepley/</a><br></div></div></div></div></div></div></div></div>