LWN.net Logo

128 core CPUs are irrelevant, start getting used to things not getting faster? Wrong answer!

128 core CPUs are irrelevant, start getting used to things not getting faster? Wrong answer!

Posted Apr 28, 2008 6:44 UTC (Mon) by drag (subscriber, #31333)
In reply to: 128 core CPUs are irrelevant, start getting used to things not getting faster? Wrong answer! by khim
Parent article: Interview with Donald Knuth (InformIT)

Some things, like graphics, are natural things to parallelize. Your dealing with multiple
tiles in a mpeg video or some number of discrete mathematical functions be used over and over
again on a large number of 3D objects or whatnot. 


then there are other things, like imagemagick you mentioned, that can be setup to run in batch
mode were you have lots of images or calculations to do over and over again on a number of
images or whatnot. With that there probably isn't much need to do any multithreading.. Just
fork it for how many images your working on. Batch programming at it's best.

Even for static renderings with raytracing this is the way to go.. the multitheaded portion
would be relatively small and then just fork it and stitch the images back together after it's
been rendered. 

For lots of this stuff it would make sense to have to do multithreading if your in a
Windows-only world, but with Linux the overhead of fork is much smaller and leads to simpler
and less buggy programs.

And of course there is multitasking and all that. Even then how many things do you have going
on at once? 3 things? 4 things?  How is that going to translate to big savings when your
dealing with a entry level Dell desktop computer with 8-16 cores?

Do you really want to see something with the complexity of Firefox or OpenOffice.org have it's
code base be refactored to support multi threaded programming? They have a tough enough job
now as it is trying to maintain their code base without all that extra overhead. 

How many programs that you use on a daily basis that could benefit from it?

I did see big benefits from moving from One CPU to Two. I always wanted to do that, but I
couldn't justify the expense of a SMP board and such for home use. 

From Two CPUs to Four will probably see some benefits.

For rendering games and doing other stuff integrating the GPU into the CPU die will help. So
your going to take advantage of maybe another 4 cores. 

If people start doing crazy stuff with raytracing and graphics then I can see taking advantage
of up to 16 cores... Plus it'll make video processing much less buggy since we can hopefully
get away from the proprietary hell that Nvidia and (historically) ATI have driven us into.

I donno. 

Intel and friends are talking about _EIGHTY_ cores. (Maybe they'll use 4-8 for normal tasks
and then the rest for graphics and a few specialized cores for giggles and grins?)


It seems that they want programmers to start using parallel processing on even basic tasks. I
think that this is a tall order given that, in general, software is in a such a lousy state as
it is right now. I mean it's not like even very advanced programmers have perfected single
threaded application programming. 


(Log in to post comments)

128 core CPUs are irrelevant, start getting used to things not getting faster? Wrong answer!

Posted Apr 28, 2008 7:29 UTC (Mon) by ekj (subscriber, #1524) [Link]

But the interesting question isn't what percentage of -all- loads can be paralellized. The interesting question is what percentage of the loads that MATTER can be parallellized.

The loads that -matter- are those where you would like to do more, but are limited by CPU. Or where you'd like to do what you do today quicker.

Offcourse in principle you -always- want to go quicker, but if "ls" already spends 0.042s waiting for I/O and 0.002s doing CPU-work, then it really is of no practical importance if those 0.002s could be efficiently 128-way parallellized.

I think that -most- loads that matter can be parallellized easily. In some cases TRIVIALLY. Can you give a few examples of real-world cases where waiting for the CPU is a real concern, but the problem is not parallellizable ?

I know that the things where I spend time waiting for my CPU are easily parallellizable:

  • Transcode a movie
  • Encrypt/decrypt large amounts of data.
  • Pack/unpack images (PNG, JPG, Raw)
  • FLAC/Ogg-code wav-files
  • Graphic performance, particularily 3D.
But really, mostly when I'm waiting for my computer, I'm waiting for it to do IO. Not waiting for it to compute. Thus advances in IO, such as seek-less solid-state disc and faster internet-links are much more relevant to me than faster CPUs. I suspect this is true for most peronal computer-users.

The lightspeed-limit bites for IO too offcourse, particularily the type where I'm doing IO off some device in Australia.

Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds