Support for 3 cores properly and Vulkan
#1
With the upcoming Coffee Lake CPUs pushing 4 cores at the minimum on i3 CPUs will PCSX2 be able to run efficiently on 3 cores without the MTVU hack? Laptops from now on will have 4 and 6 cores. It would be a shame to not utilize the extra cores to speed up the emulator along with DX12 and Vulkan support like the Dolphin Emulator for the Gamecube/Wii has. Any word on this?
OS: Windows 10 Pro (64 bit)
CPU: Intel i5-8400 2.8 GHz (4.0 GHz Turbo)
GPU: Gigabyte GeForce RTX 2060 Gaming OC (6 GB)
RAM: Ripjaws V Series, 2x8 GB DDR4 (2666 MHz)
Motherboard: GIGABYTE B360M D3H
Power supply: EVGA SuperNOVA G3 550 W
Reply

Sponsored links

#2
Cores don't always mean extra speed. You can do what AMD does and have 8 ***** cores vs Intel's 4 stronger cores. There's a limit as to what can be multithreaded due to the precise timing requiring most of the PS2 components to be in sync. Off the top of my head, there's really nothing else we can decople (Jake Stine had started to work on a multi threaded  GS before he left, but it's really slow) that would be worth the effort/timing issues introduced.
Reply
#3
you can use i3 coffee lake on pcsx2 but no "turbo boost" the clock speed is "fixed" at 3.6 thus you cannot OC it.
going for i5 is better even in K model but stay away on that i7's due to HT's heat concerns.
as for DX12 and vulkan....no progress....but there is newly improved GSdx OGL renderer the predecessor of ZeroGS KOSMOS.
rpcs3 can't use DX12 yet....only vulkan or OGL.

kinda off topic:
rpcs3 can use all the cores...lets say you have i5 coffee lake that is hexa-cores rpcs3 will boot-up and pop-up 6 normal dialog window while loading PPU modules.....than my current kaby-lake pops-up only up to 4 normal dialogs PPU loading modules......
if it's a i7 coffee lake i would want to see 12 normal dialog windows loading PPU modules at the same time.
Main PC1:i5-4670,HD7770(Active!)
Main PC2:i5-11600K,GTX1660Ti(Active!)
PCSX2 Discord server IGN:smartstrike
PCSX2 version uses:Custom compiled build 1.7.0 64-bit(to be update regularly)
smartstk's YouTube Channel
Reply
#4
Rpcs3 has had dx12 longer than vulkan. Its not being supported anymore though
[Image: gmYzFII.png]
[Image: dvedn3-5.png]
Reply
#5
(01-09-2018, 06:38 AM)NoleNation Wrote: With the upcoming Coffee Lake CPUs pushing 4 cores at the minimum on i3 CPUs will PCSX2 be able to run efficiently on 3 cores without the MTVU hack? Laptops from now on will have 4 and 6 cores. It would be a shame to not utilize the extra cores to speed up the emulator along with DX12 and Vulkan support like the Dolphin Emulator for the Gamecube/Wii has. Any word on this?

Well you know, PCSX2 uses much more thread than 2/3. You have the GUI, you also have the GPU driver that run in a separate thread (except OGL/AMD). All the application that run in background. Potentially you can split the IOP from the EE thread but it would be a 0% gain if you're limited by VU or GS. It could even be slower due to less turbo boost. It would be a better idea to optimize the EE/VU recompilers when they will be ported to 64 bits.

Vulkan will be nice for portability (thanks you AMD). But I don't think it will be faster. Most games are below 1000 draw calls. And often more draw call means lots of texture format conversion on GPU. Maybe it could help a couple of heavy games but I'm not even sure. PS2 is less powerful than a PS3 or a WII.

However there are couple of GS features that are emulated poorly (blending, destination alpha testing, alpha testing, color wrapping...) that could be accelerated on modern GPU. Accurate blending without any slowdown will be sweet.
Reply
#6
And if you use the Software render, you can use up to 16 cores if I remember the limit.
Reply
#7
(01-09-2018, 06:36 PM)Atomic83 Wrote: And if you use the Software render, you can use up to 16 cores if I remember the limit.

Splitting a process into too many threads can actually cause more performance degradation than if you use fewer threads in the first place. On a single core, your OS uses a scheduler to swap processes in and out of the execution pipeline. The scheduler itself takes time to do the swapping. If you have too many things going on at once, the scheduler ends up taking a fair amount of CPU time per second just juggling processes instead of actually executing their code. This can even reach a point where the scheduler exceeds actual processes in CPU time. If you ever used a desktop with an old single core Pentium, you know what happens when you have enough RAM but too much running. That sucker still gets slooooow.

And we can extend this logic to multithreading.

You can, theoretically, run a renderer in 16 threads. If you were rendering a movie, this would make sense. Each thread could be assigned a 30 second chunk of video, grind it out, output the result to a memory address and the main thread picks it up and assembles the output file with it. This makes sense, because precise timing isn't necessary. The main thread can read an ID number when it sees a memory block marked as done and slide it into the right slot of the final file. In a game, especially an emulator, timing is your god.

The PS2 has several major components, but the ones that PCSX2 truly highlights are the EE, IOP, GS and VUs. Emotion Engine, Input Output Processor, Graphics Synthesizer, Vector Units. In a nutshell, the EE is the main processor, IOP is a mini processor dedicated to memory cards controllers and anything else that plugs into those ports, GS is a GPU and VUs are dedicated vector math processors. You have all these processors, and they can only execute one thing when all the others have prepared the information they need to do their job.

An example: GS wants to put out the next video frame for a loading screen with a progress bar. GS has to get vector information from the VUs, which have to get information from the EE, which has to work with the IOP to do the actual load. For a loading bar, nevermind the rest of the frame. And while one unit is running and trying to give the information to the other, said other has to either find something to do, or just wait and waste time. When people talk about Ratchet and Clank having EE/VU starvation problems, this is what it is. One is sitting waiting for data, doing nothing, and the other is busting its balls to prepare it fast enough that the frame goes out in time.

No idea if this is a worthwhile contribution to the discussion but I figure why not.
Reply
#8
(01-09-2018, 06:38 AM)NoleNation Wrote: With the upcoming Coffee Lake CPUs pushing 4 cores at the minimum on i3 CPUs will PCSX2 be able to run efficiently on 3 cores without the MTVU hack? Laptops from now on will have 4 and 6 cores. It would be a shame to not utilize the extra cores to speed up the emulator along with DX12 and Vulkan support like the Dolphin Emulator for the Gamecube/Wii has. Any word on this?

Well, Dolphin doesn't use 3 cores either, really. In fact, I think they recommend disabling the dual core option nowadays.
#StopRNG
Reply
#9
posting deleted
Reply
#10
mtvu is a totally different thing then what vulkan does. the idea of mtvu is to enable parallel execution of vu code while using the main thread to transfer data chunks to the gif incase it can be done without to much path signaling between the 2 processes. that option will not be obsoleted by vulkan.

vulkan is entirely a graphics api and inside of gsdx. i've been looking into this vulkan lately. i haven't coded anything on it really, but it theoretically uses 2 threads automaticly. 1 thread for input processing and 1 for execution/sending the commands and payloads. i have no idea how much gsdx would benefit from it tho. depends on the amounts and size of data. more small data package and signal exchange overhead will totally obliterate the idea of multi threading the gs.
Reply




Users browsing this thread: 2 Guest(s)