dolfin team mailing list archive
-
dolfin team
-
Mailing list archive
-
Message #03281
Re: 0.6.2-1 compilation error
Hopefully this problem is now fixed. Osman, can you test it for me?
The problem is that uBLAS uses std::size_t for compressed matrix index
arrays by default. std::size_t is a typedef, and on most machines it is
a typedef for unsigned int, but on other machines (typically 64 bit) it
is a typedef for long unsigned int.
I'm now forcing uBLAS to use unsigned int for compressed matrices. With
UMFPACK, problems are then limited to 2GB. In the future, I can change
the default to long unsigned int.
On this point, for portability when using STL, should we be using
std::size_t rather than unsigned int in many places? Would it make sense
to use uint as a typedef to std::size_t rather than unsigned int?
Garth
osman b wrote:
> I installed 0.6.2-1. with plain ./configure (without petsc, umfpack, amd)
> installs ok. Demos work.
> when I configured with
> ./configure --with-petsc-dir=/home/osman/SRC/petsc-2.3.0 --enable-python
> --with-umfpack-include=/usr/local/include
> --with-umfpack-lib=/usr/local/lib/libumfpack.a
> --with-amd-lib=/usr/local/lib/libamd.a
>
> I get a compilation error:
> ...
> g++ -DPACKAGE_NAME=\"DOLFIN\" -DPACKAGE_TARNAME=\"dolfin\"
> -DPACKAGE_VERSION=\"0.6.2-1\" "-DPACKAGE_STRING=\"DOLFIN 0.6.2-1\""
> -DPACKAGE_BUGREPORT=\"dolfin@xxxxxxxxxx\" -DSTDC_HEADERS=1
> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1
> -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1
> -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 -DHAVE_UMFPACK_H=1 -I. -I.
> -I../../../src/kernel/common -I../../../src/kernel/fem
> -I../../../src/kernel/form -I../../../src/kernel/function
> -I../../../src/kernel/io -I../../../src/kernel/la -I../../../src/kernel/main
> -I../../../src/kernel/math -I../../../src/kernel/mesh
> -I../../../src/kernel/mf -I../../../src/kernel/nls -I../../../src/kernel/ode
> -I../../../src/kernel/pde -I../../../src/kernel/quadrature
> -I../../../src/kernel/parameter -I../../../src/kernel/log
> -I/usr/include/libxml2 -I/usr/local/include -g -O2 -DNDEBUG -pedantic
> -Wno-long-long -std=c++98 -fPIC -MT uBlasLUSolver.lo -MD -MP
> -MF .deps/uBlasLUSolver.Tpo -c uBlasLUSolver.cpp -fPIC -DPIC
> -o .libs/uBlasLUSolver.o
> uBlasLUSolver.cpp: In member function 'virtual dolfin::uint
> dolfin::uBlasLUSolver::solve(const
> dolfin::uBlasMatrix<dolfin::ublas_sparse_matrix>&, dolfin::uBlasVector&,
> const dolfin::uBlasVector&)':
> uBlasLUSolver.cpp:75: error: cannot convert 'const long unsigned int*' to
> 'const unsigned int*' in initialization
> uBlasLUSolver.cpp:76: error: cannot convert 'const long unsigned int*' to
> 'const unsigned int*' in initialization
> make[4]: *** [uBlasLUSolver.lo] Error 1
> make[4]: Leaving directory `/home/osman/SRC/dolfin-0.6.2-1/src/kernel/la'
> make[3]: *** [all-recursive] Error 1
> make[3]: Leaving directory `/home/osman/SRC/dolfin-0.6.2-1/src/kernel/la'
> make[2]: *** [all-recursive] Error 1
> make[2]: Leaving directory `/home/osman/SRC/dolfin-0.6.2-1/src/kernel'
> make[1]: *** [all-recursive] Error 1
> make[1]: Leaving directory `/home/osman/SRC/dolfin-0.6.2-1/src'
> make: *** [all-recursive] Error 1
>
Follow ups
References