@The Ugly One what’s your take on single-thread vs. threaded performance? Obviously we have tasks like compilation and rendering that make really good use of threads, but I’m thinking more about media work: Adobe shit and audio applications demand single thread performance. Audio especially seems to really be pinned down to single-thread workloads. I think a lot of productivity stuff like Adobe relies on continued improvements to CPUs. They’ve never been forced to actually develop fast code like what happened to video game developers with the recent consoles.
There are a tremendous amount of terribly written application and driver code that just throws everything on a single thread (or a few, poorly optimized). Often this is specialized stuff bottlenecked by some slowass I/O shit anyway, but I think it expresses relevance that (for general purpose computing), single-thread is king.
Please no, this is my worst autism trigger.
Okay, so, if my choice is a 2 GHz core or a pair of 1 GHz cores, I always want the 2 GHz core. The reason is simple, it's hard to break up tasks into homogeneous chunks that can be parceled out to workers operating in parallel. This isn't even unique to computers, it's a fundamental difficulty in manufacturing at scale as well.
However, the reality is that, due to the breakdown in Dennard scaling about 18 years ago, single cores aren't getting a lot faster. Furthermore, power consumption increases like the square of clock speed - a 5 GHz core consumes 4x the power of a 2.5 GHz core. Unfortunately, there are a lot of Luddites and outright retards gatekeeping performance-critical code bases (source: my depressing career), and these dinosaurs have done an excellent job of ensuring that consumers are not able to enjoy the performance gains of AVX-2 and many-core architectures.
Intel and AMD have unpaid consultants that are willing to review your code and hold your fucking hand to max out CPU performance, and the answer they get most often from big ISVs is to get the door slammed in their faces. Look, I know a guy who, just a couple years ago, got the go-ahead to fix low-level performance in an old code base, we're talking at a billion dollar company, and he got 10x-100x speedups across the board merely by doing Software 101 shit to their data structures. They're now cleaning up and destroying their competition, but what's fucking sad is they could have been doing this for 15 years. It took getting a younger guy in charge of the division who told all the old programmers that if they didn't like his protege touching their code, he would fire them (he did fire a couple people who bitched). That's how incredibly bad commercial software actually is, and it's 100% driven by principal engineer butthurt when you tell them their 1998 architecture is outdated. I mean I could personally probably dig into whatever software you're bitching about and get a massive speedup, but what would happen in reality is I'd get fired because I hurt the fee-fees of some 55-year-old whose entire self-image is based on telling himself he's the best programmer alive.
At a recent job, I left a 2x speedup unmerged because my boss went absolutely apoplectic. Like, red-faced and shouting. He was furious for no reason other than it meant retiring
his code and replacing it with a FOSS library that is about 3x faster than his (the part I would have replaced would have been 3x faster, for 2x overall application speedup).
GPUs are forcing the issue, though. A workstation GPU has 2x-10x the performance of the highest-end CPU, depending on workload, and this performance is so obvious that senior developers are no longer able to bullshit their way out of having to do real work (reminder that senior devs are the laziest motherfuckers on the planet, marketing people work harder than they do). See, in the past, management could be convinced with enough impenetrable technofog that multicore, SIMD, etc, weren't really good technologies, and really, our software is so perfect that Intel just can't keep up. But now, everyone's watching NVIDIA, and the order's coming down, get your shit on GPU or work somewhere else, faggot. And guess what, running on GPU means threading your code. In fact, GPU threading is even more restrictive than CPU threading, meaning that your job is even harder if you've been avoiding threads for the past 20 years, but cry me a fuckin' river, better yet, kill yourself.
Right, where was I? So yes, if you want something that has across-the-board great performance, you are going to need both very fast single-core performance
and a lot of cores (not to mention fast storage and a lot of memory bandwidth). That's why, unlike server-based EPYCs, workstation-oriented Threadripper PRO clocks up to 5.1 GHz. You're going to have some dogshit software you interact with during your workday that can't profitably make use of 8 cores, let alone 64, so you need that clock speed.