Dolphin, the GameCube and Wii emulator - Forums

Full Version: What is ICC?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I've seen alot of talk about it, but I haven't really understood it. Almost all of the custom builds use ICC, claiming a speed up, but apparently the devs don't agree. So, being curious, first thing I did was do a search here on the forums, but uh, I got "hiccup" a few dozen times and gave up. Googling it, I got the "Intel C++ Compiler". Seems like that is probably it, as it affects AVX and stuff, but how does that affect dolphin? What are it's pros and cons?
This is magic Big Grin

...I'm just kidding. Yeah, I only know, that the ICC will vectorise the code somehow. I guess, no one knows, what ICC actually does. Tongue
ICC is the Intel C++ compiler, which in theory should optimize better than MSVC/GCC/Clang when compiling the code. In Dolphin more than 80% of the CPU time is spent in JIT generated code, so even if ICC had a 5% performance boost (and I really doubt it has) it would translate to a -1% CPU time spent, which is a 1FPS difference at 100FPS.

People who do ICC builds are not programmers and don't understand how useless it is. See DefenderX's post above.
^ this
77 gather and 60 FMA3 instructions in the software renderer when compiled with AVX2 so it looks like Intel is starting to deliver on CPUs obsoleting GPUs dream some have.
The only thing I thought might give a speed up with te custom builds was SSE4.2 and such, but it really didn't (and then I learned why: it's enabled in Dolphin by default already).
I heard PGO can be pretty good in terms of performance, if done correctly. I've been meaning to find out how to do this with Dolphin and PCSX2 to test this for myself. Any thoughts on this?
(10-20-2012, 02:45 AM)Shonumi Wrote: [ -> ]I heard PGO can be pretty good in terms of performance, if done correctly. I've been meaning to find out how to do this with Dolphin and PCSX2 to test this for myself. Any thoughts on this?

Compiler PGO is ineffective for Dolphin because of the 80% in JIT fact. The other thing that makes PGO ineffective is that the profile for one game might not be suited for another game.

There may be some gains to be made if we custom wrote our own PGO profiler built into the JIT. The last time I tried this for MMU games, the resulting speed gain was minimal.
(10-20-2012, 08:42 AM)skid Wrote: [ -> ]
(10-20-2012, 02:45 AM)Shonumi Wrote: [ -> ]I heard PGO can be pretty good in terms of performance, if done correctly. I've been meaning to find out how to do this with Dolphin and PCSX2 to test this for myself. Any thoughts on this?

Compiler PGO is ineffective for Dolphin because of the 80% in JIT fact. The other thing that makes PGO ineffective is that the profile for one game might not be suited for another game.

There may be some gains to be made if we custom wrote our own PGO profiler built into the JIT. The last time I tried this for MMU games, the resulting speed gain was minimal.

I see, I guess the only things PGO would possibly speed up are things like Dolphin's CPU or DSP interpreters then? There's not much practical use in those for people who use Dolphin primarily for gaming though (devs oth...) Out of further curiosity, would PGO conceivably have any affect on the Software Renderer?

About the issue of needing multiple profiles with PGO, you shouldn't forget that there are (crazy) users out there that don't mind having a specific revisions of Dolphin out there "optimized" for a single game. They'd love having one build compiled with a The Last Story profile or Xenoblade Chronicles profile. I'm not saying it's worth it (because it's not), just that some people flip for that kinda stuff. Go figure.
PGO probably won't speed up the software renderer much as the software renderer mostly consists of loops. Vectorisation might help though.