Difference between revisions of "Flow engines on ubuntu 12.04"

From Yade

Line 17: Line 17:
 
Download taucs sources from the CGAL project or, simpler, download the version that I already configured for 12.04 + openblas [http://geo.hmg.inpg.fr/~chareyre/code here])
 
Download taucs sources from the CGAL project or, simpler, download the version that I already configured for 12.04 + openblas [http://geo.hmg.inpg.fr/~chareyre/code here])
   
If you want to change the build config, see /config/linux.mk (for instance to set the path to openblas).
+
Configure the build by editing /config/linux.mk (you need at least to set the path to openblas, or to other libs you may want to use).
   
 
Compiling taucs may give harmless error messages even if it actually compiled (it failed at post-built test stages), ignore them and just check that /src/taucs.h and /lib/linux/libtaucs.a are present.
 
Compiling taucs may give harmless error messages even if it actually compiled (it failed at post-built test stages), ignore them and just check that /src/taucs.h and /lib/linux/libtaucs.a are present.

Revision as of 12:33, 21 May 2012

1. download openblas and compile it

Openblas is a packaged version of gotoblas, which is recommended by most matrix library developpers. It is available precompiled in 12.04 but it breaks python's matplotlib because it provides a different version of lapack, which is a dependency of matplotlib.

Therefore, you should download the sources at github: https://github.com/xianyi/OpenBLAS/zipball/master

prerequisites:

  • gfortran

Compile somewhere in your home dir (be sure to have gfortran installed and type make FC=gfortran so as to use the right compiler) and keep the /path/to/libopenblas.so.0 in mind for the next steps.

Make a symlink to /path/to/openblas.so.0 in the standard path so that yade will find it at startup:

sudo ln -s /path/to/libopenblas.so.0 /usr/lib/libopenblas.so.0

2. Compile taucs

Download taucs sources from the CGAL project or, simpler, download the version that I already configured for 12.04 + openblas here)

Configure the build by editing /config/linux.mk (you need at least to set the path to openblas, or to other libs you may want to use).

Compiling taucs may give harmless error messages even if it actually compiled (it failed at post-built test stages), ignore them and just check that /src/taucs.h and /lib/linux/libtaucs.a are present.

make
(sudo) make install

prerequisites:

3. configure the compilation of yade/lib/triangulation

It should be possible to do it all in the scons.profile, but for the moment I just modified /trunk/lib/sconscript like this:

# vim: set filetype=python :
env.Install('$LIBDIR/lib',env.SharedLibrary('yade-support',[
   env.Combine('yade-support.cpp',['base/Math.cpp']+
       ['factory/ClassFactory.cpp','factory/DynLibManager.cpp','multimethods/Indexable.cpp','serialization/Serializable.cpp','pyutil/gil.cpp']
       # compile TesselationWrapper only if cgal is enabled in features
       +(Split('triangulation/KinematicLocalisationAnalyser.cpp triangulation/Timer.cpp triangulation/basicVTKwritter.cpp
triangulation/FlowBoundingSphere.cpp triangulation/PeriodicFlow.cpp triangulation/Tenseur3.cpp triangulation/TriaxialState.cpp')
if 'cgal' in env['features'] else [])
       +(['opengl/GLUtils.cpp'] if 'opengl' in env['features'] else [])
       ),
        ],LIBS=['dl','m']+(['taucs','metis','openblas','gomp','gfortran'] if 'cgal' in env['features'] else [])
+[l for l in env['LIBS'] if l!='yade-support']+(['glut','GL','GLU'] if 'opengl' in env['features'] else []),
LINKFLAGS=env['LINKFLAGS']+['-L/path/to/taucs_full/lib/linux','-L/path/to/metis-4.0 (if compiled) ',
'-L/path/to/lib/openblas/lib/','-pthread','-Wl','-Bsymbolic-function','-ansi'],CXXFLAGS=env['CXXFLAGS']+['-fPIC','-frounding-math','-ansi']
))

5. Compile Yade with linsolv enabled

As usual, get the "linsolv" version of flow engines and compile yade with cgal enabled, and -DFLOW_ENGINE, -DLINSOLV in Yade's compile flags.