Computer_Science
 Home | People | Curriculum | Projects | Resources | Media

CMSC 392: High Performance Scientific Computing

Links to Course Resources

Instructor: John Dougherty

Semester & Year: Fall 2007

Schedule: Lecture/Lab MWF 11:30 - 12:30 in the CS Teaching Lab (KINSC H110)

Text: Wilkinson, B., and Allen, M. Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers, second edition. Prentice-Hall, Upper Saddle River, NJ, 2005 [ISBN 0-13-140563-2].

Additional Materials:

  • MPI: The Complete Reference, by M. Snir, S. Otto, S. Huss-Lenderman, D. Walker, and J. Dongarra.
  • Unix Networking Programming, by R. Stevens et.al. [on reserve in the Science Library]
  • Requirements: Two exams, term project, programming labs and homeworks.

    Learning Accomodations: Students who think they may need accommodations in this course because of the impact of a disability are encouraged to meet with the instructor in private (e.g., during office hours) early in the semester. Students should also contact Rick Webb, Coordinator, Office of Disabilities Services (610-896-1290) to verify their eligibility for reasonable accommodations as soon as possible. Early contact will help to avoid unnecessary inconvenience and delays, and facilitate learning.

    Collaboration: You are encouraged to discuss the lecture material and the weekly labs and problems with other students, subject to the following restriction: the only "product" of your discussion should be your memory of it - you may not write up solutions together, or exchange written work or computer files.
    Collaboration is not allowed on exams.

    Prerequisites: CMSC 206: Data Structures; suggested - CMSC240: Computer Organization, CMSC355: Operating Systems

    Description: The goal of this course is to introduce the student to the challenges involved in solving computationally demanding problems in the sciences and economics. The course will also cover the potential gains and consequences of computation where concurrency is exploited as parallel/distributed systems; will also cover the basics of networking. Concepts will be supported by labwork using the Linux workstations and at least one parallel programming environment (PVM or MPI); experience with a shared-memory implementation of MPI or OpenMP is possible. Students will be expected to understand principles, as well as work to implement parall applications (including installing software, benchmarking and conducting experiments).

    The foundations of HPSC computing are presented, including:

    Architectures
    • message passing
    • shared memory
    • distributed shared memory
    • clusters/Beowulf
    • grids
    • multicore
    Algorithms
    • "brain-dead" parallelism
    • divide and conquer
    • pipelining and vector processing
    • data parallel
    • sorting
    • searching and optimization
    Implementation Issues
    • correctness and debugging
    • models and metrics for performance
    • load balancing and scheduling
    • termination detection
    • real-time
    • networking and IPC
    • dependability and performability
    Scientific Applications
    • Numerical/Matrix Computations
    • Monte Carlo Methods
    • N-body
    • Bioinformatics/Genomics
    • Simulation
    • Image Processing

    A course syllabus is available online from 2001; new version under revision.

    Haverford College Page maintained by John Dougherty.
    Computer Science Department, Haverford College.