0

What things are multi-core processors needed for? I mean what type of things benefit from using multi-core ? Also are there anythings that suffer in performance for using multi-core... ie. they perform better using a single core processor?

2
  • parallel operations benefits alot. for example non-real-time renders.
    – nothrow
    Mar 13, 2010 at 22:56
  • 4
    ............yes. Mar 13, 2010 at 22:58

7 Answers 7

8

Anything where you want to do more than one independent thing at once benefits from having multiple processors, or cores. The traditional example is Operating Systems, running your word processor, browser, etc. simultaneously. A single core computer can become less responsive for all applications when one application is doing something computationally expensive, whereas a multi-core machine may isolate the busy application on one core, leaving free resources to still serve the user's requests.

Another benefactor is highly parallelisable computation, such as happens in scientific computing. The work can be spread across multiple processors or cores. Processor manufacturing is hitting the limits of how fast a single processor can run and not melt. The answer they have found is to have more processors running more slowly.

2
  • 1
    +1 for mentioning that multiple processes on a desktop machine alone can be a quiet compelling reason already. Most people seemingly cling too hard to the multithreading scenario :-)
    – Joey
    Mar 13, 2010 at 23:04
  • +1 for @Brabster and +1 for @Johannes -- but I'm out of votes today, sorry. :)
    – Alex
    Mar 15, 2010 at 6:52
3

Multi-threaded applications benefit from multi-core processors, because you can assign threads to run on different processors. You get true parallelization instead of time slicing that way.

Java Swing has a separate thread just for processing UI events. I would say it's a definite benefit, even for single processor machines.

The trick is that it doesn't happen by magic. The application has to be written in such a way that it's aware of multiple processors using algorithms that explicitly take advantage of them.

2

Since clock signals are limited it's the only way for scaling, count your currently opened windows don't forget system tray. If you still doubt open the task manager or do ps -ef it you're running linux.

1

Calculations that are CPU intensive benefit the most from multi-core processors. For example, one hobby of mine is computer rendering and ray tracing. There is a linear speedup with the number of CPU's available.

Note that high intensity calculations are now being shifted to the GPU (Graphical Processing Unit, i.e. Graphic Card) using such technologies as CUDA, OpenCL and Direct Compute.

Calculation intensive software will perform best using a blend of multi-core and GPU-based computation.

Microsoft .NET 4.0 has significant advances in parallel programming that make it much easier to write multi-threaded programs. As a result, they will be even more common in the near future.

4
  • 1
    CPU intensive isn't the key factor, the key factor is how well the CPU intensive part can be parallelized. Ray tracing is a good example of something that scales nicely when parallelizing. Mar 13, 2010 at 23:09
  • @Sander: True in that if the parallel threads would compete for the same resources and frequently found that resource locked by another thread then there's not much benefit (or potentially even a loss) by multi-threading. Can you think of other categories of CPU intensive problems that would not benefit?
    – Eric J.
    Mar 15, 2010 at 17:04
  • I can't think of a category of programs/issues/algorithms that would have problems. It just that programs not designed with multi-threading in mind are more likely to have some static state requiring exclusive access. Language like F#, and language elements like lamba expressions make it easier to write code that parallelizes better. Mar 27, 2010 at 12:14
  • @SanderRijken: Pick any NP-hard problem, and it will have problems parallelizing. As for non-NP-hard problems, depth-first search comes to mind.
    – user541686
    Jan 15, 2013 at 5:26
1

Yes they are necessary for faster speeds with current CPU design. There are pitfalls with this approach however, mainly that the program in question must be capable of running parallelized.

0

Multi core processors have been around for some time now and it's really up to developers to make use of them, by writing multi threaded applications.

0

Absolutely! Even on my old P4 3.2Ghz switching over to a mere Dual Core 2Ghz made a massive difference... Give me 6 cores hint hint

Multiple CPU's also allows for more code execution because a CPU can only process one chunk of code at a time. So the more CPU's the faster and more responsive a program can be.