[petsc-users] Problem installing metis

Satish Balay balay at mcs.anl.gov
Thu Sep 3 19:33:42 CDT 2015


Ok - the issue here is:- '-O3 -ffast-math' inlines/optimzies out the
math code in configure test [so -lm isn't needed/required here].  But
the code in metis [and petsc] library sources isn't inlined out
[requiring -lm].

>>>>>>>>>>>> Current configure behavior <<<<<<<<<<<
$ cat conftest.c 
double pow(double, double);
static void _check_pow() { double x = 0,y ; y = pow(x, x);
; }
int main() {
_check_pow();;
  return 0;
}
$ gcc -O -ffast-math conftest.c
$ gcc  conftest.c
/tmp/ccWCYvMy.o: In function `_check_pow':
conftest.c:(.text+0x28): undefined reference to `pow'
collect2: error: ld returned 1 exit status
$ gcc  conftest.c -lm
$ 
>>>>>>>>>>>> modified testcode to reproduce library-code behavior <<<<<<<<<<<
$ cat newtest.c 
#include <math.h>
//double pow(double, double); //also works but gives different error
double _check_pow(double x ) { return pow(x, x);
; }
int main() {
_check_pow(1.0);;
  return 0;
}
$ gcc -O3 -ffast-math newtest.c
/tmp/ccfeotgx.o: In function `_check_pow':
newtest.c:(.text+0x5): undefined reference to `__pow_finite'
collect2: error: ld returned 1 exit status
$ gcc -O3 -ffast-math newtest.c -lm
$ 
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

This test code within configure is spun by code-generator- so I'm not
sure how to modify it to get this test working..

[and its not clear if this change works universally - a different
compiler/optimizer might not fail the same way?]

Satish

On Thu, 3 Sep 2015, Michele Rosso wrote:

> Hi Satish,
> 
> I did as you suggested and I was able to install successfully.
> I attached the configure script and log.
> 
> Thanks!
> Michele
> 
> On Thu, 2015-09-03 at 13:08 -0500, Satish Balay wrote:
> 
> > Hm - this is weird.
> > 
> > >>>>>>>>>>>
> > 
> > TESTING: checkMath from config.libraries(config/BuildSystem/config/libraries.py:251)
> >   Check for sin() in libm, the math library
> > 
> > Executing: mpicc  -o /tmp/petsc-AXFj8c/config.libraries/conftest    -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O3 -ffast-math -march=native -mtune=native /tmp/petsc-AXFj8c/config.libraries/conftest.o   -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -ldl -lmpich -lopa -lmpl -lrt -lcr -lpthread -lgcc_s -ldl
> >               Popping language C
> >           Math functions are linked in by default
> > 
> > 
> > Executing: mpicc  -o /tmp/petsc-AXFj8c/config.libraries/conftest    -Wall -Wwrite-strings -Wno-strict-aliasing -Wno-unknown-pragmas -O3 -ffast-math -march=native -mtune=native /tmp/petsc-AXFj8c/config.libraries/conftest.o  -Wl,-rpath,/opt/petsc/petscfork/gnu-opt-32idx/lib -L/opt/petsc/petscfork/gnu-opt-32idx/lib -lmetis -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/x86_64-linux-gnu -L/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu -ldl -lmpich -lopa -lmpl -lrt -lcr -lpthread -lgcc_s -ldl
> > Possible ERROR while running linker: exit code 256
> > stderr:
> > /opt/petsc/petscfork/gnu-opt-32idx/lib/libmetis.a(kmetis.c.o): In function `libmetis__InitKWayPartitioning':
> > /opt/petsc/petscfork/gnu-opt-32idx/externalpackages/metis-5.1.0-p1/libmetis/kmetis.c:187: undefined reference to `__log_finite'
> > /opt/petsc/petscfork/gnu-opt-32idx/externalpackages/metis-5.1.0-p1/libmetis/kmetis.c:187: undefined reference to `__pow_finite'
> > /opt/petsc/petscfork/gnu-opt-32idx/lib/libmetis.a(util.c.o): In function `gk_flog2':
> > /opt/petsc/petscfork/gnu-opt-32idx/externalpackages/metis-5.1.0-p1/GKlib/util.c:106: undefined reference to `__log_finite'
> > <<<<<<<<<<
> > 
> > Can you rerun configure with the additional option "LIBS=-lm" - and see if it makes a difference?
> > 
> > Satish
> > 
> > 
> > On Thu, 3 Sep 2015, Michele Rosso wrote:
> > 
> > > Hi,
> > > 
> > > I am trying to install METIS via the development version of petsc, but I
> > > encountered the following error:
> > > 
> > >          UNABLE to CONFIGURE with GIVEN OPTIONS    (see configure.log
> > > for details):
> > > -------------------------------------------------------------------------------
> > > Downloaded metis could not be used. Please check install
> > > in /opt/petsc/petscfork/gnu-opt-32idx
> > > 
> > > 
> > > I attached the install script and the configure.log file.
> > > Any idea?
> > > 
> > > Thanks,
> > > Michele
> > > 
> > > 
> > > 
> > > 
> > 
> 
> 
> 



More information about the petsc-users mailing list