Skip to content
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

Implement compile-time check for minimum LAPACK version #9659

Open
rgommers opened this issue Jan 5, 2019 · 6 comments
Open

Implement compile-time check for minimum LAPACK version #9659

rgommers opened this issue Jan 5, 2019 · 6 comments
Labels
Build issues Issues with building from source, including different choices of architecture, compilers and OS scipy.linalg task A straightforward change, verification or fix.

Comments

@rgommers
Copy link
Member

rgommers commented Jan 5, 2019

In v1.2.0 we increased the minimum required LAPACK version to 3.4.1. That created, for the first time in a very long time, a situation where some distros and macOS ship LAPACK implementations that don't meet our requirements. We now don't check for that situation thoroughly, but may fail at import time (e.g. gh-9657).

We should fix this as far as possible. Not completely trivial to do, since there is no API for this. Probably the best way is to do a compile time check for the presence of some function that was introduced in the minimum LAPACK version we require.

@rgommers rgommers added task A straightforward change, verification or fix. scipy.linalg Build issues Issues with building from source, including different choices of architecture, compilers and OS labels Jan 5, 2019
@rgommers rgommers added this to the 1.3.0 milestone Jan 5, 2019
@ilayn
Copy link
Member

ilayn commented Jan 5, 2019

If there is a possibility to initially compile a single symbol, ilaver returns back the version of LAPACK. But I'm not sure how to trigger this information.

@ev-br
Copy link
Member

ev-br commented Jan 5, 2019

I guess one can compile and run a simple program in a subprocess?

numpy seems to do something fancier at build time: https://github.com/numpy/numpy/blob/master/numpy/core/setup.py#L667

@tylerjereddy
Copy link
Contributor

Looks like try_link is from vanilla distutils here. Some of the functions in that module do indeed look useful for this kind of thing. I've been thinking of something somewhat similar in numpy/numpy#12523, but this is a useful reminder that there may be some tricks I hadn't considered for "inline compilation" to check basic things like version numbers.

@ev-br
Copy link
Member

ev-br commented Jan 17, 2019

One other option is of course to implement the version check as a test.

@tylerjereddy tylerjereddy modified the milestones: 1.3.0, 1.4.0 Apr 17, 2019
@tylerjereddy
Copy link
Contributor

Bumping the milestone on this one -- I've had some success doing this kind of thing for OpenBLAS in NumPy in numpy/numpy#12790, but experience there suggests we probably won't want to rush this in before cutting the branch

@rgommers rgommers modified the milestones: 1.4.0, 1.5.0 Nov 10, 2019
@rgommers rgommers modified the milestones: 1.5.0, 1.6.0 May 8, 2020
@rgommers rgommers modified the milestones: 1.6.0, 1.7.0 Dec 1, 2020
@tylerjereddy tylerjereddy modified the milestones: 1.7.0, 1.8.0 May 27, 2021
@tylerjereddy
Copy link
Contributor

bumping milestone

@rgommers rgommers removed this from the 1.8.0 milestone Nov 30, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Build issues Issues with building from source, including different choices of architecture, compilers and OS scipy.linalg task A straightforward change, verification or fix.
Projects
None yet
Development

No branches or pull requests

4 participants