[Debian-med-packaging] Function multiversioning for Phylogeny tools [Fwd: Help to build library in generic form, avx and sse3]
Alexandros Stamatakis
Alexandros.Stamatakis at h-its.org
Mon Mar 20 10:29:56 UTC 2017
Dear Andreas,
Thanks a lot. The suggestion in the forwarded email really sounds good.
I've also added Alexey Kozlov to this thread, since he is the main
developer of the RAxML re-design that we actually released today:
https://github.com/amkozlov/raxml-ng/releases/tag/0.1.0
So I don't think that we will add this to the old RAxML developed by me,
but we should definitely add this to the new one.
I do believe that it would be best to open issues in the respective
github repos such that we don't lose track and I will discuss it
tomorrow morning with some members of my team.
Thanks for all your work on this,
Alexis
On 15.03.2017 13:32, Andreas Tille wrote:
> Hi Alexandros,
>
> recently I asked you about suggestions what else besides RaXML and ExaML
> might be interesting packaging targets for the Debian Med team. I
> somehow lost the message (I'm archiving now mine here on the public
> Debian Med developers list ;-)) but you suggested
>
> ExaBayes: https://github.com/aberer/exabayes
> RogueNaRok: https://github.com/aberer/RogueNaRok
> mPTP: https://github.com/Pas-Kapli/mptp
>
> by their influence. I had a look into the first two. The second was
> easy and thus a roguenarok package is now in the Debian New queue for
> inspection by ftpmaster. ExaBayes is a bit more complex and I'm in
> discussion with Andre Aberer (in CC) how to proceed[1].
>
> When trying to package libpll (independently whether it will be used to
> link ExaBayes or not in the final package) I stumbled about the problem
> that in contrast to the documentation no generic library (without sse3
> and avx is created) and asked for help on the usual Debian channels.
>
> I'm quoting below the most interesting answer which is probably
> interesting for several tools of your lab since I remember some past
> discussion about RaXML where also different binaries are created which
> might not be only confusing for users but also could lead to situation
> where it is out of control of the user what version is choosen.
>
> I observed it in wrappers like biopython, bioperl and other suites that
> in all cases only the simple version is called and not the hardware
> enhanced versions are choosen. I tried to work around this situation by
> providing a wrapper in /usr/bin/DefaultNameOfTheTool which checks the
> hardware and redirects the command to the proper executable but finally
> that's a hack I'd like to get rid of rather sooner than later.
>
> So I'd like you to read the mail below about function multi-versioning
> and consider to take this technique over into your source code to
> support all users with sufficient hardware profiting from the maximum
> speed they could gain from their hardware. If you want me to open
> issues in Github for the single projects I can do so but at first I
> wanted to make you aware about this in general since it is not only a
> single software affected and you might like to coordinate things in your
> lab.
>
> Kind regards
>
> Andreas.
>
> [1] https://github.com/aberer/exabayes/issues/4
>
> ----- Forwarded message from Christian Seiler <christian at iwakd.de> -----
>
> Date: Tue, 14 Mar 2017 16:03:01 +0100
> From: Christian Seiler <christian at iwakd.de>
> To: Andreas Tille <andreas at an3as.eu>, Debian Mentors List <debian-mentors at lists.debian.org>, Debian Med Packaging Team <debian-med-packaging at lists.alioth.debian.org>
> Subject: Re: Help to build library in generic form, avx and sse3
>
> On 03/14/2017 03:46 PM, Andreas Tille wrote:
>> I've started packaging Phylogenetic Likelihood Library[1]. Since it
>> makes heavy use of amd64 features it comes with specific support of AVX
>> and SSE3. My plan is to provide binary packages amd64 only named
>> libpll-avx1 and libpll-sse3-1 with the according features plus a generic
>> library libpll-generic1 for all architectures. Upstream supports the
>> creation of separate avx and sse3 libs out of the box but I failed to
>> create the generic version. So I have two questions:
>>
>> 1. Could anybody please have a look at the automake stuff to
>> enable the build of the generic lib in addition to the other
>> two. I tried several switches but failed. :-(
>>
>> 2. What do you think about the plan to support specific hardware
>> features in separate binary packages?
>
> GCC from version 6 (which is in Debian Stretch) supports function
> multi-versioning (and GCC from 4.8 onwards, which is even in Jessie,
> supports a subset of that), which allows you to do the following:
>
> - have a function with generic C/C++ code be compiled multiple
> times in different variants, and have the most optimal variant
> be selected at runtime (requires GCC 6),
>
> e.g.
>
> __attribute__((target_clones("avx2","sse3","default")))
> double foo(double a, double b) {
> return a + b;
> }
>
> - manually write different versions of the function and mark
> them accordingly (requires GCC 4.8)
>
> __attribute__((target("default")))
> double foo(double a, double b) {
> return a + b;
> }
>
> __attribute__((target("sse3")))
> double foo(double a, double b) {
> SOME_FANCY_SSE3_CODE;
> }
>
> __attribute__((target("avx2")))
> double foo(double a, double b) {
> SOME_FANCY_AVX2_CODE;
> }
>
> So from a purely technical perspective I think the best solution
> would probably be to work with upstream to allow them to support
> FMV properly - and then you only need to compile a single library
> version that will work everywhere, but will select the optimal
> algorithm depending on the machine it's run - win/win.
>
> Further reading:
> https://lwn.net/Articles/691932/
>
> Regards,
> Christian
>
>
> ----- End forwarded message -----
>
--
Prof. Dr. Alexandros (Alexis) Stamatakis
Phone: +49-6221-533-240
Fax: +49-6221-533-298
E-Mail: Alexandros.Stamatakis at h-its.org
WWW: www.h-its.org
HITS gGmbH
Schloss-Wolfsbrunnenweg 35
D-69118 Heidelberg
Amtsgericht Mannheim / HRB 337446
Managing Director: Dr. Gesa Schönberger
Scientific Director: Prof. Dr. Michael Strube
More information about the Debian-med-packaging
mailing list