Overview of parallel computers, shared memory, message passing, MIMD and SIMD classifications. Understanding and use of message passing and synchronization facilities such as MPI. Study of parallel programming models such as master-slave, client-server, tast-farming, divide-and-conquer and pipelining. Performance analysis of parallel systems, execution time, time complexity, load balancing and scalability.
B524 involves a project. Credit not given for both B424 and B524.
Prerequisites: C243, M301.
Textbook: T. Rauber, G. Runger (2013): Parallel Programming for Multicore and Cluster Systems, 2nd edition, Springer.
Grading system:
Some ideas of projects for the graduate students.
Guidelines for assignments:
Programming Environment:
Syllabus (Canvas)
Parallel
Knoppix distribution 6.0
MPI resources
Pthreads documentation
OpenMP
Linux resources
P. Pacheco (2011): Parallel Programming, Mrgan Kaufman.
B. Wilkinson, M. Allen (1999): Parallel Programming, Prentice-Hall.
G. R. Andrews (2000): Foundations of Multithreaded, Parallel and Distributed Programming, Addison-Wesley.
W. Gropp, E. Lusk, A. Skjellum (1999): Using MPI, second edition, MIT Press.
W. Gropp, M. Snir, B. Nitzberg, E. Lusk (1998): MPI--the complete reference, MIT Press.
P. S. Pacheco (1997): Parallel programming with MPI, Morgan Kaufmann.
S. H. Roosta (2000): Parallel processing and parallel algorithms : theory and computation, Springer.