We propose the switch from 'experimental' backend status to 'official',
* The staging builder (clang-ve-ninja) [2]. This builder builds and
checks LLVM+Clang and compiler-rt. The functional compiler-rt tests
run C code on a VE device.
* D113093 [3] has the changes to make all compiler-rt tests pass on VE.
Remaining failures are due to denormal support, alignment
requirements and subtle differences in syscalls.
* The downstream reference implementation (LLVM-VE [4]). This includes
compiler-rt,libcxxabi,libcxx and openmp target offloading and will be
the basis for upstreaming.
If you look at the build logs of clang-ve-ninja, you will see that the
"check all" tests for LLVM+Clang have been passing for a while.
What's failing is compiler-rt and we have a patch for that.
Yes, the compiler-rt tests are failing for well understood reasons
(documented in the patch - check-all on LLVM+Clang is green). The patch
will make compiler-rt pass on VE by accounting for those (no denorm
support, syscall differences).
We explicitly include compiler-rt testing (even though it is failing)
to have LLVM-compiled code running on the VE in CI.. this is not
something we'd do for slick optics.
The github repo is for reference only. If you look at our upstream
patch history, you will see that we submit small patches with tests and
follow the review protocol.
+1 to Renato's points.
One extra point on the build bot is that your cycle time appears
to be about 30 minutes. That's not unreasonable, but faster
cycles are always better (i.e. shorter blame lists). Any chance
you can reduce that time via e.g. more hardware or build config
tweaks (such as ccache)? I don't mean to suggest this as a
blocking item, simple as an area where improvement is possible.
Philip
We should be able to bring that down. clang-ve-ninja currently builds
everything from scratch (and it's all static - i'd love to have working
shared component libraries for faster/incremental builds).
We are also considering a second, faster builder that only builds and
tests LLVM+Clang. That would be the canary for any issues with the VE
backend.
Once D113093 is in, clang-ve-ninja is expected to be green.
We can call that the stable state - everything that's tested is
supposed to work and any red-ness implies breakage.
This may be a good moment to mention that the compiler-rt patch
disables tests that will never work on VE - there is no fp denormal
support, for example.
We add a new staging buildbot that builds everything clang-ve-ninja
does plus the yet-unsupported features that we are currently working
on.
Initially, that bot will be 'red' while the official one has to be kept
'green'. Once we are confident about the feature/runtime - both bots
are 'green' - we will make the official bot test that feature, thereby
declaring the feature official. The staging bot will turn to new
experimental features.
* Buildbot worker times are down to 7-8mins. We use ccache (thx!).
* We're set up to enable a worker reporting to the main buildbot
instance.
* The `clang-ve-ninja` buildbot is green and its testing represents
what is supported for VE.
1. Connect the VE worker to main buildbot instance.
2. Add `VE` to the LLVM target list, thereby making it official
(D113247).
3. Update llvm-zorg to build VE as an official target and enable
buildbot reporting for VE (D113389).
> > 1. Connect the VE worker to main buildbot instance.
> > 2. Add `VE` to the LLVM target list, thereby making it official
> > (D113247).
> This will trigger all bots that don't restrict targets to build VE,
> and you may get some failures here already.
I see no harm in moving clang-ve-ninja to main buildbot while we are
watching the ramifications play out for all builders. Builders don't
interfere with one another. There will only be better coverage.
This only matters for the clang-ve-ninja builder. The llvm-zorg patch
moves 'VE' from the experimental target to the targets_to_build cmake
option for clang-ve-ninja and enables reporting on failure. This will
not effect other bots.
Yep. There definitely could be issues on untested build environments.
Waiting for that to play out and patching our way back to green
pastures is the final, 4th step in the plan. Steps 1-3 are all about
adding VE to the official target list and migrating the bot. That's
all. VE is on a feature freeze until all bots appear stable.