-
Notifications
You must be signed in to change notification settings - Fork 231
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
Provide pre-compiled binary support for Broadwell (ADX, BMI2) binaries #3198
Comments
https://lighthouse-book.sigmaprime.io/installation-binaries.html documents Lighthouse's approach. |
my preferred solution would involve dynamic runtime selection rather than separate binaries - one approach is to fork blst such that the different platform options each get a fully separate symbol namespace (at the C level), avoiding the need to do dynamic loading (which is messy for all kinds of reasons) - we'd probably have to do a bit of C surgery to get that done, but hopefully it can also be upstreamed - there's a lot of demand for this. |
their objections so far have been that the optimized operations are too "low-level" to warrant dynamic runtime selection - instead, I'd aim to get a separate symbol namespace all the way to the "black box primitives", ie |
Given that macOS 13 (Ventura) doesn't support pre-2017 hardware, and in particular, doesn't support the pre-Broadwell CPUs blocking requiring BMI2/ADX, combined with its not being a particularly common deployment, it might not make sense to focus on this in the near future, but rather specifically x86 Linux, where there's no such natural deprecation happening by the usual distributions, which still run on what's effectively 20-year-old retrocomputing with their current Because macOS 12 (Monterey) still supports the late 2013 Mac Pro, which is Haswell/pre-Broadwell, might not be able to do this in only a few months, however, but closer to a year and a half. Still seems of debatable value to devote too much attention to something that will resolve itself naturally when macOS 12 support can be dropped. |
supranational/blst#163 would/will make this substantially more feasible. |
163 was replaced by supranational/blst#165 with similar effect, and BLST has now merged run-time detection. This issue should be resolvable by updating BLST and using required settings to enable runtime detection. |
https://github.com/supranational/blst/releases/tag/v0.3.11 implements runtime switching required for this. So at this point, probably no special action should be taken to implement this issue. In the due course of eventually updating BLST, this will be resolved. |
This is phrased to encompass any of several approaches to this (e.g., wholly distinct monolithic binary images, runtime-selected shared libraries, et cetera).
All
block_sim
runs used 2000 validators and 160 slots. They were randomly interleaved to avoid one set being coincidentally aligned with something external potentially affecting performance.With
-march=haswell
, the Intel x86 microarchitecture immediately preceding Broadwell, 15 sampled times for thisblock_sim
configuration:With
-march=broadwell
, 15 sampled times for thisblock_sim
configuration:https://github.com/status-im/nimbus-eth2/blob/stable/docs/cpu_features.md#bmi2--adx explains this effect and provides further microbenchmarks.
The text was updated successfully, but these errors were encountered: