A small s**tstorm is heading your way, if you& #39;re in the business of running code on Intel computers.
Here& #39;s a sad story about the state of computing in 2019.
It& #39;ll take a couple of tweets, but it& #39;s actually kind of important (?), so please retweet so this gets proper attention:
Here& #39;s a sad story about the state of computing in 2019.
It& #39;ll take a couple of tweets, but it& #39;s actually kind of important (?), so please retweet so this gets proper attention:
For those of you who& #39;ve been following me, You know I& #39;m developing an AVX2 based sort that I& #39;m running against C#& #39;s own Array.Sort(), which is really the same as glibc& #39;s sort, std::sort etc.) and compiled in C++.
It& #39;s been 6 months, so let& #39;s just say I know its perf by heart.
It& #39;s been 6 months, so let& #39;s just say I know its perf by heart.
Here& #39;s what it looked like Yesterday, vs. Today:
Those of you with keen eye-sight can immediately tell that something is awfully wrong here....
Array.Sort() is 20% (!) slower when sorting 10M numbers for example...
Those of you with keen eye-sight can immediately tell that something is awfully wrong here....
Array.Sort() is 20% (!) slower when sorting 10M numbers for example...
Note the while my own code happens to run roughly as fast as before, while Array.Sort(), compiled down to machine code in C++ is really not having a good time.
This is probably a good time to mention I& #39;m on clearlinux which is a very bleeding edge Linux distro from Intel.
This is probably a good time to mention I& #39;m on clearlinux which is a very bleeding edge Linux distro from Intel.
Here& #39;s a snippet from my /proc/cpuinfo:
Yesterday:
model: 158
model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping: 9
microcode: 0xb4
Today:
model: 158
model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping: 9
microcode: 0xc6
Yesterday:
model: 158
model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping: 9
microcode: 0xb4
Today:
model: 158
model name: Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
stepping: 9
microcode: 0xc6
As you can see, I was blessed with microcode revision 0xc6.
Apparently, Intel are about to release a new μcode update, that I got slightly earlier than you rest.
This one, unlike previous ones, doesn& #39;t just affect syscalls, but is a tad more invasive:
https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf">https://www.intel.com/content/d...
Apparently, Intel are about to release a new μcode update, that I got slightly earlier than you rest.
This one, unlike previous ones, doesn& #39;t just affect syscalls, but is a tad more invasive:
https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf">https://www.intel.com/content/d...
Now, I happen to have gotten this update a tad earlier than the rest of you, since clearlinux is already been completely recompiled against this errata with a new patched up compiler that attempts to avoid placing conditional jumps around 32-byte boundaries.
But:
But:
* 3rd party binaries are going to get a major penalty (Like CoreCLR in this case).
* JITs (C#, JVM, Chrome, NodeJS) need to be updated and patched pronto to not generate conditional jumps on said boundaries, or suffer the consequences.
Also:
* JITs (C#, JVM, Chrome, NodeJS) need to be updated and patched pronto to not generate conditional jumps on said boundaries, or suffer the consequences.
Also: