-
Notifications
You must be signed in to change notification settings - Fork 667
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
TST, CI: add ARM64 Graviton 2 to CI #2956
TST, CI: add ARM64 Graviton 2 to CI #2956
Conversation
Codecov Report
@@ Coverage Diff @@
## develop #2956 +/- ##
========================================
Coverage 93.05% 93.05%
========================================
Files 186 186
Lines 24611 24611
Branches 3188 3188
========================================
Hits 22902 22902
Misses 1661 1661
Partials 48 48 Continue to review full report at Codecov.
|
Looks like subtle behavior differences in Looking at the first few lines of a
|
A bunch of |
Perhaps also useful to know if we really need |
Hello @tylerjereddy! Thanks for updating this PR. We checked the lines you've touched for PEP 8 issues, and found:
Comment last updated at 2020-10-18 23:56:41 UTC |
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.
We'll see if this passes ARM64 CI now..
@pytest.mark.xfail((os.name == 'nt' | ||
and sys.maxsize <= 2**32) or | ||
platform.machine() == 'aarch64', | ||
reason="occasional fail on 32-bit windows and ARM") |
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 doesn't actually fail on the gcc 115
gcc compile farm ARM64 machine, but the test is clearly already flaky on some other platforms--maybe depends on character encoding/support stuff?
hmm, I still need to iterate more it seems; the partial switch to |
If I use
The "bad" value changes to 36 with |
* start testing MDAnalysis on ARM64 using new AWS Graviton 2 architecture available in Travis CI * testing on my fork shows only two failures in the MDAnalysis test suite using a fairly minimal set of dependencies; we can probably either fix those or skip them and open an issue * the test failures are: `test_written_remarks_property` `TestEncoreClustering.test_clustering_three_ensembles_two_identical` * run time for this CI entry is about 23 minutes, which is solid for ARM; we save a lot of time using experimental upstream wheels in some cases and excluding (source builds of) dependencies where possible until the ARM64 binary wheel ecosystem matures a bit more
* adjust `CAffinityPropagation()` C-level function to use `double` instead of `float` in some strategic locations that allow the `test_clustering_three_ensembles_two_identical()` test to pass on gcc115 ARM64 machine * mark `test_written_remarks_property()` as a known failure on ARM64; it fails in Travis CI on that platform, but not on gcc115 ARM64 machine; that said, this test is already known to be flaky on Windows 32-bit (may depend on character settings on machine?)
* reduce optimization level of MDAnalysis builds on ARM64 to avoid problems with `ap.c` causing test failures on that architecture * revert any source changes to `ap.c`
da244e7
to
1deaff1
Compare
Selectively reducing compiler optimization level to |
@lilyminium @richardjgowers Can you live with the ARM64 shims here? CI is green now; the new job still runs in ~23 minutes. I think we'll be able to bump up the optimization level a bit-- |
It's interesting that the tests still run in a reasonably short amount of time even at O1. Even though they output incorrect values, are they substantially faster at 02/03? It would be good to eventually work out if we can isolate the opt flag that's causing this. If anything it would help us understand how/if the code can be rewritten in a safer manner. |
The test suite as a whole in CI is about the same runtime at |
Some performance loss in the testsuite may also be made up by reduced build time with optimizations turned down. In any case, I think correctness and portability trump the hunger for performance here, especially since I've isolated it to a single architecture. Maybe open an issue to perfect things on ARM64 eventually, but that will be a separate task I think--the build/iteration times on ARM64 can still be slow on some of the openly available machines, and we're really only using a small subset of dependencies until that ecosystem matures anyway. |
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.
Yeah this looks like a good step towards having Arm compatibility, thanks @tylerjereddy !
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 for all the work here @tylerjereddy Is the only thing that needs changing before we claim "minimal ARM support" the use of the scipy dev wheels? (mainly thinking as to whether or not a CHANGELOG entry is warranted)
Yeah, I released SciPy |
Fixes issue #1989, completes PR #2956 ## Work done in this PR * Switches CI to using recently released SciPy `1.5.3` with "official" Linux ARM64 wheels over the weekend, instead of the previous "special"/unreleased wheels * Add a `CHANGELOG` entry to reflect preliminary MDAnalysis support for the Linux ARM64 platform (minimal dependencies)
* TST, CI: add ARM64 Graviton 2 to CI * start testing MDAnalysis on ARM64 using new AWS Graviton 2 architecture available in Travis CI * testing on my fork shows only two failures in the MDAnalysis test suite using a fairly minimal set of dependencies; we can probably either fix those or skip them and open an issue * the test failures are: `test_written_remarks_property` `TestEncoreClustering.test_clustering_three_ensembles_two_identical` * run time for this CI entry is about 23 minutes, which is solid for ARM; we save a lot of time using experimental upstream wheels in some cases and excluding (source builds of) dependencies where possible until the ARM64 binary wheel ecosystem matures a bit more * MAINT: ARM64 shims * adjust `CAffinityPropagation()` C-level function to use `double` instead of `float` in some strategic locations that allow the `test_clustering_three_ensembles_two_identical()` test to pass on gcc115 ARM64 machine * mark `test_written_remarks_property()` as a known failure on ARM64; it fails in Travis CI on that platform, but not on gcc115 ARM64 machine; that said, this test is already known to be flaky on Windows 32-bit (may depend on character settings on machine?) * MAINT: MR 2956 revisions * reduce optimization level of MDAnalysis builds on ARM64 to avoid problems with `ap.c` causing test failures on that architecture * revert any source changes to `ap.c`
* TST, CI: add ARM64 Graviton 2 to CI * start testing MDAnalysis on ARM64 using new AWS Graviton 2 architecture available in Travis CI * testing on my fork shows only two failures in the MDAnalysis test suite using a fairly minimal set of dependencies; we can probably either fix those or skip them and open an issue * the test failures are: `test_written_remarks_property` `TestEncoreClustering.test_clustering_three_ensembles_two_identical` * run time for this CI entry is about 23 minutes, which is solid for ARM; we save a lot of time using experimental upstream wheels in some cases and excluding (source builds of) dependencies where possible until the ARM64 binary wheel ecosystem matures a bit more * MAINT: ARM64 shims * adjust `CAffinityPropagation()` C-level function to use `double` instead of `float` in some strategic locations that allow the `test_clustering_three_ensembles_two_identical()` test to pass on gcc115 ARM64 machine * mark `test_written_remarks_property()` as a known failure on ARM64; it fails in Travis CI on that platform, but not on gcc115 ARM64 machine; that said, this test is already known to be flaky on Windows 32-bit (may depend on character settings on machine?) * MAINT: MR 2956 revisions * reduce optimization level of MDAnalysis builds on ARM64 to avoid problems with `ap.c` causing test failures on that architecture * revert any source changes to `ap.c`
* TST, CI: add ARM64 Graviton 2 to CI * start testing MDAnalysis on ARM64 using new AWS Graviton 2 architecture available in Travis CI * testing on my fork shows only two failures in the MDAnalysis test suite using a fairly minimal set of dependencies; we can probably either fix those or skip them and open an issue * the test failures are: `test_written_remarks_property` `TestEncoreClustering.test_clustering_three_ensembles_two_identical` * run time for this CI entry is about 23 minutes, which is solid for ARM; we save a lot of time using experimental upstream wheels in some cases and excluding (source builds of) dependencies where possible until the ARM64 binary wheel ecosystem matures a bit more * MAINT: ARM64 shims * adjust `CAffinityPropagation()` C-level function to use `double` instead of `float` in some strategic locations that allow the `test_clustering_three_ensembles_two_identical()` test to pass on gcc115 ARM64 machine * mark `test_written_remarks_property()` as a known failure on ARM64; it fails in Travis CI on that platform, but not on gcc115 ARM64 machine; that said, this test is already known to be flaky on Windows 32-bit (may depend on character settings on machine?) * MAINT: MR 2956 revisions * reduce optimization level of MDAnalysis builds on ARM64 to avoid problems with `ap.c` causing test failures on that architecture * revert any source changes to `ap.c`
* TST, CI: add ARM64 Graviton 2 to CI * start testing MDAnalysis on ARM64 using new AWS Graviton 2 architecture available in Travis CI * testing on my fork shows only two failures in the MDAnalysis test suite using a fairly minimal set of dependencies; we can probably either fix those or skip them and open an issue * the test failures are: `test_written_remarks_property` `TestEncoreClustering.test_clustering_three_ensembles_two_identical` * run time for this CI entry is about 23 minutes, which is solid for ARM; we save a lot of time using experimental upstream wheels in some cases and excluding (source builds of) dependencies where possible until the ARM64 binary wheel ecosystem matures a bit more * MAINT: ARM64 shims * adjust `CAffinityPropagation()` C-level function to use `double` instead of `float` in some strategic locations that allow the `test_clustering_three_ensembles_two_identical()` test to pass on gcc115 ARM64 machine * mark `test_written_remarks_property()` as a known failure on ARM64; it fails in Travis CI on that platform, but not on gcc115 ARM64 machine; that said, this test is already known to be flaky on Windows 32-bit (may depend on character settings on machine?) * MAINT: MR 2956 revisions * reduce optimization level of MDAnalysis builds on ARM64 to avoid problems with `ap.c` causing test failures on that architecture * revert any source changes to `ap.c`
Fixes issue MDAnalysis#1989, completes PR MDAnalysis#2956 ## Work done in this PR * Switches CI to using recently released SciPy `1.5.3` with "official" Linux ARM64 wheels over the weekend, instead of the previous "special"/unreleased wheels * Add a `CHANGELOG` entry to reflect preliminary MDAnalysis support for the Linux ARM64 platform (minimal dependencies)
start testing MDAnalysis on ARM64 using
new AWS Graviton 2 architecture available
in Travis CI
testing on my fork shows only two failures
in the MDAnalysis test suite using a fairly
minimal set of dependencies; we can probably
either fix those or skip them and open an issue
the test failures are:
test_written_remarks_property
TestEncoreClustering.test_clustering_three_ensembles_two_identical
23 minutes, which is solid for ARM; we save a lot
of time using experimental upstream wheels in some
cases and excluding (source builds of) dependencies
where possible until the ARM64 binary wheel ecosystem
matures a bit more