-
-
Notifications
You must be signed in to change notification settings - Fork 25.8k
Arm64 CI setup with TravisCI #17996
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
Arm64 CI setup with TravisCI #17996
Conversation
Maybe the test failure is caused by a corruption of the It would be worth making the dataset concurrent-safe by downloading the files to temporary filenames and then renaming at the end to ensure atomic operations. |
I will work on making the download safe in another PR. |
Apparently there is no easy way to make the downloaders truly concurrent safe. So maybe prefetching the datasets sequentially to a cache folder is better. |
Overall this looks promising, the ARM CI here runs in 28min including 10min for the tests suite on 32 (I imagine shared) CPUs. The build time should decrease once ccache starts to work. We could probably run it for each commit on master or in a cron job, not sure. Now there are two categories of failing tests,
I won't be able to look into this in the next few days, so if anyone wants to investigate don't hesitate to push to this PR. |
I would go for cronjob + a flag in the commit message to make it possible to trigger the tests manually in PRs prior to merging ARM related fixes. |
The ICC build failure is unrelated and probably transient:
|
@jeremiedbb any idea why we fetch |
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.
LGTM to me on my end. Ready for final review.
FYI @rth, I believe the scikit-learn/scikit-learn folder is automatically added to the PYTHONPATH by travis hence the fact that the toplevel conftest.py is already picked up by pytest without the need to copy it to the test folder. |
Thanks for your perseverance in finding this issue @ogrisel ! I also have no idea why I think there are failing tests in other TravisCI builds, that's expected since the scipy-dev build fails on master. We can probably address that in a separate PR. |
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.
Thanks @ogrisel! LGTM.
As mentioned above, I would say the other CI failure in Travis CI are unrelated to this PR?
item.add_marker(marker) | ||
# Known failure on with GradientBoostingClassifier on ARM64 | ||
elif (item.name.endswith('GradientBoostingClassifier') | ||
and platform.machine() == 'aarch64'): |
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.
I'm still confused on the "aarch64" vs "ARM64" since the latter can also happen apparently https://github.com/python/cpython/blob/0c4f0f3b29d84063700217dcf90ad6860ed71c70/Lib/test/test_regrtest.py#L662
Anyway the the issue where this doctest failure was originally reported #17797 was also aarch64 so it's probably fine to merge as is
No but it's just packages available in the apt repository, not the package we're installing, right ? |
|
Indeed I restarted the icc-build to check if the i386 hash mismatch could be reproduced and now it fails with:
They are probably in the process of updating the apt repo. |
The last arm64 has a failed doctest:
There is not |
But |
But most of the time it passes. It's probably random variations at some lower decimals that trigger the switch between the 2 notations. |
LGTM. I would just add the new tag there: https://scikit-learn.org/stable/developers/contributing.html#continuous-integration-ci |
I am even thinking that in the near future we will probably have to run this CI all the time if manufacturer like Apple is selling personal computers with these processors |
Merged. Thanks all! |
Experiment with Arm64 CI setup using TravisCI, since we already have it activated. It's a similar setup to that used by numpy.
Closes #13073