Dolphin, the GameCube and Wii emulator - Forums

Full Version: Dolphin using all the cores
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2 3
(12-06-2010, 10:50 AM)NaturalViolence Wrote: [ -> ]It is possible but would require massive amounts of code restructuring and would have little benefit. Dolphin actually has the ability to run dsplle (low level audio emulation) on a third thread but work on this was abandoned after the devs realized that it only resulted in a 5% speedup on average and created desyncing problems (it's difficult to keep the graphics and audio threads in sync with each other when they are on different cores). It is unlikely that dolphin will ever use more than 2 cores since it is nearly impossible to make any efficient use of more than 2.

Five percent speed is not negligible. For some games these five percent can change everything

azraell84

Hi im new here and im not using dolphin for a long time but i think emulation is pretty wellSmile thanks for good work;] ive reading this post and i started to think dolphin supports 2 cores but when i play my sys monitor shows almost full load on every core in my 4x phenom not only 2?? sorry if that question is stupidSmile
(12-09-2010, 10:00 PM)azraell84 Wrote: [ -> ]Hi im new here and im not using dolphin for a long time but i think emulation is pretty wellSmile thanks for good work;] ive reading this post and i started to think dolphin supports 2 cores but when i play my sys monitor shows almost full load on every core in my 4x phenom not only 2?? sorry if that question is stupidSmile

I had this question some time ago. Apparently it's because the threads jump around on different cores but if you select "lock threads to cores" then you will see dolphin really only uses 2.
(12-09-2010, 07:09 PM)Densiozo Wrote: [ -> ]
(12-06-2010, 10:50 AM)NaturalViolence Wrote: [ -> ]It is possible but would require massive amounts of code restructuring and would have little benefit. Dolphin actually has the ability to run dsplle (low level audio emulation) on a third thread but work on this was abandoned after the devs realized that it only resulted in a 5% speedup on average and created desyncing problems (it's difficult to keep the graphics and audio threads in sync with each other when they are on different cores). It is unlikely that dolphin will ever use more than 2 cores since it is nearly impossible to make any efficient use of more than 2.

Five percent speed is not negligible. For some games these five percent can change everything

It can't be done, mainly because there is nothing else besides the cpu thread, gpu thread and dsp thread that can be split onto other cores. Doing so, if it were even possible would be very hacky, cause massive syncing issues and contrary to belief it would deteriorate performance, not improve performance.

Also 5% is not really that much, simple commits in the past claimed more of a speedup than 5% but the reality was that the gain in actuality was more like 1 FPS - 2 FPS if even that. That wouldn't be worth the additional issues cause by making Dolphin use more than two cores. The developers stated it is already difficult enough running the gpu on a separate thread/core which also has syncing issues, although not anywhere near as bad as if Dolphin were coded to use more than two cores.

Multi-core emulation is just not feasible if there is nothing to split up onto separate cores, so don't expect anything else other than what is currently implemented.

Quote:any decent programmer should know how to take advantage of this when needed.

You keep thinking that. Most programmers don't deal with any of the types of applications where multithreading is actually useful. If you go to a university like me just go to your engineering or cs building and start asking programmers. You won't get very many that will reply "yeah I've made some multithreaded apps before".

Quote:It's really interesting to see how computing has been switching from parallel to serial computing and vice-versa over this years. I've never imagined that serial communications could achieve those amazing transfer rates, when everybody was thinking that parallel was the way to go.

Communications is very different from processing as I'm sure you know. With parallel communication they had to lower the frequency in order to keep the lanes from getting to far out of sync with each other. Since we're using circuits not long wires we don't have that problem with microprocessors or buses.

Quote:It can't be done, mainly because there is nothing else besides the cpu thread, gpu thread and dsp thread that can be split onto other cores. Doing so, if it were even possible would be very hacky, cause massive syncing issues and contrary to belief it would deteriorate performance, not improve performance.

Also the input plugin could be given its own core. It wouldn't yield any speedup but all I'm saying is it is technically possible to get dolphin to use 4 cores Tongue.
Quote:You keep thinking that. Most programmers don't deal with any of the types of applications where multithreading is actually useful. If you go to a university like me just go to your engineering or cs building and start asking programmers. You won't get very many that will reply "yeah I've made some multithreaded apps before".

Well, I have some friends from college in this area, and yeah, they don't use multithreading, mostly because its too damn complicatedTongue. I'm not saying that they have to use it, but they do know how to take advantage of it when needed.

There are more apps than you think that can somehow benefit from multithreading, even a worksheet. It's not easy, though.
What's wrong with you idiots? Why can't you just do it? Split out the load, other programs do it!!

[JOKING!!]
Something maybe could be done in dolphin with more cores: Memcopy. I don't know, how much memory get copied around while I am playing games in dolphin. But when its alot, there could be a chance.
Skid is working on a parallel jit recompiler for dolphin that could use many threads to compile code in parallel. However it would still need to be executed on one thread in order.
I know I posted that on another thread, but just in case: If there was an option to recompile before actually playing the game, we might get some speedup.
That way we could recompile with the CD in the tray and keep the compiled code on the disk (for those who don't keep ISOs)
Pages: 1 2 3