Lecture 3
Lecture 3
Lecture 3
Parallel Computing
Contents
• Parallel Computing Overview
• Key Components of Parallel Computing
• Serial and Parallel Computing
• Sequential and Parallel Programming
• Relationship Between Tasks
• Classification of Computing Systems: Flynn’s Classification
• Enhancing Computational Efficiency: Key Objectives
• Classification of Computer Architecture by Memory Organization
• Homogeneous Computing
• Homogeneous Architecture
Parallel Computing
Overview
• Parallel Programming
– Involves writing code that enables multiple tasks to be
executed concurrently, often by splitting a problem into
smaller tasks
– Takes advantage of multi-core or distributed systems to
improve performance
Parallelism Overview
• SISD
– Traditional serial architecture with a single core
– At any time, only one instruction stream is executed, and
operations are performed on one data stream
– Examples: most PCs, single CPU workstations and
mainframes
Contd…
• SIMD
– A type of parallel computer
– Best suited for specialized problems such as image processing
and vector computation
Contd…
• MISD
– Uncommon architecture
– Each core operates on the same data stream but uses different
instruction stream
Contd…
• MIMD
– Advanced parallel architecture
– Multiple cores operate on multiple data streams, each
executing independent instructions
– Multi-core processors and distributed computing systems
Enhancing Computational
Efficiency: Key Objectives
• At the architectural level, significant advancements have been
made to accomplish the following goals:
– Reduce Latency: Minimizing the time taken for an operation
to start and complete
– Enhance Bandwidth: Increasing the volume of data that can
be processed per unit of time
– Increase Throughput: Maximizing the number of operations
executed within a given timeframe
Classification of Computer
Architectures by Memory
Organization
• Multi-node with distributed memory
– Many processors, each with local memory, communicate over
a network
– Suitable for clusters
Contd…
• Homogeneous Computing
– Involves one or more processors of the same architecture to execute
applications
– In these systems, all processing units are identical and perform the same
tasks in a similar manner
– Developers can write programs that assume all processors behave
identically, leading to simpler software design
• Heterogeneous Computing
– Utilizes a variety of processor architectures to execute applications,
allowing tasks to be assigned to the most suitable architecture for
performance improvements
– Systems can include CPUs, GPUs, FPGAs, and other specialized
processors, each optimized for specific tasks
– Programming for heterogeneous systems can be more complex as
developers must manage different architectures and ensure efficient task
distribution
Heterogeneous Architecture
Terminology:
Host: CPU
Device: GPU
PCIe: Peripheral Component Interconnect Express
End of Lecture 3