-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Add ARM tests on Travis #1864
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
Add ARM tests on Travis #1864
Conversation
Looks like it almost made it in time, pity qemu is so slow when it has to emulate a cpu architecture. |
Maybe it is possible to sabotage slow tests by not installing gfortran and make the builds finish in time? It is like 10% of time still left to do at that point of failure if it was x86_64 |
Doubt it - he already dropped LAPACK and CBLAS from the build if I read that correctly. |
Uhm... I can try, when I have time. However, I will do an emulated build locally, as I do not have an ARM64 device at hand. I do use my RPi2s for ARM32v7 builds when needed for my project. As for the other thing, i.e., the controversy, I do not have much information (and I am not knowledgable, at all, when it comes to architectures). But what I can see there is that it might be a clang related thing (the build starts and proceeds with gcc). It might be worth trying with some
I had thought about the same thing. I have created an organization EDIT. Well, it indeed helped --- now it times out at 99% 🤣 Anyways... It was a nice try, IMO.
Correct. That was intentional, as I had thought that the BLAS part could be more than enough to test if the builds proceed. |
MUSL is tested in other alpine linux tests , does not hurt to test extra. Debian (and glibc) might be 1c bigger to stuff in 50 minutes we have... I think first thing that does not time out is already a revolution.... |
Well, base image for Alpine is ~5MB whereas Debian's slim images are around 17MB. But you are probably right in that when we bundle them together with glibc and friends, they will eventually add up and exceed the size of Alpine by far. Anyways... It is a pity that the builds timeout at 99% :( |
Maybe restricting the build to the static libopenblas would help (though this would drop the completeness check with gensymbol/linktest.c) |
Either way worth keeping as an open PR for reminder and retrying when ARM code changes a lot.. |
BUILD_SHARED=NO does not get us past 98/99 percent either. Trying with make -j 3 now in my fork although I doubt it is i/o-bound. |
According to pkgs.alpinelinux.org, arm_neon.h should be available in /usr/lib/clang/5.0.1/include as part of the clang-dev package on aarch64. |
I have updated the images --- now they have |
Thank you. The clang-aarch64 build no longer errors now, though obviously it still times out like the others. I am still experimenting with running more than 2 concurrent make jobs in my fork - |
How about |
It will choose |
The way emulator could work jit-ing chains of ARM code - doubling ncpus will keep compiler code more time in RAM and JIT-ed, and tests are highly undesirabe as fresh advanced code to be jitted again. |
Seems 3 concurrent make jobs do not help. With the latest changes to the docker environment the ARM32 gcc job manages to finish in a bit over 47 minutes. ARM64 gcc sometimes barely makes it as well while the two clang-based jobs consistently time out at around 90 percent. |
In a year it will fit in timeout... |
We could look into moving the ARM tests to CircleCI, which appears to have a per-month limit on cpu time rather than per task. (Though with the cap at 1000 minutes we would only get 4 or 5 commits checked per month so probably not worth the trouble). |
I have tried adding |
The current setup uses something called "build stages", but as I understand allow_failures should work there as well. |
I think it depends from where the wind blows.... |
@aytekinar looks like the "env" is not matched for some reason, but matching on "name" and/or "services" appears to work. (Tried both at the same time so cannot say for sure which it is) |
Trying either does not work. I do not get it :( Normally, it should separate as in this, right? Why do I not see this in this build? Is this a bug? |
The lack of separation seems to be a travis bug (or missing feature) for "build stages" (saw a bug open for it but did not keep the number or link). Haven't tried with "matrix" but looks like I got it to work with stages (no separation but a line acknowledging that the jobs were allowed to fail, and the overall status set to "passed". Now to see if it is "-names" or "-services" that actually did the trick. |
I have removed stages:
- test to exactly specify what stages there are. EDIT. I have removed |
Updated `.travis.yml` file to add emulated tests for `ARMV6` and `ARMV8` architectures with `gcc` and `clang`. Created prebuilt images with required dependencies. Squashed layers into one.
The alternative would appear to be to keep using "jobs" where you switched to "matrix" at some point |
... while keeping |
Yes, at least that works for me - I copied your original PR to my fork for experimenting, and what I now have is just your original additions with "-name" in place of "-env" in the allowed_failures. (job still running so not sure if it was name or services keyword that did the trick - though we might as well use both) |
Weird. I could not get them working without removing It's your call. You can simply add your version here from your branch. |
Misunderstanding actually - "my" version does not produce the nice separation, it just adds a comment naming the allowed failures. As the "stage: test" does not appear to serve any purpose (now at least), |
I have updated Travis' YAML file to add emulated tests for ARMV6 and ARMV8 architectures using the Alpine Docker images.
The idea has come from @brada4 (see comment in #1861). Because the emulated builds take a lot of time, I have allowed the jobs to fail.
This is just an initial attempt to provide such a support in Travis. Please feel free to comment, improve/modify or even close the PR as you wish.