Lecture 1 Introduction
Lecture 1 Introduction
Lecture # 01
Introduction
• Dr. Samera Batool
• Samera.Batool@comsats.edu.pk
• Ground Flood Room No G41
Course Overview
• This course covers following main concepts
• Concepts of parallel and distributed computing
• Analysis and profiling of applications
• Shared memory concepts
• Distributed memory concepts
• Parallel and distributed programming (OpenMP, MPI)
• GPU based computing and programming (CUDA)
• Virtualization
• Cloud Computing, MapReduce
• Grid Computing
• Peer-to-Peer Computing
• Future trends in computing
Course Pre-requisites
• Programming Experience (preferably Python/C++/Java)
• Understanding of Computer Organization and Architecture
• Understanding of Operating System
Recommended Material
• Distributed Systems, Maarten van Steen & Andrew S. Tanenbaum, 3rd Edition (2020),
Pearson.
• Parallel Programming: Concepts and Practice, Bertil Schmidt, Jorge Gonzalez-
Dominguez, Christian Hundt, Moritz Schlarb, 1st Edition (2018), Elsevier.
• Parallel and High-Performance Computing, Robert Robey and Yuliana Zamora, 1st
Edition (2021).
• Distributed and Cloud Computing: From Parallel Processing to the Internet of Things,
Kai Hwang, Jack Dongarra, Geoffrey Fox, 1st Edition (2012), Elsevier.
• Multicore and GPU Programming: An Integrated Approach, Gerassimos Barlas, 2nd
Edition (2015), Elsevier.
• Parallel programming: For multicore and cluster systems. Rauber, Thomas, and
Gudula Rünger. Springer Science & Business Media, 2013.
Single Processor Architecture
Memory Hierarchy
Application
Partitioning
High-Performance Computing (HPC)
• HPC is the use of parallel processing for running advanced application
programs efficiently, reliably and quickly.
• It applies especially to systems that function above a tera FLOPs
(floating-point operations per second) processing speed.
• The term HPC is occasionally used as a synonym for supercomputing,
although technically a supercomputer is a system that performs at or
near the currently highest operational rate for computers.
High Performance Computing
GPU-accelerated Computing
• GPU-accelerated computing is the use of a graphics processing unit
(GPU) together with a CPU to accelerate deep learning, analytics, and
engineering applications.
• Pioneered in 2007 by NVIDIA, GPU accelerators now power energy-
efficient data centers in government labs, universities, enterprises,
and small-and-medium businesses around the world.
• They play a huge role in accelerating applications in platforms ranging
from artificial intelligence to cars, drones, and robots.
What is GPU?
• It is a processor optimized for 2D/3D graphics, video, visual
computing, and display.
• It is highly parallel, highly multithreaded multiprocessor optimized for
visual computing.
• It provide real-time visual interaction with computed objects via
graphics images, and video.
• It serves as both a programmable graphics processor and a scalable
parallel computing platform.
• Heterogeneous Systems: combine a GPU with a CPU
HPC System
composition
Parallel Computers
• Virtually all stand-alone computers
today are parallel from hardware
perspective:
• Multiple functional units (L1 cache, L2
cache, branch, pre-fetch, decode,
floating-point, graphics processing
(GPU), integer, etc.)
• Multiple execution units/cores
• Multiple hardware threads
IBM BG/Q Compute Chip with 18 cores (PU) and 16 L2 Cache units (L2)
Parallel Computers
• Networks connect multiple stand-
alone computers (nodes) to make
larger parallel computer clusters.
• Parallel computer cluster
• Each compute node is a multi-
processor parallel computer in itself
• Multiple compute nodes are
networked together with an
Infiniband network
• Special purpose nodes, also multi-
processor, are used for other
purposes
Types of Parallel and Distributed
Computing
• Parallel Computing
• Shared Memory
• Distributed Memory
• Distributed Computing
• Cluster Computing
• Grid Computing
• Cloud Computing
• Distributed Pervasive Systems
Parallel Computing
Distributed (Cluster) Computing
• Essentially a group of high-end
systems connected through a LAN
• Homogeneous: same OS, near-
identical hardware
• Single managing node
Distributed (Grid) Computing
• Lots of nodes from everywhere
• Heterogeneous
• Dispersed across several organizations
• Can easily span a wide-area network