[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: how to build octave with ufsparse lib
From: |
Joe Koski |
Subject: |
Re: how to build octave with ufsparse lib |
Date: |
Mon, 28 Aug 2006 13:26:45 -0600 |
User-agent: |
Microsoft-Entourage/11.2.5.060620 |
on 8/28/06 10:51 AM, Quentin Spencer at address@hidden wrote:
> 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
>
>
>
Quentin,
As I recall, I followed the instructions in the # comment in the
UFconfig/config.mk file about the -DNPARTITION flag, and added the
-DNPARTITION flag at the end of those # comments. The cholmod library then
built without problems. What would happen if I misspelled -DNPARTITION? Not
likely, but possible.
Joe