PO1 | PO2 | PO3 | PO4 | PO5 | PO6 | PO7 | PO8 | PO9 | PO10 | PO11 | PO12 | PSO1 | PSO2 | PSO3 | ||
K3 | K4 | K5 | K5 | K6 | - | - | - | - | - | - | - | K3 | K3 | K6 | ||
CO1 | K3 | 2 | 1 | |||||||||||||
CO2 | K2 | 2 | 1 | |||||||||||||
CO3 | K3 | 3 | 2 | 2 | ||||||||||||
CO4 | K3 | 3 | 2 | 2 | ||||||||||||
CO5 | K2 | 3 | 2 | 2 | 2 | |||||||||||
Score | 13 | 8 | 2 | 6 | ||||||||||||
Course Mapping | 3 | 2 | 2 | 2 |
{{{credits}}}
L | T | P | C |
3 | 0 | 0 | 3 |
- To understand the need for multi-core processors, and their architecture
- To understand the challenges in parallel and multi-threaded programming
- To learn about the various parallel programming paradigms
- To develop OpenMP programs and design parallel solutions
- To develop an application using MPI programming.
{{{unit}}}
UNIT I | MULTI-CORE PROCESSORS | 9 |
Single core to Multi-Core Architectures; SIMD and MIMD Systems; Interconnection Networks; Symmetric and Distributed Shared Memory Architectures – Cache Coherence – Performance Issues – Parallel Program Design.
{{{unit}}}
UNIT II | PARALLEL PROGRAMMING | 9 |
Performance – Scalability; Synchronization and Data Sharing – Data Races – Synchronization Primitives (mutexes, locks, semaphores, barriers); Deadlocks and Livelocks; Communication Between Threads (condition variables, signals, message queues and pipes).
{{{unit}}}
UNIT III | SHARED MEMORY PROGRAMMING WITH OPENMP | 9 |
OpenMP Execution Model: Memory model – OpenMP Directives – Work-Sharing Constructs – Library Functions – Handling Data and Functional Parallelism – Handling Loops – Performance Considerations.
{{{unit}}}
UNIT IV | DISTRIBUTED MEMORY PROGRAMMING WITH MPI | 9 |
MPI program execution: MPI constructs – Libraries; MPI Send and Receive – Point-to-point and collective communication; MPI derived datatypes – Performance evaluation.
{{{unit}}}
UNIT V | PARALLEL PROGRAM DEVELOPMENT | 9 |
Case studies: n-Body solvers; Tree Search – OpenMP and MPI implementations and comparison.
\hfill Total Periods: 45
After the completion of this course, students will be able to:
- Understand the limitations of single core processors and the concepts behind the various multi-core architectures (K2)
- Identify the issues in programming Parallel Processors (K2)
- Develop the programs using OpenMP (K3)
- Develop the program using MPI (K3)
- Compare and contrast programming for serial processors and programming for parallel processors (K3).
- Peter S Pacheco, “An Introduction to Parallel Programming”, Morgan Kaufmann/Elsevier, 2011.
- Darryl Gove, “Multicore Application Programming for Windows, Linux, and Oracle Solaris”, Pearson, 2011.
- Michael J Quinn, “Parallel programming in C with MPI and OpenMP”, Tata McGraw Hill, 2003.
- Victor Alessandrini, “Shared Memory Application Programming, Concepts and Strategies in Multicore Application Programming”, 1st Edition, Morgan Kaufmann, 2015.
- Yan Solihin, “Fundamentals of Parallel Multicore Architecture”, CRC Press, 2015.
- Rohit Chandra, Ramesh Menon, Leo Dagum, David Kohr, Dror Maydan and Jeff McDonald, “Parallel Programming in OpenMP”, 1st Edition, Morgan Kaufmann, 2000.
- Gerassimos Barlas, “Multicore and GPU Programming”, Morgan Kaufmann, 2014.