Yes, this is the reason and it’s even worse, some of the builders do not even support SSE 4.1.There are two common workarounds. (1) As @nixinator says, this can usually be worked around by disabling tests, so that the compiled code does not get executed (though disabling tests is of course not nice). See e.g.:
NixOS:master
← danieldk:onednn-disable-tests
opened 08:31AM - 30 Jul 20 UTC
<!--
To help with the large amounts of pull requests, we would appreciate your
…
reviews of other pull requests, especially simple package updates. Just leave a
comment describing what you have tested in the relevant package/service.
Reviewing helps to reduce the average time-to-merge for everyone.
Thanks a lot if you do!
List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://hydra.nixos.org/job/nixpkgs/trunk/manual/latest/download/1/nixpkgs/manual.html#chap-reviewing-contributions
-->
###### Motivation for this change
oneDNN tests fail on some Hydra builders because they do not support SSE
4.2. Unfortunately, oneDNN does not seem to work without SSE 4.2, see
issues #93692 and #93747.
###### Things done
- [x] Tested using sandboxing ([nix.useSandbox](https://nixos.org/nixos/manual/options.html#opt-nix.useSandbox) on NixOS, or option `sandbox` in [`nix.conf`](https://nixos.org/nix/manual/#sec-conf-file) on non-NixOS linux)
- Built on platform(s)
- [x] NixOS
- [ ] macOS
- [ ] other Linux distributions
- [ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside [nixos/tests](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests))
- [ ] Tested compilation of all pkgs that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review wip"`
- [ ] Tested execution of all binary files (usually in `./result/bin/`)
- [ ] Determined the impact on package closure size (by running `nix path-info -S` before and after)
- [ ] Ensured that relevant documentation is up to date
- [x] Fits [CONTRIBUTING.md](https://github.com/NixOS/nixpkgs/blob/master/.github/CONTRIBUTING.md).
(2) The software may build with -march
or other flags, that need to be disabled.
I think the oldest CPU in the Hydra build farm is an Opeteron 6100 series, which supports SSE3:
Opteron is the name of a central processing unit (CPU) family within the AMD64 line. Designed by Advanced Micro Devices (AMD) for the server market, Opteron competed with Intel's Xeon. The Opteron family is succeeded by the Zen-based Epyc, and Ryzen Threadripper and Threadripper Pro series.
For Socket 940 and Socket 939 Opterons, each chip has a three-digit model number, in the form Opteron XYY. For Socket F and Socket AM2 Opterons, each chip has a four-digit model number, in the form Opteron X...
I’d consider this an upstream bug, software should use CPUID and select code paths or kernels based on that. But there is a lot of machine learning software out there that doesn’t do this and simply relies on -march=native
plus autovectorization.
3 Likes