Nature of Parallelism



Introduction

The development of an efficient software application on a parallel computer takes at least an order of magnitude more time than it would on a sequential system.

Programming Paradigms - principal types


Data Parallelism

Diagram


Functional Parallelism

Diagram


Farm Parallelism

Diagram


Nature of Parallelism

When developing and producing codes to exploit parallel computers a number of fundamental factors need to be taken into account.

Other Issues:


Load balancing

This is the assignment of tasks to the processors of the system so as to keep each processor busy most of the time. In static load balancing tasks are assigned to processors at the beginning of the execution according to a fixed schedule.

In dynamic load balancing tasks are assigned as the computation proceeds.


Scalability.

This is the ability of a program to exhibit good speed-up as the number of processors used is increased.

We achieve this by:


Speed-up - Amdahl's Law


Speed-up


Efficiency


HPC Software


Montry-Worlton Iceberg Metaphor

Diagram highlighting the differences between Mature Sequential Systems and State-of-the-art HPC Systems


Software Development Tools

Compilers
Fortran/C
Libraries
numerical/graphical
Debuggers
break-point/post-mortem
Monitoring/profiling
hot spots/comms patterns
IDA
reduce data dependancies
Automatic Parallelisers
aid parallelisation

Programming Paradigms

PREV NEXT
UP


Submitted by Mark Johnston
Last updated 6 April 1995