AMATH 483/583 High-Performance Scientific Computing
Course Essentials
Course Calendar
Syllabus
Important Notice for Spring 2022
Grading Policies and Procedures
Computer Usage and Requirement
Course Collaboration
Academic Honesty
Recommendations
Course Errata
Lectures
Lecture 1: Course Overview and Introduction to HPC
Lecture 2: Starting out with C++
Lecture 3: Further Adventures in Programming with C++
Lecture 4: The Vector class
Lecture 5: The Matrix class
Lecture 6: CPUs
Lecture 7: Optimizing for CPUs and Hierarchial Memory
Lecture 8: BLAS, Roofline Model, Strassen’s Algorithm
Lecture 9: Strassen’s Algorithm. Sparse Matrices.
Lecture 10: Introduction to Concurrency and Parallel Computing
Lecture 11: Shared Memory Parallelism, Correctness, Performance
Lecture 12: Tasks, async, C++ Concurrency
Lecture 13: Two-Norm, PageRank, Lambda
Lecture 14: OpenMP
Lecture 15: GPUs
Lecture 16: GPUs
Lecture 17: Distributed Memory
Lecture 18: Message Passing
Lecture 19: The Message Passing Interface
Lecture 20: Cannon’s Algorithm
Assignments
Problem Set #1
Problem Set #2
Problem Set #3
Problem Set #4
Midterm Evaluation
Problem Set #5
Problem Set #6
Problem Set #7
Problem Set #8
Final Exam
Excursus
The Pre Processor
Docker
Set Up Your Development Environment (Without Docker)
Walkthrough of Performance Profiling
Memory Management (Or: I got a segmentation violation, now what?)
Walkthrough of the Basic Basics of Using a Symbolic Debugger
Function Objects
More on Lambda
Sparse vs Dense Computation (Or, How to be Faster while Being Slower)
Connecting to Hyak with Visual Studio Code
A note on encryption for those interested
Additional Resources
Texts and Other Useful References
Accessing Amazon Web Services (AWS) Servers
Tutorial: Modern C++ for High Performance Computing
Spring 2019 AMATH 483/583
Spring 2020 AMATH 483/583
Spring 2021 AMATH 483/583
Bibliography
AMATH 483/583 High-Performance Scientific Computing
Table of Contents
»
Assignments
Assignments
¶
Problem Set #1
Background
Preliminaries
Docker
Warm Up
Exercises
Turning in The Exercises
Problem Set #2
Background
Introduction
Preliminaries
Warm Up
Exercises
Turning in The Exercises
Problem Set #3
Background
Introduction
Preliminaries
Warm Up
Exercises
Turning in the Exercises
Problem Set #4
Background
Introduction
Preliminaries
Warm Up
Exercises
Submitting Your Work
Midterm Evaluation
Background
Introduction
Warm Up
Problems
Submitting Your Work
Problem Set #5
Background
Introduction
Preliminaries
Warm Up
Exercises
Submitting Your Work
Problem Set #6
Background
Introduction
Preliminaries
Warm Up
Exercises
Problem Set #7
Background
Introduction
Preliminaries
Warm Up: PS6 Reprise
Problems
Problem Set #8
Background
Introduction
Iterative Solvers
Preliminaries
Warm Up
Problems
Submitting Your Work
Final Exam
Background
Introduction
Eigenfaces
Data Files
test.bash and verify.bash
Base Case: eigenfaces_seq
Sequential Optimization: eigenfaces_opt
Parallelization
Blocking for Cache (AMATH 583)
Using dgemm library call (Extra Credit)
MPI: eigenfaces_mpi
max.bash
Submitting Your Work