Parallel execution
• N-client N-server model
• Synchronous or Asynchronous
Client Sever
Concurrent and parallel
programming languages
• Classification
Table 3.1 Classification of programming languages.
Languages 1_client N_client 1_client N_client
1-server 1-server N-server N-server
model mode model model
sequential + - - -
concurrent - + - -
Data-parallel - - + -
Parallel - + - +
3.2 Types and levels of parallelism
• 3.2.1 Available and utilized parallelism
available: in program or in the problem solutions
utilized: during execution
• 3.2.2 Types of available parallelism
functional
arises from the logic of a problem solution
data
arises from data structures
• Figure 3.11 Available and utilized levels of functional parallelism
Available levels Utilized levels
User (program) level User level
2
Procedure level Process level
Loop level Thread level 1
Instruction level
Instruction level
[Link] by architectures
[Link] by means of operating systems
3.2.4 Utilization of functional parallelism
• Available parallelism can be utilized by
architecture,
instruction-level parallel architectures
compilers
parallel optimizing compiler
operating system
multitasking
3.2.5 Concurrent execution models
• User level --- Multiprogramming, time sharing
• Process level --- Multitasking
• Thread level --- Multi-threading
3.3 Classification of parallel architectures
• 3.3.1 Flynn’s classification
SISD
SIMD
MISD (Multiple Instruction Single Date)
MIMD
Parallel
Parallel architectures //
architectures
PAs
Data-parallel architectures Function-parallel architectures
Instruction-level Thread-level Process-level
PAs
PAs PAs
DPs
ILPS MIMDs
Vector Associative SIMDs Systolic Pipelined VLIWs Superscalar Ditributed Shared
and neural architecture processors processors memory memory
architecture architecture MIMD (multi-
(multi-computer) Processors)
Part III Part II Part IV
3.4 Basic parallel technique
• 3.4.1 Pipelining (time)
a number of functional units are employed in sequence
to perform a single computation
a number of steps for each computation
• 3.4.2 Replication (space)
a number of functional units perform multiply
computation simultaneously
more processors
more memory
more I/O
more computers