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
Bump OpenBLAS to 0.3.3 #87
Bump OpenBLAS to 0.3.3 #87
Conversation
Hi! This is the friendly automated conda-forge-linting service. I just wanted to let you know that I linted all conda-recipes in your PR ( |
I wonder whether we should split openblas to libblas and liblapack like Debian does. libblas has a stable API while liblapack is not. Most packages in conda-forge depends on libblas. cc @msarahan |
Well technically the BLAS and LAPACK APIs are quite old and stable. NETLIB of course being the model. Ultimately we end up pinning exactly as OpenBLAS includes the version in the SONAME down to the patch. Doubt they actually break their API that often though. Should add whatever API they are breaking is not something we are likely using anywhere. We could discuss with them to adjust their SONAME to be a bit more lax. |
No they don't. |
That file is a symlink to the actual library (e.g. |
That's not how
|
Good point. This also checks out on macOS as well surprisingly. FWIW we had decided on this pinning due to some discussion in issue ( conda-forge/numpy-feedstock#1 ) and set it more generally in PR ( conda-forge/conda-forge.github.io#198 ). Just so I understand, is your point that we should consider relaxing the However we will need a rebuild for this release as things were broken in the move to 0.3.0. Also things have broken historically in patch releases. Though admittedly not so often. |
@conda-forge/core, thoughts? |
Yes. (I'm not sure about lapack symbols though.)
No, 0.3.0 is ABI compatible with 0.2.20. (Just not API compatible. |
What concerns do you have with the LAPACK symbols? Are there specific issues that you are aware of? IDK haven't read all the warnings in that report. It's quite long. If that's all that is in there, maybe it's less of an issue (especially as they went to and not from In any event, even to relax the pinning we will need to rebuild many packages to accept the relaxed pinning. Personally would rather just start with relaxing on 0.3.0 given some older versions of 0.2.* were problematic either because of how we built them (e.g. without |
I know that symbols are added in new versions and some symbols that were deprecated a decade ago were removed. Is there a way to request a lapack report in abi-laboratory?
With LAPACK adding new symbols, we definitely want to have cb3 pinning where run pin >= version built with. |
Sure, raise an issue on this tracker with what you have in mind. My understanding is OpenBLAS basically vendors NETLIB LAPACK. Not sure that they are doing anything too special with it, but we should give it a closer look to be sure or perhaps just ask upstream about their development model with regards to LAPACK. |
IDK if we are unsure about LAPACK, my vote is to stick with this pinning even if it is tight. Thoughts from others, @conda-forge/core? |
How many things are built against openblas? I ask because this is what should guide our decision. If loads of stuff is built against it, it is more compelling to do what @isuruf suggests, so that rebuilds are not required as often. On the other hand, if there aren't many, the cost of potential incompatibility issues may outweigh a smaller rebuild cost. I have no strong opinion either way. I think the bot makes or will soon make rebuilds easy enough that we shouldn't be too concerned about overly narrow openblas constraints. |
My naive search finds 69 packages in conda-forge which depend on
|
I don't see obvious packages like numpy, scipy in that list. |
The number seems mostly right, though. I get 70 on
|
The import json
pkgs = json.load(open('./out.json'))
has_openblas = set()
for pkg_list in pkgs.values():
for i in pkg_list:
if i['channel'] == 'conda-forge':
has_openblas.add(i['name'])
for i in sorted(has_openblas):
print(i)
|
It's getting frequent. 3 releases in the last 3 months. |
That seems to be more of a product of maintenance work changing hands. Would expect the frequency goes down a bit once the process is a bit more routinized. Though I could be wrong. |
Do you want the bot to manage the rebuild for this? |
That would be very useful. Is that something you would be interested in working on? |
It shouldn't be too hard, this is what @justcalamari put together for py3.7. regro/cf-scripts#305 I imagine we can do something similar for openBLAS. |
This one looks good to go. @isuruf should we pull the trigger or do you have any more comments? |
I think we should figure out a better pinning strategy. 0.3.3 is set to release in a few days. Basically one release per month. Before we upgrade all our dependencies a new release will be out. |
Maybe, I guess that depends on how fast we can complete the rebuild. |
But what's the point though? If patch releases are compatible with each other, we should pin with x.x instead of x.x.x |
Are they? I thought there was concern about LAPACK or is that no longer a concern? |
I'm not super familiar with the details but it seems like |
The LAPACK point came up earlier in the thread. FWIW there is now LAPACK API/ABI compatibility info. While somewhat related, the real question is how often does OpenBLAS update their copy of LAPACK and how do their patches affect compatibility. |
Looking into it, OpenBLAS 0.3.2 updated their lapack to 3.8.0 from 3.7.0, which should have pulled in the 3.7.1 breaking changes in a few symbols. OpenBLAS ships their LAPACK in |
Bumped to OpenBLAS 0.3.3, which landed a couple weeks back. cc @CJ-Wright |
Just out of curiosity, what else is needed for this merge? |
Thanks all. Glad to see this one landed 😄 |
Checklist
0
(if the version changed)conda-smithy