7 ms·
/s ? For my computer graphics and processing work, multithreaded tasks scale amazingly well with the number of cores so single core performance doesn't matter
by mschuetz 6y ago
/s ?
For my computer graphics and processing work, multithreaded tasks scale amazingly well with the number of cores so single core performance doesn't matter all that much. A single thread isn't even be able to process all the data that's streamed from an SSD. I need three threads just to process/prepare the data in the background, in addition to the main thread that keeps rendering.
I suspect it's only a matter of time until multithreading is a must for games. The additional programming effort may not have paid off if players only have 2 or 4 core CPUs, but now that 8 cores with 16 threads are increasingly common, it's going to make a difference.
- ido 6y agoAAA games have all but required quad cores (or at least 2c/4t) for years now. I think a lot of games already scale well to 4c/8t today.
- Uehreka 6y agoDo they use those cores? Sure. But when I’m playing a game (even a game that feels like it should be ripping threads like Factorio) I usually see that one core is pegged at 100% while the others are chilling around 40-60% (I have an overclocked 8700K). In my experience, single core performance is still the bottleneck (as far as CPUs are concerned) for gaming.
- driverdan 6y agoYes, recent games do. For example, Doom Eternal can max out all CPU cores.
- skocznymroczny 6y agoFactorio is an indie game, I guess it might not be easy for indie developers to make use of multithreading, whereas AAA game developers have entire teams dedicated to engine development and multithreading. Anyway, traditional graphics APIs like OpenGL are practically single-threaded. Modern APIs like DX12 and Vulkan have been designed with multithreading in mind and support scaling with number of cores much better (with added overhead of having to do manual synchronization).
- apk-d 6y ago> AAA game developers have entire teams dedicated to engine development and multithreading Unity has been introducing a lot of features (Job System, ECS) that make excellent use of parallelism. Additionally, a lot of the engine internals are being rewritten with that as a base (and some of the old features get patched with APIs that allow access from multithreaded jobs). It's a lot of fun when the code you write by default runs on all of the cores, with (almost) none of the usual parallel programming headaches. Pretty soon you should start seeing all kinds of indie titles making use of those features.
- gpm 6y agoAn 8700k has 12 threads. If the game was only capable of using 4 threads effectively, I would expect to see something like 1 thread at 100%, and the other 11 threads at 300/11 = 27%. If all your threads are sitting at 40-60% you're using more than 4 threads worth of execution... (if all 12 threads were at 50% that would be 6 threads worth). So, by the numbers you are giving, yes.
- vbezhenar 6y agoUsually operating system rotates threads between cores, so while you might see 60% on every core on average, on a given snapshop there will be 1-2 cores active at 100% while rest idle. Remember that CPU can't really work at 60%, core either works at 100% or sleeps.
- leetcrew 6y agothe underlying simulation in factorio is pretty difficult to parallelize, since there is so much interdependent state. some systems that don't interact directly (eg, trains and belts) can be parallelized almost trivially, but subdividing these update jobs further is very tricky. see this dev blog for more info: https://factorio.com/blog/post/fff-215 https://factorio.com/blog/post/fff-215
- pixl97 6y agoYep, games like factorio and dwarf fortress are generally more memory bandwidth limited than direct CPU limited, and it can be very hard to split up those behaviors.
- CyberDildonics 6y agoIt is exceptionally unlikely that a game is both limited by memory bandwidth and not able to be parallelized further. You might mean memory latency bound from serial simulations that need to calculate one piece to move on to the next, like an emulator or scripting language.
- banachtarski 6y agoGp comment mentions AAA. We PACK the core occupancy and for many titles, it’s essentially a ship requirement.
- mrguyorama 6y agoRemember that both current gen consoles are ~8 core AMD CPUs. Anything that runs on those will have to be pretty good at using all of them
- banachtarski 6y agoPrecisely. Not only that, most games that run on consoles are generally NUMA aware and use NUMA aware algorithms.
- kllrnohj 6y agoNo they aren't. There's no NUMA console on the market, why would anything be NUMA aware?
- banachtarski 6y agoYou're kidding me. Half the multithreaded PS4 optimizations I needed to make were related to atomic interlock exchanges over the numa boundary.
- mrguyorama 6y agoThe PS4 is described as having 8gb of main memory. Unlike computers and older consoles, there isn't even a distinction between what is "System RAM" and what is "Video RAM". Can you elaborate how that is NUMA?
- banachtarski 6y agoThat's a very simplistic view of the architecture. Consoles in general have multiple CPU complexes and caches that do not straddle the boundary, and also multiple memory buses.
- kllrnohj 6y agoAre you referring to the multiple CCXs as different "NUMA" nodes? Because they aren't, they still share the same memory controller. There isn't a shared cache, true, and that does have performance implications but that doesn't make it NUMA. If you can point to anything to support your NUMA claim that'd be highly interesting, but all the block charts & teardowns I can find show it's clearly UMA.
- HelloNurse 6y agoNot utilizing all cores fully means that the CPU is more powerful than the game needs, not that the game is unable to exploit many cores. For example, at 3 GHz and 30 FPS, there are 100 million cycles per frame. If the game requires 250 million cycles per frame spread between a few threads, it will never need more than two cores and a half in aggregate, plus waiting; and with 10 cores used 10% there's more time to wait without dropping frames than with 3 cores over 80% load.
- globular-toast 6y agoIt's sad to see even on HA people have absolutely no idea what they're talking about when it comes to CPUs. Nothing requires multiple cores. Nothing.
- p1necone 6y agoThat's nitpicking semantics. They mean anything less than a quad core (excepting some hypothetical ultra high clocked single core cpu that doesn't exist) would heavily bottleneck most modern games to the extent that only pretty low end GPUs would even be worth using. They said "require" as shorthand for that because they (apparently wrongly) expected people to follow the "strongest plausible interpretation" rule.
- globular-toast 6y agoSo the latest games require the latest CPUs? Well, no shit. The points I'm referring to are where the comments above say that games need multi-threading, or need multiple cores. Both are absurd statements. They try hard to do multiple threading only because multiple cores is what they CPU manufacturers are giving us. Nobody wants, much less needs, multiple cores.
- p1necone 6y agoCPU manufacturers are giving us multi core CPUs because it's no longer practical (because of heat and power draw) to just keep scaling frequencies. People are saying that you need multi core CPUs because there are no single core CPUs in existence that are fast enough. You're talking past everyone because you're arguing hypotheticals, and assuming everyone else is also talking about hypotheticals, but they're not.
- globular-toast 6y agoJust check the original context. "Best single core performance, which is what matters". There are no hypotheticals. Single core performance exists. Look at the other replies. People who don't understand the difference between concurrency and parallelism. These people actually think multiple cores are a good thing. What you don't seem to understand is that CPU manufacturers could have scaled up performance while still delivering a single core. They went the multi core route because it's much easier for them. Their marketing departments have won, though.
- fomine3 6y agoIt depends on workloads. Computer graphics and processing work may be easier to remove single-threaded bottlenecks.