-
Notifications
You must be signed in to change notification settings - Fork 370
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Getting BLIS into Ubuntu #210
Comments
Regarding having BLIS in a PPA (either Debian or Ubuntu, or does it matter?): on OpenSUSE there are the regular packages in the "official" repos, but there are also "1-Click" install files which prompt the package manager to both add an external package repo (the PPA in our case) and then install the package. Does something like this exist for Debian/Ubuntu? The upside of this would be not needing to get into the official repo but also making it easy for users to install and get updates. If we don't care about the second part then a bare .deb/.rpm would also suffice. |
@devinamatthews According to this wiki, it appears that the answer is yes (see section "Adding Personal Package Archives (PPAs)"). However, this may not so much as capture new users as give some of the existing ones another installation option. The way I see it, if the person is willing to pre-configure their Ubuntu GUI package widget to download from, say, Nico's PPA, they would probably already be willing to go straight to GitHub, especially since the latter would allow them access too all configuration options, whereas a binary would restrict them to whatever choices the package maintainer made. |
The "1-Click" thing is slightly different in that one can just have a link on a webpage that the user clicks on, and then everything is automated from there. Adding a PPA manually to Ubuntu is relatively much more of a PITA. |
@devinamatthews Understood, sorry for that nuance being lost on me. (I've never used OpenSuSE.) |
I myself am a Debian Maintainer (DM) so I have a fair idea of how things are working. A package gets into Debian if (a) it's popular enough for people to want it or (b) if another package depends on it. This approach is typically taken somewhat conservatively since if you're volunteering to maintain a package, it's your task forever. For example, even though I follow BLIS with great interest, I myself wouldn't want to dive into that yet. If your goal is to get BLIS into Ubuntu, you're already there: There's a PPA, and everyone is just one command away to add it. If you want to gain some traction, one way would probably be to demonstrate that you do some things better (faster?) than BLAS, given developers of other software arguments for linking against BLIS rather than BLAS. Perhaps get back to SciPy or NumPy, they'll be able to give you some good feedback. |
I think a Debian package should do the same as the openblas one and provide libblas.so.3, to be substitutable at run time (the way the BLIS rpm packaging does). I started doing that along with the rpm spec, but it wasn't clear to me what the actual Debian linear algebra policy is, as I commented somewhere in the issues. Also, I don't like Debian only offering a pthreads version of openblas, not serial or OpenMP, which you probably want for HPC. (I think that was purely for support of numpy for some reason I don't remember, but I don't see why it should exclude the others.) The specific reason to have BLIS included is the KNL and SKX BLAS support, which OpenBLAS doesn't have. |
@loveshack Curious: Why is the |
The idea is that it can substitute the netlib library via
LD_LIBRARY_PATH or ld.so.conf. If README.Fedora isn't clear (it's
inline in the spec file), I'll try to make it so. [It currently has a
typo, and I need to make it README.SuSE on SuSE.] Maybe also see
https://loveshack.fedorapeople.org/blas-subversion.html if I haven't
mentioned it, but it needs some updating, and experimental data mostly
don't convince research computing people out of myths about MKL etc., sigh.
|
Thanks Dave, but I guess my question is why is it a convention that |
You wrote:
Thanks Dave, but I guess my question is why is it a convention that
`libblas.so.3` use an `soname` of 3? Is it because BLAS did not change
after the introduction of the level-3 operations?
The soname major version changes when there's an incompatible ABI
change. It's nothing specifically to do with BLAS levels. Explained
somewhere in the autotools doc, at least.
I can't help but
notice that all of the other netlib libraries seem to use an `soname`
of 3 as well. Maybe it has to do with the current major version number
of LAPACK? (It's okay if you don't know the answer.)
It's related, but not specifically following that. The Debian changelog
says this. I don't know what it was initially.
```
lapack3 (3.0.20000531a-1) unstable; urgency=low
* Binary incompatible changes in the blas library, against which this
library is linked, require an increase in the soname, and a change
in package name to allow for support for the old API in both source
and binary form to remain in the archives.
…-- Camm Maguire <camm@enhanced.com> Tue, 23 Dec 2003 15:08:41 +0000
```
The libblas soversion is the same as liblpack's in both Debian and
RHEL(/Fedora?) but the BLAS ABI hasn't changed at all recently, so I
think it should actually be 3.0.6, not 3.6.0.
|
@loveshack Okay, sounds like the "3" is just coincidence then. (A library increasing its |
@loveshack Do you see any issue with simply providing a symbolic link named |
You wrote:
@loveshack Okay, sounds like the "3" is just coincidence then.
(A library increasing its `soname` occasionally is not surprising to
me. But my question was motivated by the fact that I was under the
impression that netlib BLAS, which is what I think of when I see
`libblas`, simply did not experience the kinds of changes that would
break its ABI, since it was unrolled in a way that did not break old
functionality, but rather just added new operations. But I can sleep
fine not getting to the bottom of this one.)
That's what I think, though I haven't checked the BLAS ABI history. As
I said, I don't think it should be libblas.so.3, but at most .1.
Anyhow, it can't go backwards now.
|
You wrote:
@loveshack Do you see any issue with simply providing a symbolic link
named `libblas.so.3`?
For what purpose? It won't work as a dynamic substitute for the
original libblas.so.3 because the ELF soname is wrong.
I'm not totally in love with this idea, mostly
due to the aliasing of the `soname` of 3 onto libblis's (current)
`soname` of 0, but I'm nevertheless open to a symlink.
Never mind. I'll make an effort to get the packaging into Fedora
eventually -- and possibly try to shake up up the linear algebra
handling in it, but others have failed on that.
|
Okay, I suppose I hadn't thought of that. Hope there aren't any hard feelings, Dave, and that you understand that I'm just trying to balance our own project's conventions with how far we bend over backwards to accommodate existing BLAS conventions (beyond the BLAS API itself). We appreciate your involvement. Let us know how the Fedora thing goes. |
> For what purpose? It won't work as a dynamic substitute for the
original libblas.so.3 because the ELF soname is wrong.
Okay, I suppose I hadn't thought of that.
Maybe I didn't explain it properly in the "blas-subversion" thing I
wrote.
Hope there aren't any hard feelings, Dave, and that you understand
that I'm just trying to balance our own project's conventions with how
far we bend over backwards to accommodate existing BLAS conventions
(beyond the BLAS API itself).
I was trying to avoid you having to! I don't particularly expect it to
be in the BLIS distribution, but if it isn't in distributions, it's most
useful there, and I'd think most people's interest will be in BLAS for
existing applications. Are there applications using BLIS directly which
could be mentioned?
|
My apologies, I misunderstood. I thought you wanted BLIS to create a
By using BLIS directly, I take it you mean the "native" (typed- or object-based) BLIS APIs? We're not sure who are users are or what they might be using it for, though it's something we would love to know more about. Unfortunately, github doesn't do a great job of facilitating us to "track" our users or their use cases (perhaps understandably given the premium people place on privacy as of late). |
Sorry for the delay -- been ill.
You wrote:
> I was trying to avoid you having to! I don't particularly expect it
> to be in the BLIS distribution, but if it isn't in distributions,
> it's most useful there, and I'd think most people's interest will be
> in BLAS for existing applications.
My apologies, I misunderstood. I thought you wanted BLIS to create a
`libblas.so.3` as part of its standard `make install`. It sounds like
you were instead proposing that this be a feature of the rpm? (If so,
we are completely fine with that.)
Yes, it's purely a distribution thing. Sorry I seem to be
mis-communicating so much.
I'll try to have another look at making the Debian packaging consistent
with openblas' if that would be useful.
> Are there applications using BLIS directly which could be mentioned?
By using BLIS directly, I take it you mean the "native" (typed- or
object-based) BLIS APIs?
Yes, that's what I meant.
|
I wish I could give you an emphatic "yes," but to be honest we just don't know. We hope there will be plenty of applications in the future that make use of the native interfaces.
Feel free to do so (at your own pace). We welcome your contributions.
No worries. Hope you are feeling better. |
@nschloe If you have enough time to continue working on BLIS packaging, I can sponsor it for you. This is the initial checklist:
|
That could take a while. If you want quick progress, you just go ahead, take the debian folder from this repo and upload it yourself. |
@nschloe I've already got MKL into Debian official repo and I have many other packages to care. So I expect somebody else other than me to finish this package. |
@nschloe Hmm..... I've almost finished the package. Please have a look at https://salsa.debian.org/science-team/blis . |
@cdluminate Looks good to me. |
I don't have time to much with this immediately, but could we try to
coordinate between distributions before packages actually go in?
I'm currently going through the review process with Fedora
<https://bugzilla.redhat.com/show_bug.cgi?id=1591910> aiming for BLAS
compatibility based on
<https://loveshack.fedorapeople.org/blas-subversion.html>. (I'd rather
use Debian, but basically no-one does for HPC.) I thought there was a
clear Debian policy on linear algebra, but I went to look after starting
BLIS packaging, and it wasn't what I thought, and I think should be
improved. I'd expect to be able to substitute any BLAS(/LAPACK),
initially by installing packages according to suitability for the
platform, and at run time for whether or not I wanted an OpenMP version.
(The OpenBLAS example didn't go that far.) With the packages installed,
you should then be able to set ld.so.conf per HPC compute node and use
LD_PRELOAD/LD_LIBRARY_PATH as appropriate.
I also tried with GuixSD, which didn't seem prepared to listen to
experience with this and real HPC needs. I don't know what SuSE does.
|
@loveshack We have created subdirectories for different BLAS implementation so that one could use
With some additional work producing three versions of libraries is possible, i.e. I'm not sure what you mean exactly by
|
@loveshack This page is not a "policy" https://wiki.debian.org/DebianScience/LinearAlgebraLibraries |
You wrote:
With some additional work producing three versions of libraries is possible, i.e. `libblis-serial`, `libblis-pthread`, and `libblis-openmp`.
I'm not sure what you mean exactly by `I'd expect to be able to
substitute any BLAS(/LAPACK)`, but Debian has an alternatives system
which could change the default blas/lapack backend for the system.
I mean basically what you've done, as I understand it without having
looked at the current version. You can't currently use the alternatives
system in Fedora as the other BLASes don't support it. Also Fedora's
alternatives is different from Debian's, though it don't remember how,
and that may not be relevant. [I probably wouldn't bother with
alternatives in the stateless setup of the sort I'd use on heterogeneous
HPC cluster nodes if I still did system management -- just flip
ld.so.conf links in the image configuration according to the node type.]
That's getting rather off-topic, though.
|
You wrote:
@loveshack This page is not a "policy"
https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
Indeed, but my incorrect memory was that there was such a thing written
down for what linear algebra packaging should do. When I last looked,
that page was different anyhow. [I also needed to subvertg R and GSL, at
least.]
|
BLIS is automatically synced into Ubuntu devel branch (current codename: disco) https://launchpad.net/ubuntu/+source/blis Maybe this issue can be closed now. |
@cdluminate Agreed. Thanks for the nudge. |
Robert asked me recently, "What would it take for BLIS to be incorporated into Ubuntu?"
Some light Googling lead me to understand that there are four main repositories in Ubuntu: main, restricted, universe, multiverse. It sounds like we would be okay being in universe at least at first, especially if we need more time to prove ourselves suitable for main.
I then found this stackexchange thread on the topic. The most up-voted response breaks down some of the options. It appears that getting into Debian is the most comprehensive choice (also indicated here), as it would mean BLIS would be made available to users of both Linux distributions (Debian and Ubuntu).
Thanks to the work of Nico Schlömer, we already have someone involved with the project who knows how to create (and has created) PPA packages. The biggest hurdle, it seems, is to get a Debian Developer (DD) to become our sponsor. This begins with a Request-for-Sponsor (RFS) bug report in Debian's bug-tracking system. (The RFS is like an ad designed to pique the interest of developer to become our sponsor.) But we are not supposed to submit the RFS until we have our source package ready for a potential sponsor to download/build/install. I think, thanks to Nico's work, we are basically there. (Care the comment, @nschloe?)
Note that there is no guarantee that we will find a sponsor. There are a finite number of DDs, each with limited time and specific specializations/interests/preferences.
After we get a sponsor, I think we will need this sponsor to upload any future revisions of the package. This is probably the most concerning to me aspect to me since BLIS has been undergoing relatively frequent updates.
Bottom line, this appears to be a non-trivial amount of work. So we should discuss/think carefully about if and when this would make sense for us.
Please comment, if you like.
The text was updated successfully, but these errors were encountered: