← Back to team overview

yade-dev team mailing list archive

Re: compilation with ENABLE_LINSOLV ON

 

Thanks Bruno and Anton,

Compilation was successful on Debian Squeeze. The wiki was a great help. Just one thing is different on debian: libeigen3-dev comes already with version 3.1 from packages:
root@debian >aptitude show libeigen3-dev
Version: 3.1.0-1

Now I try to create a small example script, but actually I am lost in the amount of parameters, initial and boundary conditions.
Which of them must be set mandatory?
Do I need FlowBoundingSphereLinSolv.*pp, as mentioned by Anton?

christian.

Zitat von Anton Gladky <gladky.anton@xxxxxxxxx>:

Some backports of new libraries for 12.04 are available on this PPA [1].
Yade's external PPA has also eigen 3.1.2 [2].

Bruno, linsolv requires FlowBoundingSphereLinSolv.hpp [3], are you able
to provide it in Yade?

Thanks,

[1] https://launchpad.net/~gladky-anton/+archive/precise-backports
[2] https://launchpad.net/~yade-users/+archive/external
[3] https://github.com/yade/trunk/blob/master/lib/triangulation/FlowBoundingSphere.hpp#L169

Anton


2013/6/26 Bruno Chareyre <bruno.chareyre@xxxxxxxxxxx>:
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
________________


_______________________________________________
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


_______________________________________________
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






Follow ups

References