<div dir="ltr"><div>Hello, <br>Thanks a lot for your explanations. <br>We have a "home-made" install of MUMPS, built with metis and scotch (and - at the moment- neither with parmetis nor with ptscotch). </div><div><br></div><div>When I use --with-mumps-lib/--with-mumps-include, I am forced to specify scotch and metis libs inside mumps libs (otherwise the link of the check program dmumps_c fails). And this occurs even if I have already defined the location of scotch libraries through --with-scotch-lib/--with-scotch-include and   --with-metis-lib/--with-metis-include options. <br></div><div>Defining PETSc interfaces to scotch and metis packages is (at least for me)  not sufficient : I have to specify these libraries locations in --with-mumps-lib. (as shown in the configure.log).<br></div><div><br>This is not really a problem and doing so fixes the configure step. <br><br></div><div>I agree that duplicating scotch to define ptscotch is weird. I did so because we do not have a parallel built of scotch.<br></div><div>From PETSc point of view, MUMPS requires either Parmetis or PTScotch : so I provided  ptscotch through --download-ptscotch option.<br></div><div>I do not intend to use it, that is only for configuring purpose !<br><br></div><div>Natacha <br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Apr 18, 2016 at 5:52 PM, Satish Balay <span dir="ltr"><<a href="mailto:balay@mcs.anl.gov" target="_blank">balay@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Same with parmetis.<br>
<span class=""><br>
On Mon, 18 Apr 2016, Natacha BEREUX wrote:<br>
<br>
> Hello Satish,<br>
> thank you very much for yor advices. They were very helpful !<br>
><br>
> The configure step finally succeeds if I use the following configure line:<br>
> ./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90 --with-mpi=1<br>
> --with-debugging=0 --PETSC_ARCH=linux-metis-mumps<br>
> --with-scalapack-lib="-lscalapack-openmpi -lblacs-openmpi<br>
> -lblacsF77init-openmpi -lblacsCinit-openmpi"<br>
> --with-metis-lib="-L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Metis_aster-510_aster/lib<br>
> -lmetis -lGKlib"<br>
> --with-metis-include=/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Metis_aster-510_aster/include<br>
> --with-mumps-lib="-L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Mumps-501_consortium_aster5/MPI/lib<br>
> -lzmumps -ldmumps -lmumps_common -lpord<br>
> -L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Scotch_aster-604_aster1/lib<br>
> -lesmumps -lscotch -lscotcherr -lscotcherrexit<br>
> -L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Metis_aster-510_aster/lib<br>
> -lmetis"<br>
> --with-mumps-include=/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Mumps-501_consortium_aster5/MPI/include<br>
> --with-blas-lapack-lib="-llapack -lopenblas"<br>
> --download-ptscotch=/home/H03755/Librairies/scotch_6.0.3.tar.gz LIBS=-lgomp<br>
><br>
> I have to specify scotch shared libraries (-lscotch -lscotcherr<br>
> -lscotcherrexit ) and metis shared library in --with-mumps-lib option<br>
> otherwise the test (on dmump) in configure fails.<br>
> Is it OK to do so ?<br>
<br>
</span>Hm - its best to avoid duplication of libraries.<br>
<br>
i.e specifying scotch via mumps-libs and also via --download-ptscotch will cause problems.<br>
<br>
Why not specify scotch with --with-ptscotch-include,--with-ptscotch-lib options?<br>
<span class=""><br>
><br>
> I also tried to use  the following shorter line<br>
><br>
>  ./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90<br>
> --with-mpi=1 --with-debugging=0 --PETSC_ARCH=linux-mumps-<br>
> --with-scalapack-lib="-lscalapack-openmpi -lblacs-openmpi<br>
> -lblacsF77init-openmpi -lblacsCinit-openmpi"<br>
> --with-mumps-lib="-L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Mumps-501_consortium_aster5/MPI/lib<br>
> -lzmumps -ldmumps -lmumps_common -lpord<br>
> -L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Scotch_aster-604_aster1/lib<br>
> -lesmumps -lscotch -lscotcherr -lscotcherrexit<br>
> -L/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Metis_aster-510_aster/lib<br>
> -lmetis"<br>
> --with-mumps-include=/home/H03755/dev/codeaster-prerequisites/v13/prerequisites/Mumps-501_consortium_aster5/MPI/include<br>
> --with-blas-lapack-lib="-llapack -lopenblas"<br>
> --download-ptscotch=/home/H03755/Librairies/scotch_6.0.3.tar.gz LIBS=-lgomp<br>
><br>
> I do not use --with-metis-lib/--with-metis-include.<br>
> I wonder if this is authorized : the libraries are given with the<br>
> --with-mumps-lib, but the include are not defined.<br>
<br>
</span>This is fine. [except for the dupliation of ptscotch]<br>
<span class=""><br>
><br>
> What is the good practice ?<br>
<br>
</span>Either is work - but its best to specify each package with its own<br>
options listed by configure. The issues usually are:<br>
<br>
- Is this package primarily a depencency of an externalpakage or if there is a petsc interface to it?<br>
<br>
For ex: PETSc has interface to mumps, parmetis - but not scalapack. So<br>
if you club parmetis into mumps-libs then petsc interface to parmetis<br>
would not be enabled. If you are not using this feature - it doesn't<br>
matter if its not enabled.<br>
<br>
- does this externalpakage also require the includes in the public interface?<br>
<br>
If dmumps_c.h requires metis.h [when mumps is built with metis]<br>
- then you might have to specify metis include also with<br>
--with-mumps-include. Otherwise - it doesn't matter.<br>
<br>
- are there bugs in petsc configure that can trigger wrong error checks?<br>
<br>
Because mumps depends on scalapack, and optionally on<br>
metis,parmetis,ptscotch [i.e only one of them is required - but not<br>
all] - there is an error-check in configure to make sure atleast one<br>
of them is specified for --download-mumps. Perhaps this check should<br>
not trigger error for user built mumps.<br>
<br>
Did you build MUMPS with both metis, ptscotch? [and not parmetis?]<br>
<span class="HOEnZb"><font color="#888888"><br>
Satish<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> Best regards<br>
> Natacha<br>
><br>
><br>
><br>
><br>
><br>
> On Thu, Apr 14, 2016 at 6:07 PM, Satish Balay <<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>> wrote:<br>
><br>
> > you'll have to roll-in the --with-blacs-lib option into<br>
> > --with-scalapack-lib option<br>
> ><br>
> > Satish<br>
> ><br>
> > On Thu, 14 Apr 2016, Natacha BEREUX wrote:<br>
> ><br>
> > > Sorry, do not take into account my last email.<br>
> > > I made some progress and I am now able to configure  PETSc with a<br>
> > > pre-installed version of metis.<br>
> > ><br>
> > >  Problems come when I try to configure PETSc with MUMPS<br>
> > ><br>
> > > My command line is<br>
> > >  ./configure --with-cc=mpicc --with-cxx=mpicxx --with-fc=mpif90<br>
> > > --with-ssl=0 --with-mpi=1 --with-debugging=1<br>
> > > --PETSC_ARCH=linux-metis-mumps<br>
> > > --with-scalapack-lib=/usr/lib/libscalapack-openmpi.so<br>
> > ><br>
> > --with-blacs-lib=[/usr/lib/libblacs-openmpi.so,/usr/lib/libblacsCinit-openmpi.so,/usr/lib/libblacsF77init-openmpi.so]<br>
> > ><br>
> > --with-metis-lib=[${METIS_PRE}/lib/libmetis.a,${METIS_PRE}/lib/libGKlib.a]<br>
> > > --with-metis-include=$METIS_PRE/include<br>
> > ><br>
> > --with-mumps-lib=[$MUMPS_PRE/lib/libdmumps.a,$MUMPS_PRE/lib/libmumps_common.a,$MUMPS_PRE/lib/libpord.a]<br>
> > > --with-mumps-include=$MUMPS_PRE/include<br>
> > ><br>
> > > where METIS_PRE and MUMPS_PRE are the path to the local installs of metis<br>
> > > and mumps)<br>
> > ><br>
> > > I get (at least) the following error<br>
> > > /libdmumps.a(dend_driver.o): undefined reference to symbol<br>
> > 'blacs_gridexit_'<br>
> > > /usr/lib/libblacs-openmpi.so.1: error adding symbols: DSO missing from<br>
> > > command line<br>
> > > collect2: error: ld returned 1 exit status<br>
> > ><br>
> > ><br>
> > > Would you have any idea of its meaning ?<br>
> > ><br>
> > > The configure.log is attached<br>
> > > Thanks a lot if you can help me  !<br>
> > > Natacha<br>
> > ><br>
> > > On Thu, Apr 14, 2016 at 5:19 PM, Natacha BEREUX <<br>
> > <a href="mailto:natacha.bereux@gmail.com">natacha.bereux@gmail.com</a>><br>
> > > wrote:<br>
> > ><br>
> > > > Hi Satish<br>
> > > > thanks a lot for the answer. Unfortunately, it does not work yet.<br>
> > > > More precisely :<br>
> > > >  --download-mumps works fine (and every --download-package option works<br>
> > > > perfectly). I am then able to compile a PETSc library.<br>
> > > > --with-package-lib=/usr/lib/libscalapack-openmpi.so or more generally<br>
> > > > --with-package-lib=libXXXX.so also works<br>
> > > ><br>
> > > > But I would like to use  static librairies, preinstalled on my computer<br>
> > > > ... and  this fails.<br>
> > > ><br>
> > > > For the moment I gave up compiling with MUMPS, and I am  instead<br>
> > trying to<br>
> > > > compile with Metis 5.<br>
> > > > I have a preinstalled version in a some directory lets say metis_dir<br>
> > > > I try<br>
> > > > -with-metis-lib=[metis_dir/lib/libmetis.a, metis_dir/lib/libGKlib.a]<br>
> > > > --with-metis-include=metis_dir/include<br>
> > > > this fails  (see the attached config.log)<br>
> > > > -with-metis-dir=metis_dir also fails<br>
> > > > Is there a problem with static librairies ?<br>
> > > ><br>
> > > > Natacha<br>
> > > ><br>
> > > ><br>
> > > > On Tue, Apr 12, 2016 at 6:19 PM, Satish Balay <<a href="mailto:balay@mcs.anl.gov">balay@mcs.anl.gov</a>><br>
> > wrote:<br>
> > > ><br>
> > > >> On Tue, 12 Apr 2016, Natacha BEREUX wrote:<br>
> > > >><br>
> > > >> > Hello,<br>
> > > >> > I am trying to compile Petsc  (3.6.3) with external packages (MUMPS<br>
> > and<br>
> > > >> its<br>
> > > >> > prerequisites).<br>
> > > >> > More precisely I would like PETSc to use a pre-installed version of<br>
> > > >> MUMPS.<br>
> > > >> ><br>
> > > >> > Petsc downloads and compiles the prerequisites (parmetis, scalapack<br>
> > > >> etc) :<br>
> > > >> > this works fine.<br>
> > > >><br>
> > > >> What metis/parmetis/slcalapack is this MUMPS installed with?<br>
> > > >><br>
> > > >> What version of MUMPS did you install?<br>
> > > >><br>
> > > >> Why could you not use --download-mumps?<br>
> > > >><br>
> > > >> Using a different metis/parmetis/slcalapack to install MUMPS - and<br>
> > > >> then specifying --download-metis --download-parmetis<br>
> > > >> --download-scalapack [i.e different versions/builds of the same<br>
> > > >> libraries] can result in conflcits.<br>
> > > >><br>
> > > >> ><br>
> > > >> > I define MUMPS location by --with-mumps-dir=top-directory of MUMPS<br>
> > > >> install,<br>
> > > >> > but the<br>
> > > >> > configure step  fails with the followiing message:<br>
> > > >> ><br>
> > > >> > UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log for<br>
> > > >> details):<br>
> > > >> > --with-mumps-dir=/home/H03755/Librairies/Mumps_MPI did not work<br>
> > > >> ><br>
> > > >> > I do not understand what is wrong.<br>
> > > >> > I have attached the configure.log file.<br>
> > > >> ><br>
> > > >> > Any hint would be greatly appreciated !<br>
> > > >><br>
> > > >> >>>><br>
> > > >> Executing: mpicc -show<br>
> > > >> stdout: gcc -I/usr/lib/openmpi/include<br>
> > -I/usr/lib/openmpi/include/openmpi<br>
> > > >> -pthread -L/usr//lib -L/usr/lib/openmpi/lib -lmpi -ldl -lhwloc<br>
> > > >>                   Defined make macro "MPICC_SHOW" to "gcc<br>
> > > >> -I/usr/lib/openmpi/include -I/usr/lib/openmpi/include/openmpi -pthread<br>
> > > >> -L/usr//lib -L/usr/lib/openmpi/lib -lmpi -ldl -lhwloc"<br>
> > > >> <<<<<br>
> > > >> Ok - so you are using system openmpi with gcc.<br>
> > > >><br>
> > > >><br>
> > > >> >>>><br>
> > > >> Executing: mpicc  -o /tmp/petsc-0u_4WI/config.libraries/conftest<br>
> > -fPIC<br>
> > > >> -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O<br>
> > > >> /tmp/petsc-0u_4WI/config.libraries/conftest.o<br>
> > > >> -Wl,-rpath,/home/H03755/Librairies/Mumps_MPI/lib<br>
> > > >> -L/home/H03755/Librairies/Mumps_MPI/lib -lcmumps -ldmumps -lsmumps<br>
> > -lzmumps<br>
> > > >> -lmumps_common -lpord<br>
> > > >><br>
> > -Wl,-rpath,/home/H03755/Librairies/petsc-3.6.3/linux-debug-mumps-ext/lib<br>
> > > >> -L/home/H03755/Librairies/petsc-3.6.3/linux-debug-mumps-ext/lib<br>
> > -lscalapack<br>
> > > >> -llapack -lblas -Wl,-rpath,/usr/lib/openmpi/lib -L/usr/lib/openmpi/lib<br>
> > > >> -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > -Wl,-rpath,/usr/lib/x86_64-linux-gnu<br>
> > > >> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu<br>
> > > >> -L/lib/x86_64-linux-gnu -lmpi_f90 -lmpi_f77 -lgfortran -lm<br>
> > > >> -Wl,-rpath,/usr/lib/openmpi/lib<br>
> > > >> -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > > >> -Wl,-rpath,/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu<br>
> > > >> -lgfortran -lm -lquadmath -lm -llapack -lblas<br>
> > > >> -Wl,-rpath,/usr/lib/openmpi/lib -L/usr/lib/openmpi/lib<br>
> > > >> -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > -Wl,-rpath,/usr/lib/x86_64-linux-gnu<br>
> > > >> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu<br>
> > > >> -L/lib/x86_64-linux-gnu -lmpi_f90 -lmpi_f77 -lgfortran -lm<br>
> > > >> -Wl,-rpath,/usr/lib/openmpi/lib<br>
> > > >> -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > > >> -Wl,-rpath,/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu<br>
> > > >> -lgfortran -lm -lquadmath -lm<br>
> > > >><br>
> > -Wl,-rpath,/home/H03755/Librairies/petsc-3.6.3/linux-debug-mumps-ext/lib<br>
> > > >> -L/home/H03755/Librairies/petsc-3.6.3/linux-debug-mumps-ext/lib<br>
> > -lparmetis<br>
> > > >><br>
> > -Wl,-rpath,/home/H03755/Librairies/petsc-3.6.3/linux-debug-mumps-ext/lib<br>
> > > >> -L/home/H03755/Librairies/petsc-3.6.3/linux-debug-mumps-ext/lib<br>
> > -lmetis -lm<br>
> > > >> -lm -Wl,-rpath,/usr/lib/openmpi/lib -L/usr/lib/openmpi/lib<br>
> > > >> -Wl,-rpath,/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > > >> -L/usr/lib/gcc/x86_64-linux-gnu/4.9<br>
> > -Wl,-rpath,/usr/lib/x86_64-linux-gnu<br>
> > > >> -L/usr/lib/x86_64-linux-gnu -Wl,-rpath,/lib/x86_64-linux-gnu<br>
> > > >> -L/lib/x86_64-linux-gnu -Wl,-rpath,/usr/lib/x86_64-linux-gnu<br>
> > > >> -L/usr/lib/x86_64-linux-gnu -ldl -lmpi -lhwloc -lgcc_s -lpthread -ldl<br>
> > > >> Possible ERROR while running linker: exit code 256<br>
> > > >> stderr:<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dlr_stats.o): In<br>
> > > >> function `__dmumps_lr_stats_MOD_update_flop_stats_lrb_product':<br>
> > > >> dlr_stats.F:(.text+0x3079): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x30fa): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> dlr_stats.F:(.text+0x310e): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x318f): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dlr_stats.o): In<br>
> > > >> function `__dmumps_lr_stats_MOD_update_flop_stats_trsm':<br>
> > > >> dlr_stats.F:(.text+0x33a9): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x33f9): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> dlr_stats.F:(.text+0x340a): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x345a): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dlr_stats.o): In<br>
> > > >> function `__dmumps_lr_stats_MOD_update_flop_stats_panel':<br>
> > > >> dlr_stats.F:(.text+0x3576): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x35a7): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> dlr_stats.F:(.text+0x35b8): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x35e9): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dlr_stats.o): In<br>
> > > >> function `__dmumps_lr_stats_MOD_update_flop_stats_demote':<br>
> > > >> dlr_stats.F:(.text+0x36ac): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x36ce): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> dlr_stats.F:(.text+0x36df): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x3701): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dlr_stats.o): In<br>
> > > >> function `__dmumps_lr_stats_MOD_update_flop_stats_cb_demote':<br>
> > > >> dlr_stats.F:(.text+0x37c1): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x37e3): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dlr_stats.o): In<br>
> > > >> function `__dmumps_lr_stats_MOD_update_flop_stats_cb_promote':<br>
> > > >> dlr_stats.F:(.text+0x3839): undefined reference to<br>
> > > >> `GOMP_critical_name_start'<br>
> > > >> dlr_stats.F:(.text+0x3856): undefined reference to<br>
> > > >> `GOMP_critical_name_end'<br>
> > > >> /home/H03755/Librairies/Mumps_MPI/lib/libdmumps.a(dana_lr.o): In<br>
> > function<br>
> > > >> `__dmumps_ana_lr_MOD_mumps_scotch_kway':<br>
> > > >> dana_lr.F:(.text+0x115): undefined reference to `scotchfgraphbuild_'<br>
> > > >> dana_lr.F:(.text+0x131): undefined reference to `scotchfstratinit_'<br>
> > > >> dana_lr.F:(.text+0x151): undefined reference to `scotchfgraphpart_'<br>
> > > >> dana_lr.F:(.text+0x15e): undefined reference to `scotchfstratexit_'<br>
> > > >> dana_lr.F:(.text+0x16b): undefined reference to `scotchfgraphexit_'<br>
> > > >> <snip><br>
> > > >><br>
> > > >><br>
> > > >> Looks like this MUMPS is built with ptscotch and openmp.<br>
> > > >><br>
> > > >> You can specify -lgomp for openmp. This can be done with the configure<br>
> > > >> option<br>
> > > >> LIBS=-lgomp<br>
> > > >><br>
> > > >> Wrt and PTSCOTCH stuff depending upon how its installed we'll have to<br>
> > > >> figureout<br>
> > > >> how to specify it.<br>
> > > >><br>
> > > >> Its best to specify all the packages [mumps and its dependencies] you<br>
> > > >> built manually with the options:<br>
> > > >><br>
> > > >> --with-package-include --with-package-lib<br>
> > > >><br>
> > > >> Satish<br>
> > > >><br>
> > > >> > Best regards,<br>
> > > >> ><br>
> > > >> > Natacha<br>
> > > >> ><br>
> > > >><br>
> > > ><br>
> > > ><br>
> > ><br>
> ><br>
> ><br>
><br>
<br>
</div></div></blockquote></div><br></div>