-
Notifications
You must be signed in to change notification settings - Fork 125
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
Ubuntu 18.04 LTS linking error #450
Comments
Unfortunately we know. It is a known issue in how openblas is complied in Ubuntu. You need to recompile openblas and install it manually. You can see how we deal with it in the docket files in the repository: https://github.com/owlbarn/owl/blob/master/docker/Dockerfile.ubuntu EDIT: this is no longer the correct file to look at, it has been changed with an internal customization that should not be used as template. The correct file was: https://github.com/owlbarn/owl/blob/c832b0ac1459b7694d8d666f245c18d6ae1a0430/docker/Dockerfile.ubuntu |
Thanks. Probably, It's worth mentioning in the documentation |
That seems a good idea. I don't have time to touch it at the moment, but a PR to https://github.com/owlbarn/owl_guide/blob/master/book/chapter/install.rst would be really welcome |
Ubuntu 20.04, which installs lapack 3.9.0 per default, doesn't show this issue anymore. |
@kkirstein thanks for the heads up. Great news! |
My god... that makes the software so unportable... I am bailing out of owl. |
@UnixJunkie What in particular? All other libraries have similar problem, that's why practically all of them ship their binary version of openblas bundled with the library itself (there was a long discussion for example in the numpy's mailing list a number of years ago). Recompiling blas has always been a solution, and the maintainers of ubuntu's openblas did not want to address this problem when we asked. At least now you can install owl without recompiling openblas also on ubuntu. In most other distributions and on osx it has always worked without problems. |
Yes, I can install owl, but then I cannot link against it on Ubuntu 18.04 ... |
@mseri Then, the proper fix would be for owl to ship its own binary version of openblas and not rely on the system-wide-installed one. |
You can if you use a re-compiled openblas. This has been an issue for ages, it was broken also in trusty, we contacted the maintainers with no success, there was an issue opened by other people hit by the same problem in their libraries, but it has been unaddressed ever since. We had also thought to vendor openblas, but it was affecting the compilation time of owl massively, and it was only an issue in ubuntu. Once we have a good strategy to deliver binary system-dependent blobs, we can ship owl with its own precompiled openblas, but for now we have not found a way. |
This was discussed openly in the past we don't have a good strategy for the binary blobs. I am very open to suggestions though. |
Having owl being more portable is more important than having owl compiling faster. |
@Chris00 might know because of his https://github.com/Chris00/L-BFGS-ocaml |
Fair enough, but we need help with that. Over 10 minutes of compilation time on each update and during development was unbearable. Maybe it is no-longer an issue on recent hardware but I still think the ideal would be the precompiled binary (not affecting performances too much and working on all hardware supported by ocaml and openblas) with an option to link a custom install. For that we need help because we were not able to find a way to do it properly |
Awesome, I am all ears! |
It might be useful to create a PPA for this version of openblas and include instructions for adding it. I wonder if we can add it to the ocaml PPA @avsm runs. |
Isn't that nearly the same as compiling openblas manually though? |
No PPA is binary downloads AFAIK. |
Yes, but users will still need to add the custom repository and manually install the special openblas. We must also make sure to not affect any other openblas installation they might have. |
a. Is this custom openblas incompatible with other uses? |
a. Don't know. But since we need to go with an extra complication just for ubuntu, I start thinking it would make sense to steer the effort to retry to find a decent way to vendor openblas in owl directly (and, if it is improved, accept to pay the price for the first compilation time). |
Just to clarify: I will be very happy if somebody knows how to do it and does it. It is probably easy if you already know what to do: my only experience creating debian packages is from something like two decades ago, with checkinstall doing it for me, when I had just moved from slackware and wasn't bothered to learn how to package for debian :P |
So the other option is just to literally include the binary/ies in the owl source tree -- at least until 20.04+ becomes the standard. It's enough to just support AMD64 as that's the most used platform at this point -- other platforms are more sophisticated and their users can figure out how to recompile. |
That's right. One downside of it is that we will increase building time. Of course, we could bundle openblas into a separate |
I don't follow -- why would build times increase? There's no need to build openblas every time -- build it once on a single machine and add the vendored binaries to the repo (you can perhaps use a submodule if you want to keep this repo clean). |
Because I was thinking of vendoring sources instead: that would avoid the need to build binaries for each platform and have a way to make opam download the right one. |
Maybe an optional dependency to the owl opam package could do the source install of the required version of openblas (for people who want/need it). |
Hi,
Some time ago I decided to give Owl a try and installed it on my MacBook. It work like a charm. But when I try to build my project with Owl on the server I get a bunch of linking errors:
And it looks like my LAPACKE library really doesn't have those symbols:
objdump -T /usr/lib/x86_64-linux-gnu/liblapacke.so.3.7.1 | grep -i 'slatms'
gives nothing.What am I doing wrong?
The text was updated successfully, but these errors were encountered: