-
-
Notifications
You must be signed in to change notification settings - Fork 10.9k
Wrong result from np.linalg.cholesky on 32-bit win32 in numpy 1.13.3 #9795
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
Comments
I can't think of other causes than a broken LAPACK/BLAS linalg library. Was the build changed between 1.13.1 and 1.13.3 (it appears yes, atlas was swapped for openblas)? Also, doesn't numpy have tests for cholesky that would have caught this? |
This issue probably can be handled just with the wheel build tags... |
No better using mingwpy build of later OpenBLAS commit : https://ci.appveyor.com/project/matthew-brett/numpy-wheels/build/job/uf1r7hsa6rmxe962 This is OpenBLAS commit 5f998ef How easy would it be to make a minimal test case for the OpenBLAS guys? |
Fairly easy, OpenMathLib/OpenBLAS#1318 |
Doesn't look to be an easy way to choose between ATLAS and OpenBLAS for building Windows wheels. The quick fix would be to use ATLAS for the four 32 bit windows wheels, then use OpenBLAS again when it is fixed. |
So, just to clarify the procedure for bad wheels, as opposed to bad source,
@rgommers Thoughts? The wheel names are already so arcane that I think adding a build tag is not much of a problem. |
@charris - I've built the 32-bit ATLAS wheels : https://ci.appveyor.com/project/matthew-brett/numpy-wheels/build/1.0.75 - just a hack for now, using an older numpy-wheels commit. I've downloaded them, got the build tags done, can upload on your say-so. |
@matthew-brett Let's give it a shot. I'll download them once they are up in order to redo the hashes for Github. |
Oh, and which cythonized version did you use? Just want to make sure it was 0.26.1. |
Oops - no - it was Cython 0.27. Silly me. Build tag 2 I guess. |
Done rebuild with Cython 0.26.1 : https://ci.appveyor.com/project/matthew-brett/numpy-wheels/build/1.0.76 Checked they are using ATLAS, and are not the same as previous wheels built with Cython 0.27. Added build tag. Ready to upload. This will be build tag 2... |
Sounds good. |
Done. |
Great, thanks. I'll leave the other files in for a bit to see if PyPI works correctly with them there. |
|
Ok, seems to work now (after charris deleted the old wheels --- or due to something else). |
My internet connection is too slow to search for it now, but I'd like to point out again that we tried using
Unless we experiment with this thoroughly (not in the main numpy account) and prove that everything works as expected, I'd say that either broken wheels or broken source means we pull the whole release if the breakage is bad enough to warrant that. |
If we want openblas for the windows numpy wheels, gh-9645 may be a better way to go, because that relies on vanilla mingw-w64 rather than on mingwpy. |
@rgommers, If this works I'm inclined to leave it be. That said, IIRC, the reason for not allowing reuse of file names was that synchronizing different servers could take time. I don't know that build tags solve that problem. I think we need more feedback from the PyPA people. |
Before closing this, consider fixing the numpy-wheels repo configuration. |
I thought we already had found that mingwpy caused problems. I would recommend using the same procedure in the source repository as the release repository. |
@xoviat - yes - that's a good idea. Do you have any interest in porting your stuff over to the |
Yes but I think the pull request on this repository needs to be merged first (#9645). |
For the build tags - I'm pretty confident that they work - I've used them before a few times, and we're testing it again now, with this fix. I have always deleted the previous versions after uploading the new build tag, but I suspect that's not necessary. |
I'll look at the wheels repository sometime soon. |
Now that I've looked at it in a little more detail: what you currently did should be robust. It's not a build tag like |
I believe the build tag has to start with a digit - see: https://github.com/pypa/pip/blob/master/src/pip/_internal/wheel.py#L488 |
@matthew-brett you're right. And it's not just an implementation detail, there's an actual spec: https://www.python.org/dev/peps/pep-0491/#file-name-convention I thought there were also arbitrary tags, but doesn't look like that's right. The |
The key distinction here is that |
@njsmith Would be good if build tags could also be used with sources, although the naming scheme might be too flexible for that. I suspect the possiblity of different source builds was overlooked. |
@charris I believe (for better or for worse) the concept is exactly that a given release has 1 source and possibly lots of builds, and if you want to roll a new sdist then you should bump the actual version. I guess this makes some sense; if you have multiple source builds then how do you know which ones were used for which binary builds? |
I think the general idea is that a source distribution is as close to a
source checkout as possible (specifically, there should be no cythonized
files in the source distribution). If that's not the case, then pypi won't
play well with what you're trying to do.
|
Cythonized files in the source distribution work fine, but yeah, if you want to regenerate the cython files it means you have to bump the version number. |
I'm going to close this. The NumPy problem seems to have been solved by moving to vanilla mingw-w64. |
The following program produces wrong results for Numpy 1.13.3 for the 32-bit win32 wheel
numpy-1.13.3-cp36-none-win32.whl
:it prints
The 64-bit windows wheels appear to be OK.
The result for Numpy 1.13.1 (
numpy-1.13.1-cp36-none-win32.whl
) is also OK:The text was updated successfully, but these errors were encountered: