← Back to team overview

dolfin team mailing list archive

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