
Explore level of parallelism by examining instruction-level, data decomposition, and task-level parallelism. Learn how data and functional decomposition enable parallel execution on standalone and parallel computers.
Explore high-performance computing concepts, from clusters of nodes with shared or distributed memory to pipelining and synchronization, and compare massively parallel, embarrassingly parallel, and granularity effects on speed-up.
MPI is a standard for message passing in distributed memory systems and a universal parallel programming paradigm, enabling one-to-one and group communication across clusters and heterogeneous networks.
Learn to compile and run a simple MPI sample program, where each process prints its rank and the total processes, and how oversubscribing allows more processes than cores.
Explore MPI data types, from basic types like int and char to user-defined derived types, and learn to send both contiguous and non-contiguous data using MPI_Send with a communicator.
Explore MPI point-to-point communication with blocking and non-blocking send/receive, and bidirectional send-receive; manage status and request objects while using buffer, count, datatype, dest, source, tag, and communicator.
Learn how MPI blocking send and blocking receive enable two processes to exchange an integer data using a shared communicator, illustrating sender and receiver roles.
Demonstrate blocking send and non blocking receive in MPI, with process zero sending and process one waiting for data using a request object and wait to prevent garbage values.
In this course theoretical as well as practical concepts of parallel programming are explained. In chapter 1, introduction to parallel computing, levels of parallelism and applications of parallel computing are explained. In chapter 2, types of parallel computers, types of architectures and tools available to extract hardware information are explained. In chapter 3, parallel computing models, parallel algorithm models are explained. In chapter 4, basic terminologies related to MPI programming are explained. In chapter 5, MPI point to point communication functions with examples are explained. In chapter 6, MPI collective communication functions with examples are explained. In chapter 7, parallel programming using MPI is explained.
The table of content for this course is,
1. Introduction to parallel computing
1.1 What is parallel computing?
1.2 Why parallel computing
1.3 Who is using parallel computing
2. Parallel computer architectures
2.1 Classification of computer architectures
2.2 SMP architectures
2.3 Cluster architecture
2.4 Tools for checking configuration
3. Parallel computing models
3.1 Parallel programming models
3.2 Parallel algorithm models
4. MPI basics
4.1 MPI as standard
4.2 MPI terminologies
4.3 MPI installation
4.4 MPI commands
4.5 MPI program structure
4.6 MPI sample program
5. MPI point to point communication
5.1 List of point to point functions
5.2 Blocking vs non-blocking functions
5.3 Synchronous vs asynchronous functions
5.4 Point to point communication examples
6. MPI collective communication
6.1 Types of collective functions
6.2 One to many communication
6.3 Many to one communication
6.4 Many to many communication
7. Parallel computing using MPI
7.1 Parallel sum
7.2 Parallel search
7.3 Parallel sort
7.4 Parallel Matrix multiplication
7.5 Parallel prime-odd numbers