|
| 1 | +# Interdisciplinary Numerical Methods: Parallelism in Julia "Spoke" 18.S192/16.S098 |
| 2 | + |
| 3 | +This course covers the the methods available to write high performance parallel codes in Julia, including threading, GPU acceleration, and distributed programming with MPI and Dagger.jl. |
| 4 | + |
| 5 | +By the end of the course students will be able to use Julia to write write portable and performant code that scales from their laptop CPUs to GPU-enabled supercomputer clusters like NERSC Perlmutter. These skills will be illustrated with a set of applications including scientific codes like Gray-Scott, and training large scale AI applications like LLMs. |
| 6 | + |
| 7 | +## Logistics |
| 8 | + |
| 9 | +**Lectures:** Mondays, Wednesdays, and Fridays 11 AM - 12 AM in room 36-144. |
| 10 | + |
| 11 | +**Prerequisites:** 18.03, 18.06, or equivalents, and some programming experience. You should have taken the [first half-semester numerical "hub" 18.S190/16.S090](https://github.com/mitmath/numerical_hub). Familiarity with Julia is assumed. |
| 12 | + |
| 13 | +**Instructors:** A. Edelman |
| 14 | + |
| 15 | +**Teaching Assistants:** Raye Kimmerer, Eveylne Ringoot, Rabab Alomairy |
| 16 | + |
| 17 | +**Office Hours:** |
| 18 | +- Raye on Tuesdays and Thursdays 12:45PM - 1:45PM on Zoom room `rayegun`. |
| 19 | + |
| 20 | + |
| 21 | +**Lecture Recordings:** Unfortunately we are not teaching in a recorded classroom this semester. |
| 22 | + |
| 23 | +**Links:** Worth bookmarking: |
| 24 | + |
| 25 | +## Grading |
| 26 | + |
| 27 | +- 6 Homeworks: 90% |
| 28 | + |
| 29 | +- Class Participation: 10% |
| 30 | + |
| 31 | +## Homeworks at a glance |
| 32 | + |
| 33 | +| Homework | Assigned | Due | Topic | Solution | |
| 34 | +| --------------------------------------------------------------- | -------- | ------ | -------------------------------------------------- | ------------------------------------------------------------------------------------ | |
| 35 | +| [HW0](homework/HW0.pdf) | April 2 | April 7 @ 11:59PM | Logistics | |
| 36 | +| [HW1](homework/HW1.pdf) | April 7 | April 14 @ 11:59PM | Threadin | |
| 37 | + |
| 38 | +## Lectures at a glance (Lectures being updated.) |
| 39 | + |
| 40 | + |
| 41 | +#### Homework: [Homework 0 due April 7](homework/HW0.pdf) |
| 42 | +#### Lectures: |
| 43 | + |
| 44 | + |
| 45 | +| # | Day | Date | Lecturer | Topic | Slides / Notes | Notebooks | |
| 46 | +| --- | --- | ----- | ----------------- | ---------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | |
| 47 | +| | | | | **Week 1 - Overview of Parallel Computing**| |
| 48 | +| 1 | M | 3/31 | Edelman | Parallel Computing may not be what you think, [top500](https://top500.org/), matmul vs matadd | [Intro](https://docs.google.com/presentation/d/1jkJqieNuWh4_Yx6Ura3xiGUc0NmaDK6a6J_zQJfQoEU/edit?usp=sharing)| [Language Horse Race](https://github.com/mitmath/JuliaComputation/blob/Fall24/notebooks/3_Julia%20is%20fast.ipynb) | |
| 49 | +| 2 | W | 4/2 | Edelman | If you live with one programming language, you dont know what you are missing | [Slides](https://docs.google.com/presentation/d/16Zf_SnDNlUmcCdqoaDeyAQmmqpxC66k646DCm3BXt1o/edit?usp=sharing)|| | |
| 50 | +| 3 | F | 4/4 | Kimmerer | Allocations and other serial performance tips | | [PerformantSerial Julia Pluto Notebook](https://mitmath.github.io/Parallel-Computing-Spoke/notebooks/PerformantSerialJulia.html) |
| 51 | +| | | | | **Week 2 - Parallelism Concepts and Julia Performance**| |
| 52 | +| 4 | M | 4/7 | Edelman | If you see an algorithm that doesn't look like it should be parallel it's probably Parallel Prefix | [Slides](https://github.com/mitmath/18337/blob/master/lecture10/prefix.pptx) | [reduce,prefix pluto](https://mitmath.github.io/18337/lecture9/reduce_prefix.html)| |
| 53 | +| | | | | **Week 3 - Multithreading and Multitasking**| |
| 54 | +| | | | | **Week 4 - GPU Computing**| |
| 55 | +| | | | | **Week 5 - GPU Computing**| |
| 56 | +| | | | | **Week 6 - Distributed Computing (MPI + Dagger.jl)**| |
| 57 | +| | | | | **Week 7 - Parallelism Concepts and Julia Performance**| |
| 58 | + |
| 59 | + |
0 commit comments