Introduction to High Performance Computing (CS 494)

Course Description

This course aims to introduce students to high performance computing (HPC) in a general way that is useful to computer science students and all STEM fields. The course will cover fundamental HPC architecture concepts and parallel computing systems software techniques. The course will give students of other domains the needed knowledge to use supercomputers as a vital tool in their quest for new knowledge. The content includes fundamental architecture aspects of shared-memory and distributed-memory systems, as well as paradigms, algorithms, and languages used to program parallel systems. Students will complete several assignments investigating the use of parallel processing systems.

Course Material
Material Covered
  • High Performance Computing Systems (Hardware)
    • Shared-memory systems
    • Distributed-memory systems
  • Benchmarking
  • Resource Management
  • Parallel Programming Models (Software)
    • OpenMP
    • Message Passing Interface (MPI)
  • Parallel Algorithms
  • Performance Analysis and Tuning
  • Debugging
  • Checkpointing
  • Visualization
    • Performance/System
    • Scientific
  • Future Systems
Grading
  • 50% homeworks
  • 30% exams
  • 20% quizzes and class participation