← Back to team overview

yade-dev team mailing list archive

Re: compilation with ENABLE_LINSOLV ON

 

Hi Christian,

Now you know why the fluid model is not well packaged yet. It is a big
mess with libraries...
Note, however that you can use the fluid model without the linear
algebra libraries, using the Gauss-Seidel solver implemented in Yade (in
that case you don't need ENABLE_LINSOLV, so ok, it's not your question).
GS is less efficient for big problems, but at least it lets you try
something.

Regarding your problem, you forgot the most important thing: your linux
version.
In ubuntu 12.10, there is much less trouble normally. All libraries can
be used in their packaged version. However, it seems it will give
occasional crashes of the simulations without good reason (still to be
confirmed), in cases which are 100% stable in ubuntu 12.04.

In 12.04 and below, you need to install custom versions of most of them.
Indications are in [1], but this was a draft page prepared by Emanuele
Catalano and I can't guarantee 100% of it. I have nothing better to
suggest yet.

A few problems I can see problems in what you did (assuming you are at
12.04 or less):
* Hardcoding an include path in eigen3 sources is bad practice, you can
use compilation flags. Actually there is a deeper problem: you need to
download and install eigen3.1, eigen3 will not work.

* This symlink is not good:
 /usr/lib >ln -s libblas/libblas.a libopenblas.a
You are trying to replace a very optimized and parallel algebra library
by a very slow legacy blas. It kills performance so that the
Gauss-Seidel method without LINSOLV would be faster... Static linking is
also bad.
You need to download and compile/install openblas (or its ancestor
gotoblas) in a custom directory. Installing the packaged version
available in 12.04 will not work, it breaks python modules by providing
a different version of lapack.

It is also necessary to compile and install a specific version of
suitesparse, as indicated in the wiki page. The only lib that you can
install from the package manager is libparmetis3.1.

If you try and follow the wiki page, please tell me if it works or if
something has to be modified.
Good luck!

Bruno

[1] https://www.yade-dem.org/wiki/Flow_engines_on_ubuntu_12.04



On 26/06/13 16:06, Christian Jakob wrote:
> Hi devs,
>
> I want to get yade compiled with ENABLE_LINSOLV ON. After some trouble
> (see attachment) I do not know how to fix this one:
>
> Linking CXX shared library lib/libsupport.so
> /usr/bin/ld:
> /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/libopenblas.a(dgemm.o):
> relocation R_X86_64_32 against `.rodata' can not be used when making a
> shared object; recompile with -fPIC
> /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/libopenblas.a:
> could not read symbols: Bad value
>
> google the problem gave me a hint, that it has to do with static vs.
> shared libraries. solution should be to add -fPIC to CXX_FLAGS, but if
> i look into CMakeLists.txt it is already there:
>
> SET(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS}
> -DYADE_PTR_CAST=static_pointer_cast -DYADE_CAST=static_cast -fPIC")
>
> and
>
> SET(CMAKE_CXX_FLAGS  "-DYADE_PTR_CAST=static_pointer_cast
> -DYADE_CAST=static_cast -Wall -fPIC -g -O2 -fstack-protector
> --param=ssp-buffer-size=4 -Wformat -Wformat-security
> -Werror=format-security -s")
>
> So, do you know a workaround for this problem?
>
> christian
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev
> Post to     : yade-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-dev
> More help   : https://help.launchpad.net/ListHelp


-- 
_______________
Bruno Chareyre
Associate Professor
ENSE³ - Grenoble INP
Lab. 3SR
BP 53
38041 Grenoble cedex 9
Tél : +33 4 56 52 86 21
Fax : +33 4 76 82 70 43
________________


Follow ups

References