Solving problems using concurrent flows often
involves coordination
Parallel Flows
Parallel Multiprocessing:
The ability to execute multiple processes simultaneously
Parallel Multithreading:
The ability to execute multiple threads within a single
process simultaneously
Hardware Architectures
Multicore Processing:
The CPU has multiple distinct processing cores (each
with its own instruction control unit, arithmetic and
logical unit, and cache) capable of executing
instructions
Symmetric Multiprocessing (SMP):
Multiple interconnected CPUs within a single host sharing
the same memory
Cluster Multiprocessing:
Multiple network-interconnected hosts each with its own
memory (including grid computing in which the hosts are
heterogenous)
Decomposition Schemes
Tasl/Functional Decomposition:
The problem is decomposed into different tasks involving
different data that can be executed in parallel
Data/Domain Decomposition:
The data are decomposed and the same task is performed
in parallel on different pieces of data
Flynn's Taxonomy
Single-Instruction/Single-Data (SISD):
One operation is performed on one piece of data
Single-Instruction/Multiple-Data (SIMD):
One operation is performed on multiple pieces of data
Multiple-Instruction/Single-Data (MISD):
Multiple operation are performed on a single piece of data
Multiple-Instruction/Multiple-Data (MIMD):
Multiple operation are performed on multiple pieces of data
Symmetry
Symmetric Systems:
All processors/hosts are similarly provisioned and
execute the same program