Discussion in 'Article Discussion' started by bit-tech, 14 Sep 2017.
The way I see it, more cores/threads aren't really the answer when most software can't even use more than a single core/thread per task. Once you have enough cores/threads to handle the main-tasks only the single-core performance will increase the performance.
In games you need as many cores/threads as there's different tasks to calculate, like the Ai, the environment, the sound, etc. Music software splits up the channels between the available cores/threads, so you'll want as many cores/threads as you have channels and usually you don't have more than a handful (percussion, bass, main-instrument, and a couple more for background to make thing interesting). An orchestra needs more ofc, but homeusers rarely compose something that big on their PC.
3d-software uses all the cores/threads it can get to render a final image, but only uses two or three while working on the model. Photoshop only uses two or three cores and most filters only work on a single core/thread.
And the list goes on like this with 99% of the software outthere.
intel upping the corecount to six with Coffee Lake and having twelve threads on the higher end parts will be plenty enough for the next couple of years, as I don't see software making any advancements in the field of splitting up single tasks between multiple cores/threads. It's simply not possible with most tasks.
intel has still the advantage in single-thread performance and in power-efficency and these two count much more, than the most possible amount of cores/threads.
And I know that most people in here are not interested in this, but we shouldn't forget, that all the mainstream intel-parts come with an iGPU, which allows users to build a very tiny workstation, if you don't need alot of GPU-grunt. Musicians for example don't need a dedicated GPU, but somewhat high core/thread count with as much singlecore-performance as possible. Same goes for graphics-designers, who have multiple programs open at the same time (Photoshop + Illustartor + InDesign). Office-professioals, who work with multiple programs simultaneously, etc, etc.
I'll wait and see what AMDs new APU will look like, but from what we hear it'll only have 4 cores/threads + a good iGPU, which won't really be that interesting for the aforementioned groups of people, if the single-core performace isn't atleast on par with what intel offers.
Sounds to me like you need better software. I use: Chrome, which has a thread per tab and spins other stuff out into separate threads also; GIMP, which in the 2.9 tree will happily use multiple cores for all filters and image operations; pigz/lbzip2, which will scale to as many cores as you have; Inkscape, which again will happily use multiple cores - and there's a massive performance difference between setting it to one thread compared with four threads on this 'ere old AMD APU; LibreOffice, which is at present not multi-threaded for most operations but does have OpenGL and OpenCL acceleration support; and for stuff that is presently single-threaded (like processing images through Guetzli) I can use GNU Parallel to automatically run as many jobs simultaneously as I have cores (or more, if I fancy shuffling work off to other computers via the network - seriously, GNU Parallel is acebest.)
It's why I bought a quad-core AMD rather than a dual-core Intel back when I built this system, and it's why I'll be getting as many cores as I can afford when it eventually needs an upgrade - and yes, I'll gladly trade single-threaded performance for more cores, just as I did when building this box 'ere.
Here's GIMP 2.9.7 running the Sharpen by Synthesis filter, for instance. Both stages of the filter are using all four cores throughout - and, sure enough, it's significantly faster than the old single-threaded version in the 2.8 tree.
The 2000's called and they want their comment back.
In the 2010's, even Excel will use up to 20 cores for really complex financial modelling spreadsheets.
Programs are not tasks. You can't split a piece of code up to have it been processed by more than a single core/thread. A program can perfom multiple tasks at once, and I did mention this before, but usually 4-8 cores/threads is plenty for the usual software we use on a daily basis.
Having used Photoshop for 20+ years, since Version 3.0 I'm pretty confident with my statement, that having more than 4 cores doesn't make it perform any better. Singlecore-performance does. And that's my experience with all software, besides games, multi-channel music-software and rendering-engines, where there's actually more tasks being performed simultaneously.
Err... you absolutely can. That's how GIMP is using all four of my cores to run the Sharpen by Synthesis filter - which is, you'll note, a single task.
Multithreaded programs do split the tasks between the available cores/threads yes, but that's not what I'm talking about. I'm talking about linear code, which is 90% of all the software-tasks outthere.
The GiMP-filter for example executes multiple tasks to create the one effect. That's why it can use multiple cores/threads, but that's something you don't come across often. 90% of all the Photoshop filters are singlethreaded, according to Adobe and they sure would make them multithreaded, if it were possible.
While a single program may not benefit significantly from more than 4 cores, it is helpful when running many programs and the same time and the user is multi-tasking.
It is nice to no longer need to shut one thing down to run something else.
No, it doesn't. Here, let's demonstrate with a resize from 4000 pixels wide to 8000 pixels wide...
See how all four cores are in use there, too? That certainly ain't carrying out multiple tasks - it's just resizing the image. How about arbitrary rotation - let's say, 41.7 degrees clockwise?
Once again, all four cores loaded with a single task on a single image.
It's entirely possible to split a single task across multiple threads.
That's something you might not come across often, but it's situation normal for me. Literally everything I do in GIMP scales across all four cores, from complex stuff like image sharpening to simple things like changing the colour levels or resizing the image.
The number of platforms is why I'm not even interested, Intel obsolete stuff too quickly, found it quite annoying when I could find neither a chip or a board on two separate hardware failures without going second hand, the hundreds of pounds you put into a system is disposable.
AMD has enough performance for me, enough cores at a good price and a good platform with it, particularly in the HEDT space. Time I put my money where my mouth is.
I'm running Ubuntu Mate currently and using GiMP aswell. So I fired it up, loaded a 6000x4000 stockimage and rotated it, applied filters like gaussian blur, edge detect and did invert the image... all these things only show a single thread active in my system monitor.
So what now Gareth?
If I had to guess, I'd say you're running GIMP 2.8.x - which is single threaded. I quote:
Upgrade to 2.9.7, which is the version I'm running, check that it's set to use four cores (or however many cores you have) in the settings, and try again - you'll be able to replicate my results perfectly then.
That sounds like the early multi-core [Pentium D/Core Duo/Athlon x2] marketing:
Look! 2 cores! You can do 2 things at once, madness!
I'm using the official stable release, which is 2.8.22.
Applying a gaussian blur at an 6000x4000 stockimage is allmost instant as it is, so I don't see much benefits there, but I'll happily look for the imlpementation in the next stable version of this feature.
Now try something that's actually computationally intensive: select a biiiiiiig chunk of the image - like, more than half - and run the Heal Selection filter, or select the whole image and run the Sharpen by Synthesis filter. I guarantee neither of those will be almost instant!
At least you now understand that you can spread individual tasks across multiple processor cores, and that tasks which in Photoshop are single-threaded are multi-threaded in GIMP (2.9 onwards, anyway!) Which brings us back to the reason I started posting in the thread: you claimed "99% of software out there" doesn't see the benefit of multiple cores; what you actually meant was 99% of the software you use doesn't see the benefit. 99% of the software I use does see the benefit - which brings me back to my original point: you need better software!
Well to be fair Gareth, Photoshop is the industry-standard you're basically required to use, when you're working professionally and need to interact with other people, as is Illustrator or InDesign.
Allthough I want to completely switch to Linux, I simply can't for that reason, aslong as I'm not retiring from this profession.
And yet it fails to scale to multiple cores while GIMP, a free software project, manages it just fine. Poor show, Adobe, poor show.
Thankfully, despite working in the print media industry, not a single one of my clients has ever had a problem with me submitting stuff created in GIMP, Inkscape, LibreOffice, and other disgusting Commie packages. Which is good, 'cos I sure as heck don't fancy going back to Windows as a daily driver!
I think if AMD/Intel kick off a core war then the software will follow.
Coding for multiple threads might be more complex, but I still think the main reason there are still a lot of single threaded apps is simply that you can get away with it. While the mainstream is still dual/quad then the performance penalty is deemed acceptable once you take into account typical multitasking. Make 8/16 core the norm and that won't be the case.
Ever since I started working in the first advertising agency some 20 years ago I was required to use Photoshop. Back then Illustrator was still Macromedia Freehand and instead of InDesign allmost everyone used Quark Xpress as InDesign wasn't a thing yet.
My clients wouldn't care what I work with, aslong as the result is good, but I often do need to work with others in a team, and there's even printers who don't accept anything else than Ps, Ai and Id rawdata to print from, as they use Adobe colour-profiles.
The biggest problem with GiMP is it's lack of CMYK-support. Colour-proofing from RGB is allmost impossible to get right. Let alone Pantone-colours, which are also lacking from GiMP.
That and the lack of proper non-destructive editing. Thankfully, I'm only using it to tart up photographs and occasionally rasterise a vector that Inkscape decides should look like a late Picasso piece - colour matching for print is officially Someone Else's Problem (which probably involves loading my images into Photoshop!)
Sadly, the development roadmap still has 'high-end CMYK support' as 'no,' meaning there's no chance of seeing it any time soon. We have already got the multithreading in 2.9, though, along with OpenCL acceleration and high bit-depth support, which is definitely somethin', and 3.2 is supposed to be focused on adding non-destructive editing capabilities - so perhaps there's hope around 3.3/3.4 time?
Separate names with a comma.