|John Mellor-Crummey, Department of Computer Science, Rice University|
|TTh, 1:00pm-2:15pm, 1075 Duncan Hall|
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
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
(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.