The
use of parallel computers to support engineering design and scientific
research has become common-place. This is partly due to the wide use of
two or four-way parallel computers, known as SMP (Symmetric Multiprocessing)
systems. Simulation by computers today is a third mode of scientific research
that complements experimentation and theoretical analysis by making possible
the exploration of phenomena that cannot be studied otherwise, and by providing
intuition to guide experimental and theoretical work. In several engineering
problems, parallel computers reveal the characteristics and feasibility
of new designs for VLSI CAD, data mining, network simulation, etc. New
journal from IEEE, Computational Science and Engineering, tells us the
growing importance in this area.
This course is about the programming of distributed and
shared memory parallel computers. It will start with a description of parallel
machine organizations from a programmer's perspective. Message passing
and shared memory program model will be covered in some detail. Languages/libraries
such as MPI, PVM, HPF, OpenMP, Pthreads, and Java Threads will be studied
with examples. The last part of the course will focus on a few large parallel
applications to discuss several bottlenecks and issues such as sychronization
and load balancing.
-
Grade Policy
-
Midterm Exam 20%
-
Final Exam 30%
-
Term Project 30%
-
Homework 20%
-
Lecturer
-
Textbook
-
References
-
[Sabot] Gary W. Sabot, High Performance Computing, Addison
Wesley Pub., 1995.
-
[Foster] Ian Foster, Designing
and Building Parallel Programs, Addison Wesley Pub., 1995.
-
[Pacheco] Peter S. Pacheco, Parallel Programming with MPI,
Morgan Kaufmann Pub., 1997.
-
[Pthreads] B. Nichols, D. Buttlar and J. P. Farrell, Pthreads
Programming, O'Reilly & Ass., 1996.
-
[JavaT] Scott Oaks and Henry Wong, Java Threads, O'Reilly
& Ass., 1997.