High Performance Computing. Part 2 of 2. Multiple Core advantages and disadvantages.

There are numerous myths even in the technical community related to the advantage of multiple cores and multi-threading.

In part 1 of this article I used my car/highway analogies for simplification.

I will use some of that same analogy in this article.

Most current applications are written for 32 bit application and only use one core. This limits them to a single threaded runtime.  The application is not symmetric multi-processing (SMP) compliant.
So for an average 32 bit Computer running Windows XP Pro envision the following:

I want to get 500 cars to the school at 8:20AM.   I have a 32 lane highway(System bus of the computer) with 32 lane on and off ramps(Memory) and ONLY one RAMP(Processor core) that allows cars to enter the parking lot of the school.  That one RAMP becomes the choke point.  It’s where the traffic jam begins.  Things get really congested about 8:10AM.  They will stay that way until 8:30AM.  This is the SINGLE CORE computer.

Next week I pay more money to get another RAMP(Processor Core #2)  with 32 lanes that can enter the school parking lot.  If I am using software that has SMP compliance, it will use both of the schools ramps ( Core 1 and Core 2)  and the traffic jam may be avoided.  Especially if I am only using one application at a time.  Most of the software available today is not SMP compliant.  That’s ok.  The Second RAMP to the school parking lot can still help some.  This is a DUAL CORE computer.

Now I am hooked on the concept that more is better and I go spend huge amounts to get TWO more ramps or Four more ramps built for the school parking lot.   The problem is that there is not enough traffic for all of those extra ramps to be  faster than 2 ramps are.  This is a QUAD CORE computer.

A major factor at this point is true SMP compliance.

Some software was tested for SMP compliance when there were only two core processors available for the PC or IBM Compatible computer architecture.  So if the software was tested and it managed to use two cores simultaneously it was considered SMP compliant.

When four cores or more became available it required changes in the method of coding the software to effectively use four or more cores simultaneously.  This is the reason that some software that claims to be SMP compliant does not perform any faster on a Quad core than on a Dual Core.  If the software is not SMP compliant at all, it will never perform faster on two or more cores, than it performs on a single core system.  If the software is truly SMP compliant, you will see a significant performance increase when you increase the quantity of cores.  You can verify if a program is running on multiple cores in Windows XP, Vista and Windows 7 by right clicking on the task bar and then selecting task manager.  Select the performance tab.  This should show your cores independently with a graphic representation of the amount of work each core is performing in close to real time.  If this only shows one graph, change the setting under VIEW, to one graph per CPU.

Programmers creating new code today are more aware of the advantages of SMP and 64 bit operation.  Some programmers are even optimizing their code to take full advantage of both SMP and 64 bit operation at the same time.   Adobe Flash 64bit Beta is a good example of 64 bit SMP software available now.  It is only available for Linux 64 bit platforms as of this writing.  Without SMP compliant software, your multiple core system is allowing many of it’s processor cores to sit idle most of the time.