• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1126
  • Last Modified:

Software and Hardware Parallelism

Hi
Can anyone explain me in detail the difference between the software and Hardware parallelism ,and how are they used .how can we implement them .Can i get some good sites to know more about parallelism and  architecture of software and  hardware.
0
anumit
Asked:
anumit
  • 3
1 Solution
 
SysExpertCommented:
I would check the Linux sites , Bewoulf project and similar for hardware parallelism.

SW Parralelism is also becoming more popular.

I hope this helps !

0
 
lombardpCommented:
SOFTWARE PARALLELISM is concerned with the intrinsic parallelism that can be found in a particular application. It means that, there are some applications which are easily software-parallelized, tipically because they process great amount of data doing the same operations on all of them. For example structural simulations, meteo simulations, audio and video processing process a lot of homogeneous data (finite elements of a structure or meteo environment, audio and video samples), doing the same operations on all of them.

It is said that in those applications software parallelism is very high, and it means that they are suitable to be executed in highly parallel systems (today's super-computer). If an application have an high software parallelism, doubling the number of computers that execute processing in parallel, results throughput is nearly doubled. It is said that those kind of applications have SCALABILITY: every time parallel hardware is doubled, overall performances nearly double. So, the scalability of an application is the capability of scaling (increasing) throughput with the same factor of hardware scaling(increasing).

The higher is the software parallelism, the higher is the scalability of an application on a parallel system.


HARDWARE PARALLELISM is the parallelism of the processing units of a certain hardware (computer or group of computers). So it is a feature of a certain system. First CPUs had no parallelism, later it increased because audio, video and geometric applications became to appear, so there was a need for it. Today's CPUs have an higher grade of parallelism, recently increased with the introduction of special assembly instructions (MMX, SSE, 3DNOW, ... families) intended to be used for multimedia applications. You can see that, when applications (multimedia apps) with a certain grade of software parallelism began to appear, a certain grade of hardware parallelism was introduced in standard CPUs, in order to enhance processing power.

Graphical Processing Unit used in video cards (ATI Radeon, NVIDIA Ge Force, ...) have to process a lot of homogeneous data (pixels) repeating the same operations (geometric transforms, triangle generation, surface lighting, texturization, ...) on them. In fact they have a very high hardware parallelism.

On a greater scale, in order to achieve very high processing power, modern super-computers (see http://www.top500.org) are composed by a very high number of quite standard CPUs. It is important to say that only applications with very high grade of software parallelism can take advantage of those kind of systems. If an application has no grade of parallelism, even if the system is composed by thousands of CPUs, the application will use only one of them.


0
 
anumitAuthor Commented:
Thaxs   lombardp ,SysExpert  for  quick response .Is it possible to do both  hardware and software parallelism parallely on a system .If yes then which program supports this mechanism.Can we do any  experiment  on hardware and software parallelism.Actually i was going through a site where it was mentioned software parellelism is fast and executable easily.
Please let me know some more information about these mechanisms.
0
 
lombardpCommented:
>> Is it possible to do both  hardware and software parallelism parallely on a system

In general hardware parallelism can be actually used only if software has a certain grade of parallelism, so we could say that software parallelism must be used together with hardware parallelism.

If I understand your needs, you would like to do some experiments on parallelism, both hardware and software, with a normal system (one or more Personal Computer).

Many commercial software implement code parallel-optimized in order to take advantage of intrinsic hardware parallelism in modern CPUs. These software are mainly related to video and audio editing.


If you look for an " home made " experiment:

You can experiment hardware parallelism on a single PC using SSE instructions embedded in modern CPU: those instructions are intended for multimedia applications, to process audio and video. A quick experiment can be set up with the GCC compiler, that has specific options for implementing math with SSE parallel instuctions. You can write very simple program and try to compile them with and without the SSE switch.

Software parallelism can be better tested with a multithreaded application. A very simple application could be to have two long vectors of numbers, and calculate the mean value of each one. The first application should be mono-thread and calculate mean of first vector and then mean of second vector. The second application should be composed by two thread, the first calculates mean of first  vector, the second calculates mean of second vector, in parallel.


If you look for a more sophisticated test, you should use a

0
 
lombardpCommented:
I entered answers to both the original question and the successive clarification.
I am still available to provide further clarifications to ANUMIT, if he needs.

0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now