Lecture notes

Lecture notes

Week 1:

Lectures 1 & 2:  Introduction

-- history and reasons for paradigm shifts in supercomputing

-- structure of class, expectations, goals, etc

-- Homework 1

Week 2:

Lecture 3: Primers -- grape, hummingbird, Linux, vi

Lecture 4: Primers -- Fortran (slides from CSC)



Linux primers/cheat sheets:

Linux primer

Linux cheat sheet

Another Linux (Bash) cheat sheet

Fortran tutorials:

Fortran tutorial from AMS 129 (Prof. Dongwook Lee;Youngjun Lee):


Another Fortran tutorial to work through (Prof. Pascale Garaud):

Part 1

Part 2

Part 3

This is a nice tutorial to learn from too: https://www.tutorialspoint.com/fortran/index.htm

Week 3:

Lectures 5 & 6: Theory Chapter 1:  Parallel machine models and parallel programming models

Week 4:

Lecture 7 : Batch job schedulers -- PBS on grape and SLURM on Hummingbird

Lecture 8: MPI

Week 5:

Lecture 9: MPI (continued)

Lecture 10: Theory Chapter 2: Designing parallel algorithms -- PCAM

Week 6:

Lecture 11: PCAM in-class exercises

Lecture 12: Theory Chapter 3: A quantitative basis for design (Part 1)

Week 7:

Lecture 13: Theory Chapter 3: A quantitative basis for design (Part 2)

Lecture 14: OpenMP

Here are some other useful links for OpenMP stuff:

F95+OpenMP from Ploytecnica de Madrid

Advanced OpenMP topics (Tasks, Nested, ..) from NASA

A set of OpenMP examples from the OpenMP 4.5 API specification

Week 8:

Lecture 15: Theory Chapter 4: Putting components together

Lecture 16: Part 1: Performance analysis and debugging

Lecture 16: Part 2: Other programming tools -- HPF, CoArray Fortran etc

Here are some other useful links for this stuff:

General profiling

Jumpshot, Vampir, Tau


The rise and fall of HPF

CoArray Fortran 1

CoArray Fortran 2


Week 9:

Lecture 17: Case Study: Parallel Matrix Multiply (online lecture by James Demmel, UCB)