help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: how to build octave with ufsparse lib


From: Quentin Spencer
Subject: Re: how to build octave with ufsparse lib
Date: Mon, 28 Aug 2006 11:51:52 -0500
User-agent: Thunderbird 1.5.0.5 (X11/20060808)

Joe Koski wrote:
on 8/28/06 4:17 AM, David Bateman at address@hidden wrote:

Joe Koski wrote:
on 8/25/06 8:45 PM, John W. Eaton at address@hidden wrote:

| Each of the eight libraries that you need must be built separately. The
| libraries that you need are AMD, CAMD, CHOLMOD, CCOLMAND, COLAMD,
CXSparse,
| metis-4.0 from (http://glaros.dtc.umn.edu/gkhome/node), and UMFPACK (which
| you already have).

METIS is not required.

John, Frank,

I originally tried to build octave without metis. My guess was that I didn't
need metis, and there is an option to build without metis in CHOLMOD, so I
tried it, and did get a libcholmod.a. During octave configure, the script
was looking for metis headers. During the octave-2.9.7 make, I had
unsatisfied symbols with metis in the name, so I went back and reconfigured
and rebuilt CHOLMOD with metis. Everything then worked. Maybe someone can
explain why this happened.

One error in my original post on how to build UFsparse: the file that you
modify in UFconfig is UFconfig.mk, not UFconfig.h.

Joe
No idea why its happening.. Looking at the configure.in file the code
for this is

    AC_CHECK_HEADERS([ufsparse/metis.h metis/metis.h metis.h], [
      AC_CHECK_LIB(metis, METIS_NodeND, with_metis=yes, with_metis=no)
      break],
      with_metis=no)

    if test "$with_metis" = yes; then
      AC_DEFINE(HAVE_METIS, 1, [Define if the METIS library is used.])
      AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod
-lmetis";
        with_cholmod=yes], [
        AC_CHECK_LIB(cholmod, cholmod_start,
          [CHOLMOD_LIBS="-lcholmod -cblas -lmetis"; with_cholmod=yes], [],
          $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS -lmetis)],
        $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS -lmetis)
    else
      AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod";
        with_cholmod=yes], [
        AC_CHECK_LIB(cholmod, cholmod_start, [CHOLMOD_LIBS="-lcholmod
-cblas";
          with_cholmod=yes], [],
          $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS)],
        $AMD_LIBS $COLAMD_LIBS $CCOLAMD_LIBS $BLAS_LIBS $FLIBS)
    fi

so it should work with or without metis..

Cheers
D.


David,

My hazy recollection (it took several tries to get it to work) is that when
I had most of the sparse matrix libraries installed, but before I installed
metis, I got a failed build with unresolved symbols with the name metis in
them. At that time, I had built cholmod without metis. I do remember being
surprised at the need for metis, since it appears to be related to the
generation of finite element grids.

My guess would be that, prior to my Mac efforts, all Linux builds were
against the same standard binary ufsparse installation that included metis.
If that is the case, it would not matter whether or not metis existed, and
the octave configure would never be tested without metis present. Another
possiblility is that libcholmod.a has a problem, and needs the metis
routines even when it should not.

Anyway, the next independent builder of UFsparse should take notes and
advise whether metis was required. An install script for UFsparse would also
be useful to transfer all the .a and .h files to the proper locations for
the octave configure to find them.

Enough. My octave-2.9.8 continues to work well.

Are you doing anything special to build cholmod without metis? In my spec file, I have "make CFLAGS=-DNPARTITION", which I think I got from David. If I recall correctly, cholmod will try to link to metis if you don't compile with this flag set, which could be causing the missing metis symbols when you compile octave.

Quentin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]