
Why Ice Lake is Important – a bit-basher’s perspective - matt_d
https://branchfree.org/2019/05/29/why-ice-lake-is-important-a-bit-bashers-perspective/
======
glangdale
Author here in case anyone wants detail, to throw rocks, mock my limited
understanding of Galois Field arithmetic, etc.

~~~
renaudg
What is the state of compiler support for these very advanced instruction sets
? Can the average developer benefit by basically adding a few compiler flags ?

Also, each new Intel platform seems to bring additional instructions but most
software isn't made available in a wide range of microarchitecture-specific
builds. Is there typically capability detection going on behind the scenes ?

Some of the operations described here seem so specific, that I have a hard
time imagining compilers being able to spot the relevant patterns in source
code that can make use of them (then again, I'm not a specialist). I guess
these are explicitly coded for in Assembly ?

~~~
jandrewrogers
Using these instruction sets usually requires explicitly writing code using C
language intrinsic functions, which is a reasonable compromise between
transparent automatic usage in C++ and needing to write assembly. On the
positive side, most compilers have full support for these intrinsics and the
compiler can even do compile-time evaluation for a few of them e.g. some
intrinsics are treated as 'constexpr' in C++ by the compiler, but the compiler
won't automagically use them for much and is generally poor at identifying
ordinary code that can be reduced to these intrinsics. So for designing
algorithms that take advantage of the advanced instruction sets, you are
mostly on your own. Writing C/C++ code with heavy use of intrinsics isn't hard
to learn or particularly opaque, just arcane.

These instruction sets can offer very substantial speedups for code paths when
applied judiciously. You do need to check the CPU capabilities at start up
time for practical software, you can't assume the environment supports it even
when these instructions have been around a long time. Some had very uneven
implementation timelines across CPU product lines. Even for explicitly high-
performance software, I invariably would get bug reports because someone tried
to run it on a 10+ year old machine that did not support the instructions I
was using. There are standard open source libraries for doing this feature
detection using CPUID.

------
rb808
> I will also admit that I’m not very interested in deep learning, floating
> point or crypto

I feel like I met that one other guy in the world.

~~~
zeus_hammer
There are dozens of us ... dozens!

------
Narishma
For anyone else confused by the title, this is about the upcoming Intel CPU
generation.

------
FullyFunctional
GF2P8AFFINEQB sounds a lot like MXOR from Donald Knuth's MMIX (19 years
prior). Now x86 just need MOR as well. EDIT: This link may be helpful:
[https://math.stackexchange.com/questions/1107839/how-is-d-
kn...](https://math.stackexchange.com/questions/1107839/how-is-d-knuth-mmix-
instruction-mxor-useful-for-finite-field-multiplication/1723972)

~~~
glangdale
Thank you - this led to some interesting background. I could definitely have
used MOR during bitwise regex (Glushkov NFA) implementation.

------
bitL
Do we know if Zen 2 is going to support AVX-512? Even if in 2x256-bit
fashion... That could boost adoption as many enthusiasts will be changing
platform soon.

~~~
sandeatr
It does not :(

------
sandeatr
I hope they release more information soon, like latency and throughput for all
these avx512 instructions on ice lake.

No 2nd FMA really sucks, hope they add it when they do desktop-

I can't tell from the micro architecture slide if the yellow box labeled "ALU"
that is found on port 0 and 5 refers to only integer ops, or if that includes
float(add/mul).

------
breadandcrumbel
Food for the brain. I never thought about it before tbh

