This is like reading posts co-written by DRBaltazar and SEANMcad.
I have said very clearly games are designed to run on 4 cores at a time. Meaning they will only push 4 threads at a time through the processor. You cannot make them push more then 4 threads at a time because they aren't designed to do such a thing. When games are designed to take advantage of 16 threads then we will see 8 core processors being used for gaming.
Meanwhile like he said windows is scheduling the threads so even though the i7 should be weaker because they are splitting their cores in 1/2. They aren't weaker because of how windows uses the threads and spreads the tasks out. So it looks like the games are taking advantage of 8 cores when really its windows spreading out the work. When they are coded to take advantage of 8 cores we will see a huge increase in performance.
A competent game designer does not target a particular, fixed number of CPU cores, with the possible exception of consoles. And even then, if you want your game to run on multiple consoles, you want it to run well on all of the CPUs that any of the consoles you care about have, and they sometimes have different numbers of CPU cores.
Guess it goes to show either many game designers aren't competent or its not as easy as we would assume. Games that take advantage of more then 4core/4thread processing are few and far between.
Stop your trolling, on PC ancient DX11/OGL is whats stopping devs from utilizing more threads on CPU efficiently because they are still single threaded APIs.
Consoles have been utilizing multiple cores for YEARS now because they dont have that stoopid outdated APIs. Console CPUs are potatoes. PS4/PS4 Pro and XBox basically have smartphone CPUs in them, small core design but 8 of them running at whooping 1.8 GHz and they run games just fine.
Just goes on to show how much behind PC is compared to consoles (PS4/XBox were released 4 years ago), and if AMD hasnt started the revolution with Mantle ( i bet you have no clue about what it is and what it did) we would still be hammering that poor single core and wondering why arent games running better on much faster CPUs (meaning CPUs with more cores)
And as far as single core performance goes, even Intel hit a wall and all they can do now is add more cores to add more performance *khm* i7 6950x *khm* or youre stuck with whooping 200 MHz "advantage" on previous gen rebrand *khm* Kaby Lake *khm*
This is like reading posts co-written by DRBaltazar and SEANMcad.
Yeah, my mistake for feeding the trolls again.
Sorry. I'll properly punish myself.
Even I get pulled in sometimes. You see a faint glimmer of intelligence and try to feed it. Then you get hit between the eyes with a 2 X 4 of willful ignorance.
"I used to think the worst thing in life was to be all alone. It's not. The worst thing in life is to end up with people who make you feel all alone." Robin Williams
This is like reading posts co-written by DRBaltazar and SEANMcad.
I have said very clearly games are designed to run on 4 cores at a time. Meaning they will only push 4 threads at a time through the processor. You cannot make them push more then 4 threads at a time because they aren't designed to do such a thing. When games are designed to take advantage of 16 threads then we will see 8 core processors being used for gaming.
Meanwhile like he said windows is scheduling the threads so even though the i7 should be weaker because they are splitting their cores in 1/2. They aren't weaker because of how windows uses the threads and spreads the tasks out. So it looks like the games are taking advantage of 8 cores when really its windows spreading out the work. When they are coded to take advantage of 8 cores we will see a huge increase in performance.
A competent game designer does not target a particular, fixed number of CPU cores, with the possible exception of consoles. And even then, if you want your game to run on multiple consoles, you want it to run well on all of the CPUs that any of the consoles you care about have, and they sometimes have different numbers of CPU cores.
Guess it goes to show either many game designers aren't competent or its not as easy as we would assume. Games that take advantage of more then 4core/4thread processing are few and far between.
Stop your trolling, on PC ancient DX11/OGL is whats stopping devs from utilizing more threads on CPU efficiently because they are still single threaded APIs.
Consoles have been utilizing multiple cores for YEARS now because they dont have that stoopid outdated APIs. Console CPUs are potatoes. PS4/PS4 Pro and XBox basically have smartphone CPUs in them, small core design but 8 of them running at whooping 1.8 GHz and they run games just fine.
Just goes on to show how much behind PC is compared to consoles (PS4/XBox were released 4 years ago), and if AMD hasnt started the revolution with Mantle ( i bet you have no clue about what it is and what it did) we would still be hammering that poor single core and wondering why arent games running better on much faster CPUs (meaning CPUs with more cores)
And as far as single core performance goes, even Intel hit a wall and all they can do now is add more cores to add more performance *khm* i7 6950x *khm* or youre stuck with whooping 200 MHz "advantage" on previous gen rebrand *khm* Kaby Lake *khm*
Is this true that dx11 is the culprit in this scenario? There is definitely a culprit somewhere otherwise the 8-16 thread processors would rule gaming right now.
Yes because thats how DX11/OGL work, they hammer one thread, and even if you spread other tasks to other threads your whole performance will depend on that single thread if it (and usually it does) becomes a bottleneck, its archaic design that needs to go away as soon as possible.
DX12/Vulkan can spread workload over as many threads you have available evenly. It wont turn you 4 core CPU into 8 core, but they WILL utilize all CPU resurces you have available.
Here maybe this will help some misunderstandings. For the most part gaming has looked like this for the past 5 years. And hopefully now is beginning to change.
A "basic game" needs only one thread, possibly two. You can't just throw more threads onto a program and expect it to run faster, it doesn't work like that. Some problems can be accelerated simply by adding more execution units (e.g. threads), but most problems - like running a game - don't map well to that. You could have one thread for the rendering, one for user input, another for sound, one for physics/logic, another for networking, a small thread pool for I/O, but beyond that there isn't really any need for more threads (and it isn't obvious how to parallelize specific tasks such as rendering over multiple threads).
But if you do that you run into thread management issues, e.g. making all those threads work together nicely without waiting for each other, etc.. which drags down performance, so in general tasks are batched up similar to this (it can vary): 1 thread for rendering/game logic/user input 1 thread for physics and networking a few threads for I/O
Minithreads (like IDE/debugger hooks) that only spawn for a short duration don't count, of course.
Yes because thats how DX11/OGL work, they hammer one thread, and even if you spread other tasks to other threads your whole performance will depend on that single thread if it (and usually it does) becomes a bottleneck, its archaic design that needs to go away as soon as possible.
DX12/Vulkan can spread workload over as many threads you have available evenly. It wont turn you 4 core CPU into 8 core, but they WILL utilize all CPU resurces you have available.
Translation: I've never coded one line of DX11 or OGL code in my life, but I'm making big assumptions about how they work on some gaming forum so I look cool among the cool kids.
Sorry... you definitely do NOT have the start of a clue about what you're talking about here. There are people out here who do this for a living...
If it can make you feel better, you're not the only one.
It makes me wonder though is what people are seeing as threads in their games really the minithreads that are nothing more then I/O tasks? Like someone said the games are benefiting more from fully resourced cores then multithreaded core sharing for the most part anyways. Exactly how far into this generation of gaming are we that more then 4 threads are being utilized by a game anyways?
Yes because thats how DX11/OGL work, they hammer one thread, and even if you spread other tasks to other threads your whole performance will depend on that single thread if it (and usually it does) becomes a bottleneck, its archaic design that needs to go away as soon as possible.
DX12/Vulkan can spread workload over as many threads you have available evenly. It wont turn you 4 core CPU into 8 core, but they WILL utilize all CPU resurces you have available.
Translation: I've never coded one line of DX11 or OGL code in my life, but I'm making big assumptions about how they work on some gaming forum so I look cool among the cool kids.
Sorry... you definitely do NOT have the start of a clue about what you're talking about here. There are people out here who do this for a living...
If it can make you feel better, you're not the only one.
Oh noes, you post so much facts in your reply, in fact filmoret level of facts!
Translation: im full of $hit as usual
After thousands and thousands of analyzed games, and DX11/OGL factual limitations, here comes the expert.
So enlighten us oh master of universe.......why havent PC games taken advantage of multi core CPUs.....since 2009, ROFL
"Microsoft released the Final Platform Update for Windows Vista on
October 27, 2009, which was 5 days after the initial release of Windows 7
(launched with Direct3D 11 as a base standard)."
IDK how everyone got confused with what I was saying. The games are only built to process 4 threads at a time. Yes they load like 30 threads but they are waiting to be processed or just waiting on something to tell them what to do. The i5's will only process 4 threads at a time and meanwhile the i7 is capable of processing 8 threads at a time. Because the games are programmed to only run 4 threads through the processor at a given time it doesn't benefit them to have a 8 threaded processor. Otherwise the i7's would be so much better for gaming because its capable of processing twice the threads at a time.
But how the i7 is handled it isn't crippled by the 8 threads when it really should because applications are only suppose to be using 4 of the threads at a given time. Windows somehow runs the threads through all 8 of the cores. But it isn't very effecient which is why its better to turn off hyperthreading on the i7's for gamers.
Otherwise having a 100 core/ 100 thread processor would run your games 100x and the op would actually be right because his 8 core 16 thread processor would be faster but it doesn't because the games are only going to process 4 of them at a time.
All I can say on this, if Vulkan/DX12 are the bottleneck on today's PCs and the reason 1.8Ghz consoles can perform as well as 4.2Ghz machines, how come the benchmarks going from OGL / DX11 -> DX12 / Vulkan don't show that?
Some games show a some increase, most games perform roughly equal or slightly worse, depending on the hardware used in testing. Apart from that, how many DX12/Vulkan releases are there out today? A handful of the AAAs, but still very much in the minority and it's taking it's time picking up steam.
Can DX12/Vulkan help? Yes, in certain cases, on certain hardware. Is it the panacea of PC gaming that will unleash a new era of performance? I don't think so.
But that certainly was the hype that was used: It's closer to the metal, this is why consoles are able to do more with less, multithread aware renderers, etc.
All I can say on this, if Vulkan/DX12 are the bottleneck on today's PCs and the reason 1.8Ghz consoles can perform as well as 4.2Ghz machines, how come the benchmarks going from OGL / DX11 -> DX12 / Vulkan don't show that?
Some games show a some increase, most games perform roughly equal or slightly worse, depending on the hardware used in testing. Apart from that, how many DX12/Vulkan releases are there out today? A handful of the AAAs, but still very much in the minority and it's taking it's time picking up steam.
Can DX12/Vulkan help? Yes, in certain cases, on certain hardware. Is it the panacea of PC gaming that will unleash a new era of performance? I don't think so.
But that certainly was the hype that was used: It's closer to the metal, this is why consoles are able to do more with less, multithread aware renderers, etc.
Many of the games have synthetic benchmarks that are created with them. Also, they do not take into account the connection speed of many players, as reviewers, etc. probably have the top connections compared to players. That can have a huge affect.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Thats some funny stuff right there. Please continue.
AAA games still don't properly utilize multicore processors, let alone games on the medium/low end. In many cases a good intel dual core will actually outperform an AMD 8 core simply because 6 of those cores are either barely used(1-5%) or not used entirely. Run some of your favorite games and check the performance monitor if you're skeptical. Switching from a similar Intel to AMD CPU will almost always be a noticeable loss in performance.
Nonsense, i rum my favorite games and they all work much better on my 100$ CPU than on Intels 100$ CPU lol. In fact i used to have i5 3570k and i didnt see much if any loss in performance when switching to FX8300 (i sold 3570k+mobo and bought new 8300+mobo+500GB SSD for that money so oyu can stop preaching)
But then again im not married to 5+ years old games and even if i take one of those games i aint gonna claim "you should buy 2.5-3.5x more expencive intel because 5% of games you play will work better" and ignore other 95% that will work exactly the same lol
Even reviewers who tested FX83xx (usually 8350 but its irrelevant as 8300=8350) are always surprised how well it works because of "internetz" tehy thought it will be a disaster but it turns out how baseless "internetz" BS claims from 5+ years ago are.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Thats some funny stuff right there. Please continue.
It happens to be true, so keep laughing.
It typically takes hundreds of threads before you have enough actual computational work to really load down a CPU.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Thats some funny stuff right there. Please continue.
It happens to be true, so keep laughing.
It typically takes hundreds of threads before you have enough actual computational work to really load down a CPU.
Maybe you should read up on data bus programming, Thread optimization of lateral outreaches. And the core count vs thread count capabilities of cpu's. Will clear some things up for you.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Thats some funny stuff right there. Please continue.
It happens to be true, so keep laughing.
It typically takes hundreds of threads before you have enough actual computational work to really load down a CPU.
I can write a program with a few lines that will load all cores of any CPU to 100% instantly. And it will only use as many threads as there are cores.
Sure, would you also call that a typical use case?
You can bog down the world's fastest computer just by repeating 1+1 in a loop, but that's hardly useful.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Thats some funny stuff right there. Please continue.
It happens to be true, so keep laughing.
It typically takes hundreds of threads before you have enough actual computational work to really load down a CPU.
Maybe you should read up on data bus programming, Thread optimization of lateral outreaches. And the core count vs thread count capabilities of cpu's. Will clear some things up for you.
Maybe I should, but it would be much more informative if you would care to enlighten all of us
Just that there usually is. You almost never get those few very intensive threads without the several dozen behind it, and if you were to open task manager and just count the number of threads from all the background tasks and such that are supporting you running your video encode or (why on earth are you) CPU render. there's going to be a lot more than just your heavily loaded thread running.
More to the original point, I was trying to illustrate that you don't have to have one thread per core, and very commonly do you have a lot more than one thread per core. Even when you have a handful of threads that are very computationally heavy, the OS is still going to swap those out for all those other threads that are back there just to make sure everything gets it's chance to run.
But maybe I'm wrong. It wouldn't be the first time I've proven myself to be the village idiot.
The question that seems to be eluding is. Have video games started using more then 2-4 threads. I mean actually using them and not just some I/O thread which really doesn't even count as a thread at all.
So looking at Archeage you are able to turn on multi thread support in the options. Without it running we assume its programmed for dual core because its just silly to think single core. It has 50 threads open and only using 15% of my cpu. On single/dual core mode that is what archeage runs with. When I switch to multithread support its saying I need a processor with at least 4 cores and the count goes up to 57 threads with 27% cpu usage.
Interesting tidbit. Linux (and a lot of other Unix OSes) measure CPU load by Load Average, which doesn't necessarily mean the CPU is busy or not, but it's the number of threads waiting for processing time in the queue. (it also includes other resources than CPU, but CPU is typically the primary driver)
A value <1 means no thread is ever waiting to get CPU time. A value =1 means that your computational load exactly equals the computational power you have available. >1 means you have threads backed up waiting to execute.
The vast majority of cpu threads are waiting for data, not a cpu core. The data bus is still the biggest obstacle to any fast computing.
Thats some funny stuff right there. Please continue.
It happens to be true, so keep laughing.
It typically takes hundreds of threads before you have enough actual computational work to really load down a CPU.
I can write a program with a few lines that will load all cores of any CPU to 100% instantly. And it will only use as many threads as there are cores.
Sure, would you also call that a typical use case?
You can bog down the world's fastest computer just by repeating 1+1 in a loop, but that's hardly useful.
Among programs that genuinely need a lot of CPU performance, that can be pretty typical. Just because you can run a hundred programs that barely need the CPU at once doesn't mean that you can run two programs that need a ton of CPU performance at once without at least one of them being throttled back severely for lack of available CPU cores.
If you mean literally no other threads on the machine at all besides the one program using all the CPU cores with only as many threads as cores, then no that's not typical. But one program heavily using all of the cores with as many threads as cores (or two threads per core with hyperthreading) can be pretty typical of HPC code.
Games aren't using 8 threads. Windows is doing it.
Nope. The game actually HAS to be programmed to be threaded or not. Windows just manages the threads.
And here is where either people are not understanding or just not being very clear. You take a game that runs on a single/dual core processor and it has multiple threads open. Yet it will not run any faster on a 8 core processor because its only going to use 2 cores no matter what you do about it. The first game in the video shows a pure example of that because no matter what processor it was using the fps did not change. So even though the game is threaded its not threaded for multiple cores.
The game must be coded so the threads can take advantage of more then 2 cores. It can have 30 threads but it will not take advantage of 8 cores unless it has been programmed that way. It must be programmed so that the threads can be used and processed together. Which is why some games will not run unless they have 4 cores. Because it was not coded to run properly when the processor can only run 2 threads at a time. Soon I would gather that some games will require 8 core processors in order to run because the 4 core processors will not be able to run 8 threads at once. We have not seen that yet.
Its a whole lot more complicated then the software simply making threads. It must make them in a way that they work together and when a processor is capable of handling 16 at one time then it can be taken advantage of. Now the reason the i7's are running simple tasks on all 8 cores is because of how windows is handling scheduling. Its still a single core thread but it gets bounced around and scheduled on all cores.
Comments
Consoles have been utilizing multiple cores for YEARS now because they dont have that stoopid outdated APIs. Console CPUs are potatoes. PS4/PS4 Pro and XBox basically have smartphone CPUs in them, small core design but 8 of them running at whooping 1.8 GHz and they run games just fine.
Just goes on to show how much behind PC is compared to consoles (PS4/XBox were released 4 years ago), and if AMD hasnt started the revolution with Mantle ( i bet you have no clue about what it is and what it did) we would still be hammering that poor single core and wondering why arent games running better on much faster CPUs (meaning CPUs with more cores)
And as far as single core performance goes, even Intel hit a wall and all they can do now is add more cores to add more performance *khm* i7 6950x *khm* or youre stuck with whooping 200 MHz "advantage" on previous gen rebrand *khm* Kaby Lake *khm*
DX12/Vulkan can spread workload over as many threads you have available evenly. It wont turn you 4 core CPU into 8 core, but they WILL utilize all CPU resurces you have available.
#5Bacterius Members
Posted 01 July 2012 - 05:41 AM
But if you do that you run into thread management issues, e.g. making all those threads work together nicely without waiting for each other, etc.. which drags down performance, so in general tasks are batched up similar to this (it can vary):
1 thread for rendering/game logic/user input
1 thread for physics and networking
a few threads for I/O
Minithreads (like IDE/debugger hooks) that only spawn for a short duration don't count, of course.
https://www.gamedev.net/topic/627258-how-many-average-number-of-threads-does-a-game-needs-regardless-of-simplicity/
Translation: im full of $hit as usual
After thousands and thousands of analyzed games, and DX11/OGL factual limitations, here comes the expert.
So enlighten us oh master of universe.......why havent PC games taken advantage of multi core CPUs.....since 2009, ROFL
"Microsoft released the Final Platform Update for Windows Vista on October 27, 2009, which was 5 days after the initial release of Windows 7 (launched with Direct3D 11 as a base standard)."
same applies to DX12
Some games show a some increase, most games perform roughly equal or slightly worse, depending on the hardware used in testing. Apart from that, how many DX12/Vulkan releases are there out today? A handful of the AAAs, but still very much in the minority and it's taking it's time picking up steam.
Can DX12/Vulkan help? Yes, in certain cases, on certain hardware. Is it the panacea of PC gaming that will unleash a new era of performance? I don't think so.
But that certainly was the hype that was used: It's closer to the metal, this is why consoles are able to do more with less, multithread aware renderers, etc.
Many of the games have synthetic benchmarks that are created with them. Also, they do not take into account the connection speed of many players, as reviewers, etc. probably have the top connections compared to players. That can have a huge affect.
But then again im not married to 5+ years old games and even if i take one of those games i aint gonna claim "you should buy 2.5-3.5x more expencive intel because 5% of games you play will work better" and ignore other 95% that will work exactly the same lol
Even reviewers who tested FX83xx (usually 8350 but its irrelevant as 8300=8350) are always surprised how well it works because of "internetz" tehy thought it will be a disaster but it turns out how baseless "internetz" BS claims from 5+ years ago are.
It typically takes hundreds of threads before you have enough actual computational work to really load down a CPU.
You can bog down the world's fastest computer just by repeating 1+1 in a loop, but that's hardly useful.
Just that there usually is. You almost never get those few very intensive threads without the several dozen behind it, and if you were to open task manager and just count the number of threads from all the background tasks and such that are supporting you running your video encode or (why on earth are you) CPU render. there's going to be a lot more than just your heavily loaded thread running.
My fault for poor communication skills.
But maybe I'm wrong. It wouldn't be the first time I've proven myself to be the village idiot.
If you mean literally no other threads on the machine at all besides the one program using all the CPU cores with only as many threads as cores, then no that's not typical. But one program heavily using all of the cores with as many threads as cores (or two threads per core with hyperthreading) can be pretty typical of HPC code.
The game must be coded so the threads can take advantage of more then 2 cores. It can have 30 threads but it will not take advantage of 8 cores unless it has been programmed that way. It must be programmed so that the threads can be used and processed together. Which is why some games will not run unless they have 4 cores. Because it was not coded to run properly when the processor can only run 2 threads at a time. Soon I would gather that some games will require 8 core processors in order to run because the 4 core processors will not be able to run 8 threads at once. We have not seen that yet.
Its a whole lot more complicated then the software simply making threads. It must make them in a way that they work together and when a processor is capable of handling 16 at one time then it can be taken advantage of. Now the reason the i7's are running simple tasks on all 8 cores is because of how windows is handling scheduling. Its still a single core thread but it gets bounced around and scheduled on all cores.