AMATH 483/583 High-Performance Scientific Computing
Course Essentials
Course Calendar
Syllabus
Important Notice for Spring 2021
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: Optimizing Dense Matrix-Matrix Product
Lecture 9: Strassen’s Algorithm. Sparse Matrices.
Lecture 10: Introduction to Concurrency and Parallel Computing
Lecture 11: Parallelization and Scalability
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
Lecture 21 (Bonus): Templates and Generic Programming
Lecture 22 (Bonus): C++ Standard Library
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
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 AWS 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
Bibliography
Julia Set Image Gallery
AMATH 483/583 High-Performance Scientific Computing
Table of Contents
»
Lectures
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: Optimizing Dense Matrix-Matrix Product
Lecture 9: Strassen’s Algorithm. Sparse Matrices.
Lecture 10: Introduction to Concurrency and Parallel Computing
Lecture 11: Parallelization and Scalability
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
Lecture 21 (Bonus): Templates and Generic Programming
Lecture 22 (Bonus): C++ Standard Library