-
Notifications
You must be signed in to change notification settings - Fork 21
Conversation
f3e7581
to
d58f5b6
Compare
6844808
to
7f89729
Compare
The 32 bit builds are failing the new I can try to reproduce the failure locally using the manylinux2010 32-bit image |
IIRC, the tests are run in a docker image. I wonder if the correct image is being used? |
@r-devulap do you have an idea why the Edit: @charris is correct, this is with the matthew-brett 32 bit image using wheelhouse/numpy-1.19.0.dev0+4edd437-cp36-cp36m-manylinux2010_i686.wh produced by the build-wheel step |
@charris is that wheel uploaded anywhere, or is it only local to the CI run? |
@mattip Which wheel? |
The wheels from this PR: specifically wheelhouse/numpy-1.19.0.dev0+4edd437-cp36-cp36m-manylinux2010_i686.whl |
No, the wheels generated in PRs are not uploaded, the rackspace access key isn't decoded in PR's. I don't know how to access them otherwise. We can change that as a travis option, I think, but then the rackspace repository would be contaminated. I wonder if we could send wheels to someplace like dropbox? |
Not a big deal, I can build it locally since both the build and the test are scripted runs. |
The 32-bit docker that fails and the 64-bit that pass have the same |
mfpmath=sse vs mfpmath=387? |
@mattip the ULP difference is not 8, it is 8.38861e+06 ULP. Something is off (like computing ULP difference between 2 NAN's or something). Can you point me to a docker image I can try running locally to debug? |
I see this in the error message: |
The same docker that runs the azure tests successfully fails to properly use the wheel built here. I am now going to try to both build and test with the azure script from numpy/numpy. Note that this repo builds a wheel in the multilinux2010 docker and then tests it in a different one. |
Ahh, so maybe it is failing to properly catch the NAN error conditions in these dockers, and somehow Azure does something special? |
Do we set that at all in the gcc flags, or is there an |
@r-devulap : I can run the manylinux docker like
Once in the docker, you will want to The problem only shows up when compiling inside the docker of the manylinux image. |
Thanks @mattip, I did confirm the failure and it happens for a NAN to NAN comparison, not sure what the difference is between this and other linux Glibc that it fails for this. Will dig in further tomorrow. |
As always, there is more than one problem. First, Second,
Edit: loop name, proper define |
For completeness, this is what
Edit: SSE2 is detected, but |
Edited: the first problem is |
xref numpy/numpy#15593 for the use of a too-specific NAN For the dissonance between SSE2 detection methods, ping @seiko2plus |
The log problem is solved by added |
@mattip, The short answer, |
Now better, but there are still 32-bit failures. We should probably add a manylinux201 i686 run to the regular CI to pick these up. Is there an accepted way to skip test failures in certain builds? Or perhaps we should disable 32-bit wheel builds until we can work out the kinks. Edit: add "wheel" to last line |
Nope, still getting a segfault on linux32. |
Close reopen to upgrade openblas to 0.3.9 beta |
exclude: | ||
# Exclude the default Python 3.6 build | ||
- python: 3.6 | ||
jobs: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lines 19-here update the confusing travis.yml: we don't have any python3.6 jobs to exclude, sudo
is no longer needed, matrix
should be replaced by jobs
.
@@ -7,44 +7,39 @@ function build_wheel { | |||
local lib_plat=$PLAT | |||
if [ -n "$IS_OSX" ]; then | |||
install_gfortran | |||
else | |||
# For manylinux2010 builds with manylinux1 openblas builds | |||
$use_sudo yum install -y libgfortran-4.4.7 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is needed to use the manylinux2010 openblas builds on the manylinux1 wheel builds. libfortran
will be statically linked (uses the *.a
file) so the wheels are still valid.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds like the comment is backward. Maybe "Needed for manylinux1 wheels using libraries built for manylinux2010."
Builds are green |
config.sh
Outdated
(cd / && $use_sudo tar zxf $tar_path) | ||
# Use the same incantation as numpy/tools/travis-before-install.sh | ||
python -mpip install urllib3 | ||
target=$(python numpy/tools/openblas_support.py) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Strange to call a command a target. Maybe explicitly use python
on the next line. Where does the file come from?
EDIT: nvm.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a strange construction, it could use a comment.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like what it does is download all the libraries into /var/tmp/openblas/
. This could become rather inefficient if the libraries become numerous.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Adding a comment and a todo to use site.cfg instead of copying.
# Environment variables for build | ||
OPENBLAS_VERSION="v0.3.7" | ||
MACOSX_DEPLOYMENT_TARGET=10.9 | ||
CFLAGS="-msse2 -std=c99 -fno-strict-aliasing" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is comes from env_vars.sh
, correct? I assume the extra bit is -msse2
. Is the latest multibuild is updated to use this. Is it documented in the README?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The needed bit is the -msse2
. Commenting here, do you have a place in the README you would like to see it documented as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Added a line to the README, as well as explaining the OpenBLAS download
} | ||
|
||
function get_test_cmd { | ||
local extra_argv=${1:-$EXTRA_ARGV} | ||
echo "import sys; import numpy; \ | ||
sys.exit(not numpy.test('full', \ | ||
extra_argv=[${extra_argv}]))" | ||
extra_argv=['-vv', ${extra_argv}]))" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For debugging?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes
LGTM, I'll put this in when the tests finish. Thanks Matti. |
Is changing |
Updated appyveyor too |
Merged. |
Hmm, two of the 32 bit builds segfaulted in the merge. |
Grrr. I was hoping that the move to xenial would fix those pesky 32-bit segfaults. Maybe we should revert the |
Me too :) SSE2 has been around for 20 years, in fact I think NumPy requires it and we made that decision some time ago. Remind me what the compiler problem is. |
If we compile with sse2 we get segfaults. If we compile without it, we get test failures on 32-bit since
|
Hmm. Is the problem only in |
It is something new in master: we now have sse-specific loops for many ufuncs. The latest crop of sse/avx loops added accuracy tests. This pointed out a deficiency in the glibc version of some of the functions (particularily I see that on Azure the builds also do not fail. There the tests are run in the multibuild2010_i686 image on top of Ubuntu 18.04, here we run in a Ubuntu 16.04 (xenial) image on top of Ubuntu 18.04 (bionic). Things to try:
|
test latest version of tools before adding new platforms, also check openblas is properly installed