I built a dev computer out of some old Xeon E5-2670 V2s (10cores/20threads @2.5ghz) each. I thought it would be way faster than a single core i7 4 core at 4.5ghz. To my surprise, only a few special types of things are the 20 core machine faster than the 4 core machine.
I mean, there are few special types of applications that bothered to implement any kind of multithreaded architecture until very recently; and even today its often not the default (-j for gnu).
This is precisely the reason that moore’s free lunch ending matters so much; everything needs to be rearchitected such that the server is faster than single core across normal usage
My tangentially related experience: when I switched (after 4 years) from a Core i5-3570K (4C/8T, 3.4 GHz nominal) to a Ryzen 7 1700X (8C/16T, 3.4 GHz nominal) last year, multi-threaded build time of a smallish C++ project I work on went down from 1 minute to 30 seconds.
I'd really like a comparable speed-up on my next HW upgrade; hoping for affordable 16-core CPUs 3-4 years from now.
The 3570k is not hyper threaded from what I understand. If it was, I would have been thrilled because I am still using that professor myself, waiting for the new threadripper.
I also updated the 1700X to 2700 this year, the "marginality problem" ([0]) affecting some of the early Ryzens (random segfaults after some minutes of heavily parallel workloads with lots of process creation - e.g. builds!) was getting more annoying when Rust needed to download and compile a bunch of crates. I'm very satisfied - more or less the same performance (3.2 vs 3.4 GHz), but 65 W instead of 95 W TDP.
Yes, in fact, that is one of the few times I get to hear the glorious sound of all 20 cores come to life and it does some serious number crunching. But very often I find that one thread will be working 100% for a bit while the rest just idle. (it's especially obvious with heavy javascript parsing or large text file editing for example).
Comments
I built a dev computer out of some old Xeon E5-2670 V2s (10cores/20threads @2.5ghz) each. I thought it would be way faster than a single core i7 4 core at 4.5ghz. To my surprise, only a few special types of things are the 20 core machine faster than the 4 core machine.
I mean, there are few special types of applications that bothered to implement any kind of multithreaded architecture until very recently; and even today its often not the default (-j for gnu).
This is precisely the reason that moore’s free lunch ending matters so much; everything needs to be rearchitected such that the server is faster than single core across normal usage
But we’re not at all close to such a world
A very funny illustration of you point: https://m.9gag.com/gag/a6OvN3q
Did you find that `make -j20` (or -j40 if you have a total of 40 threads) was five times faster (ish) than the quad-core machine?
My tangentially related experience: when I switched (after 4 years) from a Core i5-3570K (4C/8T, 3.4 GHz nominal) to a Ryzen 7 1700X (8C/16T, 3.4 GHz nominal) last year, multi-threaded build time of a smallish C++ project I work on went down from 1 minute to 30 seconds.
I'd really like a comparable speed-up on my next HW upgrade; hoping for affordable 16-core CPUs 3-4 years from now.
Releasing in September: https://www.amd.com/en/products/cpu/amd-ryzen-9-3950x
:)
The 3570k is not hyper threaded from what I understand. If it was, I would have been thrilled because I am still using that professor myself, waiting for the new threadripper.
Of course, my mistake.
I also updated the 1700X to 2700 this year, the "marginality problem" ([0]) affecting some of the early Ryzens (random segfaults after some minutes of heavily parallel workloads with lots of process creation - e.g. builds!) was getting more annoying when Rust needed to download and compile a bunch of crates. I'm very satisfied - more or less the same performance (3.2 vs 3.4 GHz), but 65 W instead of 95 W TDP.
[0] https://www.phoronix.com/scan.php?page=news_item&px=Ryzen-Se...
Yes, in fact, that is one of the few times I get to hear the glorious sound of all 20 cores come to life and it does some serious number crunching. But very often I find that one thread will be working 100% for a bit while the rest just idle. (it's especially obvious with heavy javascript parsing or large text file editing for example).