Course Description
-
Course Objectives
Students will demonstrate an understanding of the main models for parallel hardware and parallel software; and will apply techniques for decomposing problems into smaller tasks and assigning them into computing units. To know the basic constructs for building parallel programs with Java multi-threading, POSIX threads, OpenMP, MPI.
Key Concepts
- Parallel programming design principles
- Shared-memory parallel programming
- Distributed-memory parallel programming
- Java multithreading
- POSIX threads
- OpenMP parallel programming
- MPI parallel programming
Learning Outcomes
- To know the fundamental parallel architecture models.
- To know and apply the principles of parallel algorithm design.
- To design and implement programs in shared-memory programming model using POSIX threads, OpenMP, Java multi-threading etc.
- To design and implement programs in distributed-memory programming model using MPI .
- To know and be able to apply parallel approaches on significant problems like dense matrix operations, sorting, graphs etc.
Recommended Textbooks
"An Introduction to Parallel Programming", Peter Pacheco "An introduction to parallel computing" (2nd edition) Ananth Grama , Vipin Kumar, George Karypis, Anshul Gupta