CP4292 Multicore Architecture and Programming Syllabus:

CP4292 Multicore Architecture and Programming Syllabus – Anna University PG Syllabus Regulation 2021

COURSE OBJECTIVES:

 To understand the need for multi-core processors, and their architecture.
 To understand the challenges in parallel and multithreaded programming.
 To learn about the various parallel programming paradigms,
 To develop multicore programs and design parallel solutions.

UNIT I MULTI-CORE PROCESSORS

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 II PARALLEL PROGRAM CHALLENGES

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 III SHARED MEMORY PROGRAMMING WITH OpenMP

OpenMP Execution Model – Memory Model – OpenMP Directives – Work-sharing Constructs – Library functions – Handling Data and Functional Parallelism – Handling Loops – Performance Considerations.

UNIT IV DISTRIBUTED MEMORY PROGRAMMING WITH MPI

MPI program execution – MPI constructs – libraries – MPI send and receive – Point-to-point and Collective communication – MPI derived datatypes – Performance evaluation

UNIT V PARALLEL PROGRAM DEVELOPMENT

Case studies – n-Body solvers – Tree Search – OpenMP and MPI implementations and comparison.

TOTAL: 45 PERIODS

PRACTICALS:

1. Write a simple Program to demonstrate an OpenMP Fork-Join Parallelism.
2. Create a program that computes a simple matrix-vector multiplication b=Ax, either in C/C++. Use OpenMP directives to make it run in parallel.
3. Create a program that computes the sum of all the elements in an array A (C/C++) or a program that finds the largest number in an array A. Use OpenMP directives to make it run in parallel.
4. Write a simple Program demonstrating Message-Passing logic using OpenMP.
5. Implement the All-Pairs Shortest-Path Problem (Floyd’s Algorithm) Using OpenMP.
6. Implement a program Parallel Random Number Generators using Monte Carlo Methods in OpenMP.
7. Write a Program to demonstrate MPI-broadcast-and-collective-communication in C.
8. Write a Program to demonstrate MPI-scatter-gather-and-all gather in C.
9. Write a Program to demonstrate MPI-send-and-receive in C.
10. Write a Program to demonstrate by performing-parallel-rank-with-MPI in C.

TOTAL: 30 PERIODS

TOTAL:45+30=75 PERIODS

COURSE OUTCOMES:

At the end of the course, the students should be able to:
CO1: Describe multicore architectures and identify their characteristics and challenges.
CO2: Identify the issues in programming Parallel Processors.
CO3: Write programs using OpenMP and MPI.
CO4: Design parallel programming solutions to common problems.
CO5: Compare and contrast programming for serial processors and programming for parallel processors.

REFERENCES:

1. Peter S. Pacheco, “An Introduction to Parallel Programming, Morgan-Kauffman/Elsevier, 2021.
2. Darryl Gove, “Multicore Application Programming for Windows, Linux, and Oracle Solaris, Pearson, 2011 (unit 2)
3. Michael J Quinn, “Parallel programming in C with MPI and OpenMP, Tata McGraw Hill,2003.
4. Victor Alessandrini, Shared Memory Application Programming, 1st Edition, Concepts and Strategies in Multicore Application Programming, Morgan Kaufmann, 2015.
5. Yan Solihin, Fundamentals of Parallel Multicore Architecture, CRC Press, 2015.