Lectures are on Tuesdays and Thursdays from 10:15 AM - 11:30 AM. The course website is on GitHub (https://github.com/chaneyn/CEE690). Class announcements will be made via Canvas (CEE 690.01.Sp26).
Professor Nathaniel W. Chaney (Nate)
Email: nathaniel.chaney@duke.edu
Office: FCIEMAS 2463
Office hours: TBD
This course will equip students to build and deploy high-performance simulation tools for large-scale environmental challenges. The topics that will be covered include high performance computing, scripting at the terminal, text editors, building modular code, compiled and scripted languages, profiling, unit-testing, documentation, and parallelism via OpenMP, MPI, and CUDA. Other topics will include briding high-level Python logic with low-level hardware.
CEE 506: Environmental Spatial Data Analysis is a prerequisite. If you have not taken CEE 506, please contact Nate to determine if this course is appropriate for you.
There are no required textbooks.
The course grade will be based on:
- Homework: 20%
- Project I: 40%
- Project II: 40%
- There will be two homeworks; each one will be due at the same time as each project.
Note that the schedule is subject to change (and will change).
Part I: Python
| Date | Topic | Assignments |
|---|---|---|
| 01/08 | The headless environment | - |
| 01/13 | Text editors | - |
| 01/15 | Software architecture I | - |
| 01/20 | Software architecture II | - |
| 01/22 | Verification and profiling | Proposal 1 due |
| 01/27 | Packaging, automation and documentation | - |
| 01/29 | Computing on spatial grids | - |
| 02/03 | GPU computing in Python | - |
| 02/05 | High-Speed kernels: Numba CPU & CUDA | - |
| 02/10 | Anatomy of an HPC cluster | - |
| 02/12 | Shared memory parallelism I | - |
| 02/17 | Distributed memory parallelism I | - |
| 02/19 | The scheduler | - |
| 02/24 | High-Performance I/O | - |
| 02/26 | TBD | Project 1/Homework 1 due |
Part II: Compiled languages
| Date | Topic |
|---|---|
| 02/26 | Compiled languages I |
| 03/03 | Compiled languages II |
| 03/05 | The build process |
| 03/17 | Memory management and basic debugging |
| 03/19 | Tensors in memory and data layout |
| 03/24 | Computer architecture and cache |
| 03/26 | Code documentation and profiling |
| 03/31 | Code interoperability |
| 04/02 | Shared memory parallelism II |
| 04/07 | Distributed memory parallelism II |
| 04/09 | Containers |
| 04/14 | TBD |