← Back to team overview

yade-dev team mailing list archive

Re: High precision Real and minieigen

 

It makes sense to me to not rush to pybind right now, although I don't mean
to refrain any volunteer...
B



On Sat, 22 Feb 2020 at 11:05, Janek Kozicki (yade) <jkozicki-yade@xxxxxxxxx>
wrote:

> OK, I will experiment a bit and see what it takes to switch to pybind11.
>
> Janek
>
>
> Janek Kozicki (yade) said:     (by the date of Fri, 21 Feb 2020 22:30:04
> +0100)
>
> > Hi Anton,
> >
> > Yes, the number of defines in Serialization.hpp is crazy.
> > Changing/removing them to use pybind11 would take a lot of work.
> > I'm sure it is possible, but not quickly.
> >
> > We can open an issue about pybind11 switch. Discuss pros and cons,
> > find a good strategy to deal with crazy defines and complete it later.
> >
> > Doing this switch right now is unrealistic. Working on another moving
> > target (pybind11) on top of an already moving target (minieigen HP
> > not fully integrated) is irresponsible. If possible I would prefer:
> >
> >   * minieigen-src package (slower compilation only for non-double)
> >   * or integrate minieigen with yade sources for now (rather undesirable
> >     due to compilation time).
> >
> > Whatever we do I would prefer to integrate HP, because doubles will
> > appear very quickly in the code.
> >
> > Ah, if we talked about pybind11 switch three months ago it would be
> > perfect timing for me :( In fact I was thinking about it that time,
> > but I didn't want to push into something that wasn't guaranteed to be
> > working [*]. Figuring out the correct way to convert high precision
> > to/from python with boost was difficult, for a while I prefer to not
> > repeat this task with pybind11. But surely we can get back to this
> > later.
> >
> > The extra time for compilation happens only when non-double type is used.
> > If minieigen-src package gets to 20.04 it will be possible later for
> > people to compile high precision yade from gitlab sources without big
> hassle.
> >
> > The build_focal_simple [1] is 5 minutes because it's not parallelized.
> > The problem is that pybuild is not accepting -j argument.
> > With make -j 6 it is faster [2][3].
> >
> > Also a fast quad_double (62 decimal places, package libqd-dev)
> > integration is in the works with boost::multiprecision developers [4].
> >
> > To summarize:
> >
> >  * I would rather avoid pybind11 switch in a rush, better give it a few
> months
> >  * I would prefer minieigen-src package (no extra compilation time for
> people who use `double`)
> >  * minieigen-src in ubuntu 20.04 will let more people to test & use high
> precision.
> >
> > I understand that this solution is temporary until we figure a
> > proper way to deal with pybind11. The 4 year LTS is more than enough
> > to solve pybind11 + Serialization.hpp problem.
> >
> > It is better to finish HP integration to not lose what is already
> > working.
> >
> > best regards
> > Janek
> >
> >
> > [*] pybind11 is a new dependency and a new package, boost is well
> >     integrated with itself, it was guaranteed to work.
> >
> > [1] https://gitlab.com/yade-dev/minieigen/-/jobs/444927466
> >
> > [2] https://gitlab.com/cosurgi/minieigen-real/pipelines/118211208 - I
> used this to test HP
> >
> > [3] In the pipeline with ccache it's usually not a problem. On
> >     debian build servers: it won't be a problem until we decide to
> >     make yade-float128 package. But if we made an accompanying
> >     minieigen-float128 this problem would disappear. But pybind11
> >     alternative is good also, just unrealistic right now.
> >
> > [4] https://github.com/boostorg/multiprecision/issues/184
> >
> >
> > Anton Gladky said:     (by the date of Fri, 21 Feb 2020 20:09:07 +0100)
> >
> > > Hi Janek,
> > >
> > > we have misunderstanding here. python3-minieigen is the __binary__
> > > package and it is a bad idea to ship the source code with the package.
> > >
> > > Adding minieigen-src binary package is possible, but it looks like very
> > > undesired way.
> > >
> > > As I see, only Yade is using minieigen in the Debian. So,
> theoretically we
> > > can merge it again with Yade. Not sure, whether it is a good way
> though....
> > > Yade compiles too slow. Minieigen adds definitely 4-5 compilation
> minutes
> > > and Gigabytes of used RAM.
> > >
> > > We should really have a look at pybind11 alternative, if it
> accelerates the
> > > compilation. But when I see Serialization.hpp, I am getting crazy from
> the
> > > number of "defines" there.
> > >
> > > Anton
> > >
> > > Am Fr., 21. Feb. 2020 um 17:04 Uhr schrieb Janek Kozicki (yade)
> > > <jkozicki-yade@xxxxxxxxx>:
> > > >
> > > > Uh Anton, I'm sorry to be so boring:
> > > >
> > > > I have checked with sid in /etc/apt/sources.list:
> > > >
> > > >   deb-src http://ftp.pl.debian.org/debian/ sid  main non-free
> contrib
> > > >
> > > > and built the python3-minieigen_0.50.3+dfsg1-12_amd64.deb package.
> > > >
> > > > There is no /usr/include/minieigen/*pp files inside :(
> > > >
> > > > For high precision to work, they are necessary. Maybe the proper way
> > > > to do this is to introduce python3-minieigen-dev package? I'm not
> > > > sure. These sources are needed because of these include [1]
> statements.
> > > >
> > > > I am attaching once again the file python3-minieigen.install which
> > > > installs *pp files. Even the *.cpp files are used. If you feel
> > > > that *.cpp files are too much, we could duplicate the .cpp files in
> > > > yade (they are rather short) and only include the *.hpp files (these
> > > > are quite long). But all *pp files in /usr/include/minieigen/ would
> > > > be perfect.
> > > >
> > > > Best regards
> > > > Janek
> >
> >
> > --
> > --
> > Janek Kozicki, PhD. DSc. Arch. Assoc. Prof.
> > Gdańsk University of Technology
> > Faculty of Applied Physics and Mathematics
> > Department of Theoretical Physics and Quantum Information
> > --
> > http://yade-dem.org/
> > http://pg.edu.pl/jkozicki (click English flag on top right)
> >
> > _______________________________________________
> > 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
>
>
> --
> --
> Janek Kozicki, PhD. DSc. Arch. Assoc. Prof.
> Gdańsk University of Technology
> Faculty of Applied Physics and Mathematics
> Department of Theoretical Physics and Quantum Information
> --
> http://yade-dem.org/
> http://pg.edu.pl/jkozicki (click English flag on top right)
>
> _______________________________________________
> 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
________________

Email too brief?
Here's why: email charter
<https://marcuselliott.co.uk/wp-content/uploads/2017/04/emailCharter.jpg>

Follow ups

References