← Back to team overview

yade-dev team mailing list archive

Re: compilation with ENABLE_LINSOLV ON

 

Hi Anton,
Thanks for helping.
> Bruno, linsolv requires FlowBoundingSphereLinSolv.hpp [3], are you able
> to provide it in Yade?
We didn't want to release it too fast during Emanuele's PhD. One reason
is we didn't want to spend too much time solving compilation problems
via the mailing list as long as the ground was moving. For the algebra
library, we oscillated between taucs, pardiso (non-free), pure
suitesparse/cholmod, cholmod via eigen interface, with specific
compilation problems for each of them. Emanuele's PhD would have been
turned into a hotline activity...

Now the PhD is finished and eigen/cholmod is at the same time well
maintained and performant. It sounds like a good choice for the long
term. So yes, I can commit them. Especially if you are trying to compile
it now in Freiberg.
I will commit the files. Note, however, that I will not be quite
efficient for the testing and hotline part in the coming weeks.

Bruno


> 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
>
>
>


-- 
_______________
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
________________



References