Rice University
COMP 422/534
Parallel Computing
Spring 2017
John Mellor-Crummey, Department of Computer Science, Rice University
TTh, 1:00pm-2:15pm, 1075 Duncan Hall


Description

For the past several decades, parallel computing has played a vital role in addressing the performance demands of high-end engineering and scientific applications. Over the last decade, parallel computing has become important to a much broader audience as the regular increases in clock speed that previously fueled performance increases became infeasible. Today, nearly all computer systems --- phones, game consoles, laptops, desktops, supercomputers, and large-scale data centers --- are being built using chips with multiple processor cores. Almost all increases in the performance of recent processors comes from more parallelism rather than increases in clock speed. The shift to multicore chips affects all segments of the IT industry and all areas of Computer Science.

The goal of COMP 422/534 is to introduce you to the foundations of parallel computing including the principles of parallel algorithm design, analytical modeling of parallel programs, programming models for shared- and distributed-memory systems, parallel computer architectures, along with numerical and non-numerical algorithms for parallel systems. The course will include material on emerging multicore hardware, shared-memory programming models, message passing programming models used for cluster computing, data-parallel programming models for GPUs, and problem-solving on large-scale clusters using MapReduce. A key aim of the course is for you to gain a hands-on knowledge of the fundamentals of parallel programming by writing efficient parallel programs using some of the programming models that you learn in class.


Course Material


Textbook

Introduction to Parallel Computing, Second Edition [Recommended]
Ananth Grama, George Karypis, Vipin Kumar, Anshul Gupta
Addison-Wesley, 2003, ISBN: 0201648652

Prerequisites

(COMP 211 or COMP 215) and COMP 321. A knowledge of programming in C, C++, or similar, the basics of data structures, and the basics of machine architecture are assumed.