Source map
Transcript spans locate lecture material. They do not measure the proportion of original exposition.
| Chapter | Section | Recording | Transcript span | Lecture material | Research extension | Teaching construction | Evidence class |
|---|---|---|---|---|---|---|---|
| chapter-01-what-hpsc-is-for.html | The objects of the chapter and the running case | Original teaching; no recording span | The unit flop/s and the example of 10^6 unknowns, which fix the quantities of the model. | TOP500 definition of Rmax and Rpeak. | The triple (problem, algorithm, machine), the cost model T = W/R with its three assumptions, the two feasibility constraints, the running case. | definition | |
| chapter-01-what-hpsc-is-for.html | Theory, experiment and computation: from a partial differential equation to a linear system | yX0KfCorP6s | 17.0–395.0 s | Theory, experiment and computation as the supports of science; the conversion of PDEs into algebraic equations; the numbers of unknowns 10^6 to 10^12. | None beyond standard Taylor expansion. | Derivation of the five-point stencil, the count 5N^2 - 4N of nonzeros, the program that checks the nonzero count and the order of accuracy. | derivation |
| chapter-01-what-hpsc-is-for.html | Four contributors and what the sources record | yX0KfCorP6s | 395.0–631.0 s | Turing, von Neumann (395-631), Krylov (595-1021 interleaved with the cost discussion) and Galerkin (1021-1119). | Turing (1936), von Neumann (1945, title page), MacTutor on Krylov and Galerkin, Hestenes and Stiefel (1952), Shewchuk (1994). | Definition of the Krylov subspace and of the Galerkin method; the checking of each attribution. | definition |
| chapter-01-what-hpsc-is-for.html | The cost of a direct solve | yX0KfCorP6s | 631.0–846.0 s | Gaussian elimination, the order n^3, 27 operations for n = 3, 10^18 operations for 10^6 unknowns, 10^6 seconds. | TOP500 and HPL: the operation count 2/3 n^3 + O(n^2) with partial pivoting; Demmel on band LU. | Exact LU count (1.3), the counting program, storage (1.4), band LU count (1.5). | derivation |
| chapter-01-what-hpsc-is-for.html | Flop/s, Rpeak, Rmax, and what the TOP500 measures | yX0KfCorP6s | 846.0–957.0 s | FLOPS and the range 10^12 to 10^15 for large machines. | TOP500 list pages (Table 1.1), the Linpack benchmark description, HPL source, the HPCG list. | Table 1.1, the ratio Rmax/Rpeak, the HPCG gap, the matrix-product and LU-solve measurements on the laptop. | empirical result |
| chapter-01-what-hpsc-is-for.html | Iterative methods and the claim of O(n log n) | yX0KfCorP6s | 957.0–1021.0 s | Iterative methods, Krylov subspace solvers, O(n log n). | Demmel lecture 24 (Table 1.2, Jacobi spectral radius), Shewchuk (bound and complexity). | Costs (1.6) and (1.7), the iteration-count program, the budget program. | derivation |
| chapter-01-what-hpsc-is-for.html | The Difference Engine and ENIAC | yX0KfCorP6s | 1119.0–1401.0 s | Babbage's engine, ENIAC, 300 operations per second, firing tables. | Science Museum Group; Weik (1961). | The finite-difference table for x^2 + x + 41; the ENIAC rates from Weik's timings; the illustrative table-cost arithmetic. | empirical result |
| chapter-01-what-hpsc-is-for.html | Growth of computing power: the data, Moore's observation and Dennard scaling | yX0KfCorP6s | 1401.0–1481.0 s | Exponential growth, the TOP500 charts. | TOP500 list pages; Moore (1965); Dennard et al. (1974). | Doubling time (1.8), sub-period doubling times, the power-density derivation (1.9) and its table. | empirical result |
| chapter-01-what-hpsc-is-for.html | Frontier and the one-day budget | yX0KfCorP6s | 1481.0–1621.0 s | Frontier: 1.7 exaflops, 23 MW, 8.7 million cores; even Frontier could not use direct methods. | TOP500 June 2023, November 2023, June 2024, November 2024 and June 2026; TOP500 Frontier system page (Nmax); OLCF user guide; EIA household figure. | The decomposition of the core count, the power arithmetic, the test of the closing claim with the two feasibility constraints, the Nmax check against the memory, and the band-LU case. | engineering check |
| chapter-02-operating-systems-and-linux-kernel.html | The objects of the chapter and the running case | Original teaching; no recording span | None; the lectures name the layers but do not follow a command. | Ritchie and Thompson definitions of image and process; syscall(2) register convention; x86 entry code documentation. | Formal model P=(A,F,c,T), privilege modes, system call, running case ./hello with events E1-E6, machine description. | definition | |
| chapter-02-operating-systems-and-linux-kernel.html | What an operating system does: multiplexing, protection and abstraction | lmlLdGMrdGU | 48.0–544.0 s | Definition, eight reasons, eight components. | None beyond the model sources. | Reduction to three mechanisms (Table 2.1), argument for two privilege modes, privileged.c. | engineering check |
| chapter-02-operating-systems-and-linux-kernel.html | Kinds of operating system, and why high performance computing uses Linux | lmlLdGMrdGU | 544.0–1025.0 s | Four types, Unix-MINIX-Linux history, milestones, Linux in HPC, characteristics. | Ritchie and Thompson section I; Torvalds 1992 posts; kernel.org v1.0; Tanenbaum-Torvalds exchange; sched(7); KernelNewbies 6.12. | Three-property reading of the four types; dated check of the lecture's history claims. | product specification |
| chapter-02-operating-systems-and-linux-kernel.html | The layers between a program and the hardware | lmlLdGMrdGU | 1025.0–1273.0 s | User-application-OS-hardware layers; shell, system libraries, kernel. | Ritchie and Thompson section VI; vdso(7); kernel documentation of /proc (Pss). | readelf/ldd/strace sessions (35 vs 17 system calls), libc sharing measurement. | empirical result |
| chapter-02-operating-systems-and-linux-kernel.html | From ./hello to the first instruction | Original teaching; no recording span | None. | Ritchie and Thompson 5.1-5.5; POSIX.1-2024 fork; fork(2); execve(2). | Events E1-E6, strace -f session, launch.c, launch_cost.c, launch-time decomposition, equation (2.1). | empirical result | |
| chapter-02-operating-systems-and-linux-kernel.html | The kernel: privileged code, system calls and loadable modules | JYTA5BWHmb0 | 147.0–678.0 s | Kernel as bridge, monolithic, virtual machine per process, loadable modules. | Tanenbaum-Torvalds exchange; entry_64 and PTI kernel documentation; syscall(2); vdso(7). | syscall_cost.c, amortization model (2.2) and chunks.c, microkernel cost remark, kernel session. | empirical result |
| chapter-02-operating-systems-and-linux-kernel.html | The scheduler: fair shares, preemption and the cost of switching | JYTA5BWHmb0 | 678.0–807.0 s | Policies, states, preemption, context switching, load balancing. | sched(7); CFS, EEVDF and nice-design kernel documentation; KernelNewbies 6.12. | Mean waiting time (2.3) with exchange proof, sched_sim.py, nice prediction (2.4) and fairshare.c, switch efficiency (2.5) and ctxswitch.c. | derivation |
| chapter-02-operating-systems-and-linux-kernel.html | Memory management: virtual addresses, page tables and page faults | JYTA5BWHmb0 | 807.0–907.0 s | MMU, address translation, page tables, TLB, protection. | Kernel mm concepts and x86-64 memory-map documentation; /proc documentation (VmPTE); fork(2) copy-on-write. | Table-size formula (2.6), pagetable.py, ptes.c, translation-cost bound (2.7), pagefault.c. | derivation |
| chapter-02-operating-systems-and-linux-kernel.html | The virtual file system, inter-process communication and the claim that everything is a file | JYTA5BWHmb0 | 907.0–1366.0 s | VFS elements, network subsystem, IPC mechanisms, everything is a file, file types. | VFS kernel documentation; Ritchie and Thompson 3.3 and 5.2. | fdtypes.c, /proc and /sys sessions, test of the lecture's file claims. | empirical result |
| chapter-02-operating-systems-and-linux-kernel.html | What the model establishes and what it does not | Original teaching; no recording span | None. | None. | Table 2.2 of lecture statements and their status; limits. | engineering check | |
| chapter-03-linux-file-system-permissions-ownership.html | The objects of the chapter and the running case | Original teaching; no recording span | Multi-user system, owner/group/others (W1L4 25:50). | Ritchie and Thompson 1974; POSIX 4.7, 4.8; inode(7); credentials(7) | Formal model of inodes, credentials and modes; the shared-directory case with requirements R1-R3 | definition | |
| chapter-03-linux-file-system-permissions-ownership.html | Who runs the commands and on what | t8tAOMqb3qc | 184.0–586.0 s | whoami, uname, lscpu, free -h | free(1) definition of used; credentials(7) | free_used.py; session on the verification machine | engineering check |
| chapter-03-linux-file-system-permissions-ownership.html | The directory tree, paths and the working directory | t8tAOMqb3qc | 653.0–1431.0 s | file and directory definitions, pwd, ls, ls -la, hidden files, cd variants | FHS 3.0; path_resolution(7); Coreutils 10.1.2 | nav_session.sh; decoding of the lecture's ls -la line | engineering check |
| chapter-03-linux-file-system-permissions-ownership.html | A directory is a table of names | t8tAOMqb3qc | 953.0–1055.0 s | link count column of ls -l | Ritchie and Thompson 1974; link(2), unlink(2), rename(2), symlink(7) | Link count of a directory (3.1); names_inodes.py | derivation |
| chapter-03-linux-file-system-permissions-ownership.html | Creating, renaming, moving, copying and deleting | t8tAOMqb3qc | 1431.0–1898.0 s | W1L3 23:51-31:38: mkdir, rmdir, mv; W1L4 0:37-25:14 (video bc4gkkRVn4Q, t=37-1514): touch, vim, gedit, rm, rm -r, cp, cp -r | mkdir(2), rmdir(2), open(2), unlink(2), rename(2); Coreutils 11.4, 11.5 | Table 3.1; files_session.sh | engineering check |
| chapter-03-linux-file-system-permissions-ownership.html | Concatenation and redirection | bc4gkkRVn4Q | 794.0–1312.0 s | cat, >, >> | open(2) O_TRUNC, O_APPEND | redirect_session.sh | engineering check |
| chapter-03-linux-file-system-permissions-ownership.html | Owner, group and other: the access rule and the ten characters | bc4gkkRVn4Q | 1550.0–1987.0 s | three categories, r/w/x, ten-character string | POSIX 4.7; path_resolution(7); Coreutils 10.1.2, 27.1 | Access rule (3.2)-(3.3); owner_class.sh; mode_decode.py; access_predicate.py | theorem |
| chapter-03-linux-file-system-permissions-ownership.html | Changing the mode: symbolic and octal notation | bc4gkkRVn4Q | 1987.0–2559.0 s | chmod symbolic and octal | POSIX chmod; Coreutils 27.2.6 | (3.4), (3.5); chmod_session.sh; chmod_model.py (24,576 cases) | derivation |
| chapter-03-linux-file-system-permissions-ownership.html | Ownership: chown, chgrp and the group of a new file | bc4gkkRVn4Q | 2559.0–2789.0 s | chown owner:group, groups | chown(2); open(2) | root_b.sh transcript | engineering check |
| chapter-03-linux-file-system-permissions-ownership.html | Defaults and special bits: the creation mask, set-group-ID, sticky and set-user-ID | Original teaching; no recording span | none (default modes are shown, not explained) | open(2), mkdir(2), POSIX umask, Ritchie and Thompson 1974, Coreutils 27.5, inode(7), POSIX 4.5 | (3.6); umask_check.py; group_session.sh | derivation | |
| chapter-03-linux-file-system-permissions-ownership.html | The shared project directory | Original teaching; no recording span | none | - | shared_dir_model.py; root_a.sh transcript | engineering check | |
| chapter-04-processes-text-memory-and-networking.html | The objects of the chapter and the running case | Original teaching; no recording span | None; the running case (residual history of a solver run) is not in the lectures. | POSIX.1-2017 Base Definitions 3.206 (line). | Formal model: byte stream, line, filter, pipeline as composition, process, signal; Jacobi running case; jacobi_log.c; machine and tool versions. | definition | |
| chapter-04-processes-text-memory-and-networking.html | Processes, states and signals | S4XYOjSoAQE | 6.0–1247.0 s | Process definition and attributes; background and foreground, & and fg; states R, S, T, Z; ps, ps -e, ps -ef; top; kill and signals; multitasking, multiprocessing, multithreading. | POSIX shell sections 2.8.2, 2.9.3; ps(1), top(1), kill(1), signal(7), wait(2), sched_setaffinity(2), proc_pid_stat(5), GNU coreutils nohup. | Multitasking, multiprocessing and multithreading defined with the kernel mechanisms; jobs_demo.sh (background job, nohup, SIGHUP, exit statuses 129 and 143); states.c (states R, S, T, Z, signals, handler, sigaction on SIGKILL and SIGSTOP, two busy loops on one processor); arithmetic check of the lecture's top screen; state diagram. | engineering check |
| chapter-04-processes-text-memory-and-networking.html | grep and the language of a regular expression | S4XYOjSoAQE | 1316.0–1531.0 s | grep PATTERN file, -n, -r with *. | POSIX Base Definitions chapter 9; GNU grep manual 3.5, 3.6; Owens, Reppy and Turon 2009; Cox 2007 (Thompson 1968 only through Cox). | Language of a regular expression, search against whole-line match, derivative matcher (regex_derivative.py) compared with grep -E on 127 strings; backtracking against automata timing (blowup.py); back-references and non-regular languages. | derivation |
| chapter-04-processes-text-memory-and-networking.html | awk: records, fields and pattern-action pairs | S4XYOjSoAQE | 1531.0–1829.0 s | awk columns, filtering rows, arithmetic, pattern matching on file.txt. | GNU awk manual chapter 1, 4.5.1, 7.1.4; POSIX awk (arithmetic, comparison of numeric strings). | Pattern-action model; lecture_files.sh reproduces the four lecture programs and shows the /M/ pitfall, field splitting and string against number comparison. | engineering check |
| chapter-04-processes-text-memory-and-networking.html | Sorting, counting and the pipeline | S4XYOjSoAQE | 1829.0–2303.0 s | sort, sort -r, numerical sort, uniq, pipe, wc, head, tail, names diff, paste, tr, sed. | POSIX Shell Command Language 2.9.2; POSIX sort and uniq; GNU coreutils sort and uniq; GNU grep manual 2.1.6, 2.3; pipe(7). | pipes.sh (SIGPIPE and PIPESTATUS, pipefail, stdout against stderr, uniq adjacency, sort -n against -g, grep statuses, leftmost-longest, BRE against ERE, glob and dot files, back-reference, pipe capacity); logsummary.sh (pipelines on the solver log). | engineering check |
| chapter-04-processes-text-memory-and-networking.html | From the residual history to the convergence rate | Original teaching; no recording span | None. | Demmel CS267 1996 notes (rho_Jacobi = cos(pi/(n+1)), Gauss-Seidel rho squared). | Eigenmodes of the Jacobi iteration, residual expansion, estimator q_last, rate_check.sh, modal_check.py, end_prediction.py, modal_big.py, error against residual (4.8), N = 1000 run. | derivation | |
| chapter-04-processes-text-memory-and-networking.html | Memory: virtual and resident size, and what free reports | TNlzx44rR88 | 6.0–148.0 s | Memory concepts (physical, virtual, swap, paging); free, vmstat, df, swapon, meminfo. | free(1), proc_meminfo(5), proc_pid_status(5), vmstat(8), swapon(8), kernel proc documentation, GNU coreutils df. | Memory prediction 16 (N+2)^2 bytes; memory_model.c (VmSize against VmRSS, first touch); meminfo_check.py (columns of free from /proc/meminfo); used definition against the lecture's top numbers. | engineering check |
| chapter-04-processes-text-memory-and-networking.html | Networking: interfaces, round-trip time and remote login | TNlzx44rR88 | 148.0–718.0 s | Loopback and physical interfaces; ping, ip, ssh, wget, scp; remote login example. | RFC 1122 3.2.1.3, RFC 792, RFC 4251, ping(8), ip(8), ssh(1), scp(1), OpenSSH 9.0 release notes. | Loopback round-trip fit of alpha and beta (loopback.sh), wget through http.server on loopback, ssh -G and local scp (ssh_tools.sh). | empirical result |
| chapter-04-processes-text-memory-and-networking.html | What the chapter establishes and what it does not | Original teaching; no recording span | None. | None. | Table 4.1 of lecture claims and their status; list of what is established and left out. | engineering check | |
| chapter-04-processes-text-memory-and-networking.html | Exercises | Original teaching; no recording span | None. | None. | Six exercises with full solutions: derive, compute, counterexample, diagnose an assumption, design judgment, implementation and measurement. | engineering check | |
| chapter-05-shell-scripting-processes-and-control-flow.html | The objects of the chapter and the running case | Original teaching; no recording span | Running problem: a parameter sweep that runs a solver and collects results; the lectures' aim of scripts that submit and collect jobs (W2L2 40:09). | POSIX 2.1, 2.8.2, 2.9.1, 2.12 (execution environments, subshells, exit status); execve(2); Bash manual 3.7.2 to 3.7.5. | Formal model: variables V and export set X, inheritance rule (5.1), cost symbol kappa; machine and versions; solver contract. | definition | |
| chapter-05-shell-scripting-processes-and-control-flow.html | A script is a file of commands: the interpreter line, the execute bit and three ways to run it | DRDzYNVw7K4 | 105.0–600.0 s | Definition of a script, uses, shells, creating hello.sh, shebang, chmod, running. | POSIX 2.1, 2.9.1 (command search, ENOEXEC); execve(2) interpreter scripts; Slurm sbatch #SBATCH lines. | exec_modes.sh (three ways, x bit, missing interpreter line); interp_line.sh (kernel reads #!, single argument on Linux); WSL /mnt/c warning. | engineering check |
| chapter-05-shell-scripting-processes-and-control-flow.html | Command substitution and arithmetic expansion | DRDzYNVw7K4 | 600.0–832.0 s | $(date) and $((5 + 2)) examples. | POSIX 2.6.3, 2.6.4; Bash manual 3.5.5, 6.5. | Wrap-around rule (5.2); arith.sh (by-name versus textual evaluation, octal, errors); consequences for read input. | derivation |
| chapter-05-shell-scripting-processes-and-control-flow.html | Variables, the environment and child processes | DRDzYNVw7K4 | 832.0–1853.0 s | Variables, command substitution into variables, env, export, parent and child scripts, unset, PATH and library/header variables. | POSIX 2.2, 2.9.1, 2.12, 8.3; Bash manual 3.7.4; ld.so(8); GCC manual; Slurm --export. | Inheritance rule (5.1) and its five consequences; env_demo.sh; path_demo.sh; quoting session; INCLUDE_PATH versus CPATH test. | derivation |
| chapter-05-shell-scripting-processes-and-control-flow.html | Reading input with read | DRDzYNVw7K4 | 1853.0–2093.0 s | echo plus read, two numbers and their sum. | Bash manual read options. | Exact semantics of read (fields, remainder, IFS, -r, status); session. | definition |
| chapter-05-shell-scripting-processes-and-control-flow.html | Exit status: what if really tests | h5Labe97yWM | 6.0–880.0 s | if/elif/else, -f test, number test with -gt and ==, grade script. | POSIX 2.9.4 if/while, test utility, 2.8.2; Bash manual 3.7.5, 6.4; sysexits.h EX_USAGE. | Eight-bit status rule (5.3); status_demo.sh; read_demo.sh with a checked grading script; == and > under [ ]. | derivation |
| chapter-05-shell-scripting-processes-and-control-flow.html | Loops: for, while and the process boundary of a pipeline | h5Labe97yWM | 880.0–1357.0 s | for over a list, while with a counter, rule of choice. | POSIX 2.9.4 for/while, 2.12; Bash manual 3.2.3. | Iteration count (5.4); loops_demo.sh (word splitting of for lists, loop at the end of a pipeline). | derivation |
| chapter-05-shell-scripting-processes-and-control-flow.html | Functions, return values and recursion | h5Labe97yWM | 1357.0–1938.0 s | Definition and call, add with return and $?, factorial by recursion. | POSIX 2.9.1, 2.9.5, return; Bash manual local. | Wrap of n! and Legendre's formula; functions_demo.sh (return range, global variables, local x=$(cmd), one process per call). | derivation |
| chapter-05-shell-scripting-processes-and-control-flow.html | The monitoring script and the price of a process | h5Labe97yWM | 1938.0–2622.0 s | Disk-space monitoring script and its explanation; recap. | POSIX 2.12; Bash manual 3.2.3. | Process-count rule (5.5); fork_cost.sh (counts, kappa, loop against one awk); monitor.sh; extrapolation to 10^6 lines. | empirical result |
| chapter-05-shell-scripting-processes-and-control-flow.html | The parameter sweep: every construct together | Original teaching; no recording span | None (applies the constructs of both lectures). | Bash manual wait, local; POSIX 2.5.2. | sweep.sh: status-checked collector, case, background processes with wait, file-based results, exit status of the sweep. | engineering check | |
| chapter-05-shell-scripting-processes-and-control-flow.html | What the model establishes and what it does not | Original teaching; no recording span | Statements of the lectures including their own explanations. | None. | Table 5.1 and boundaries. | engineering check | |
| chapter-05-shell-scripting-processes-and-control-flow.html | Exercises | Original teaching; no recording span | None. | None. | Six exercises with full solutions: derive, compute, counterexample, diagnose an assumption, design judgment, implementation and measurement. | engineering check | |
| chapter-06-hpc-components-and-node-architecture.html | The objects of the chapter and the running case | Original teaching; no recording span | Basic vocabulary used by both lectures (node, cluster, core, thread). | Intel Optimization Reference Manual section 2.3.1 (hybrid cores); Notebookcheck (clock range). | Peak-rate model phi = 2 X l, P = f phi; Rpeak versus Rmax; machine description and session; running case (polynomial loop). | definition | |
| chapter-06-hpc-components-and-node-architecture.html | Units, the TOP500 list, and what the lecture means by high performance computing | G8zq1xqe_jI | 6.0–1080.0 s | ENIAC, speed plot, flop units, TOP500 and HPL, Frontier figures, computation as third mode of science, definitions of HPC and supercomputer, parallel versus distributed, applications. | TOP500 Frontier page and lists (2008, 2019, 2026); TOP500 Linpack description; HPL page; Army Ordnance monograph on ENIAC. | Arithmetic listing: Rmax/Rpeak, per-core rate, energy, HPL work and time, doubling times of rank 1 and rank 500; corrections of dates and of the axis label. | empirical result |
| chapter-06-hpc-components-and-node-architecture.html | The components of a cluster and the path of a job | G8zq1xqe_jI | 1080.0–1516.0 s | Cluster diagram (login, compute, accelerated, interconnect, storage layers, management); software stack slide; home on NFS and scratch on Lustre. | Slurm overview; OpenHPC site; Lustre manual sections 1.2.2, 1.3, 1.3.1. | Role partition and access rule; job path in steps; striping model with listing and the bandwidth rule (6.2) for one file. | engineering check |
| chapter-06-hpc-components-and-node-architecture.html | Inside one compute node: sockets, memory, input and output, and the peak rate | G8zq1xqe_jI | 1516.0–1551.0 s | Rack, node, dual-socket motherboard, DIMMs, network interface, accelerator card; components of a supercomputer. | Intel manual Tables 2-3 to 2-5 (2x256-bit FMA units, latency 4); uops.info measurements for P-core and E-core FMA. | Derivation of the P-core peak 16 flop per cycle, 70.4 Gflop/s at 4.4 GHz, and of the E-core 8 flop per cycle, 26.4 Gflop/s at 3.3 GHz; node bound 387.2 Gflop/s at the highest clocks. | product specification |
| chapter-06-hpc-components-and-node-architecture.html | Why parallel: capacity, time, and the concurrency a program offers | G8zq1xqe_jI | 1551.0–2062.0 s | Reasons for parallel computing; concurrency, scalability, data locality, modularity; OpenMP, MPI, OpenACC and CUDA. Teamwork of domain and computational experts; the route from algorithm to parallel algorithm, code, parallel framework, and workflows or problem-solving environments with a graphical interface; commercial applications such as MATLAB (t = 1612 to 1743). | Brent (1974) abstract. | Memory-capacity arithmetic for the Jacobi grid; work-span definition of concurrency; proof of the greedy bound; work-span listing for three additions of 1024 numbers. | derivation |
| chapter-06-hpc-components-and-node-architecture.html | From a statement to instructions: opcode, operand, latency and throughput | xWBICsJyDZo | 43.0–415.0 s | Computer types, simplified model, basic computing model (a = a + b + 1, ADD/INC, opcode, operand, ALU, ISA). | Little (1961) abstract; Intel manual 2.3.1 (symmetric ISA), Tables 2-4 and 2-5. | gcc -O0 and -O2 sessions for the lecture's statement; R(K) = min(K/L, X) and K* = L X; scalar FMA ramp listing and its interpretation; anomaly of add-immediate chains. | engineering check |
| chapter-06-hpc-components-and-node-architecture.html | Flynn's taxonomy, vector lanes, and the node as a multiple-instruction machine | xWBICsJyDZo | 415.0–747.0 s | Flynn's four classes with slides and examples; SIMD in vector computers, CPUs and GPUs; MIMD shared and distributed memory. | Flynn (1966, 1972) abstracts. | Formal reading of the classes at four levels; vector FMA ramp listing; five builds of the polynomial loop; thread-scaling listing, whose printed rate is p r_min by (6.6); bounds from P-core and E-core latencies; Table 6.2 of peaks and measurements; clarification of the SIMD definition from the slides. The measurements lie between the E-core-straggler value and the sum of the rates. | empirical result |
| chapter-06-hpc-components-and-node-architecture.html | Programs, processes, and sharing one core: multiprogramming, time slicing, the context switch | xWBICsJyDZo | 747.0–1526.0 s | Process basics, single tasking on the IBM PC with MS-DOS, multiprogramming, multitasking, process control block, context switch, symmetric and asymmetric multiprocessing. Terminate-and-stay-resident programs (t = 1192). | Intel M80C286 data sheet. | Utilization model U(n) = 1 - w^n; check of the hardware claim; pipe ping-pong listing for processes and threads; overhead share of a time slice. | empirical result |
| chapter-06-hpc-components-and-node-architecture.html | Threads and Hyper-Threading | xWBICsJyDZo | 1526.0–2094.0 s | Thread definition and table of unique and shared items; benefits and scheduling criteria; Hyper-Threading slide. | pthreads(7); Marr et al. (2002); Intel manual 2.3.1. Slurm multi-core support page (--hint=nomultithread). | Shared-core model g = min(2, L X / K) (6.8); reading of the HPC recommendation from the equal-share speedup (6.6) as protection against bad placement; the thread-scaling run cannot test it. | derivation |
| chapter-06-hpc-components-and-node-architecture.html | What the models establish and what they do not | Original teaching; no recording span | Table of 16 lecture statements and their status. | None. | Table 6.3; limits of the models. | engineering check | |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | The objects of the chapter and the running case | iBMlMcT2Q_4 | 6.0–39.0 s | Agenda of the lecture: memory technologies, hierarchy and cache, SMP, NUMA and cluster. | Intel ARK for the machine; guest sysfs for the cache geometry. | Formal model of lines, sets, ways, traces, UMA and NUMA, distributed memory; the row-order and column-order matrix sum as running case. | definition |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Memory technologies, the processor-memory gap and two hardware remedies | iBMlMcT2Q_4 | 39.0–592.0 s | Table of SRAM, DRAM, flash, hard disk; read and write cycles; the gap; interleaving; wider paths. | Drepper 2.1 (cell structures, refresh, cost); Pentium M cycle counts; internal check of the 52 %/7 % plot. | Interleaved-bank rate min(1, kappa/tau) with proof and simulation (interleave.py); comparison of slide speeds with measured latencies. | derivation |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Locality, reuse distance and the memory hierarchy | iBMlMcT2Q_4 | 271.0–826.0 s | Requirements, temporal and spatial locality, the hierarchy from registers to remote storage, hit and miss. | Denning (2005) locality as a distance; Mattson et al. stack property via Kim, Hill and Wood. | Reuse distance; Theorem 1 (hit iff distance < C) with proof and check (reuse.py); pointer-chase measurement of the hierarchy (chase.c). | theorem |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Inside a cache: lines, tags, sets and the conflict capacity | iBMlMcT2Q_4 | 826.0–1447.0 s | Cache as buffer of lines, directory store, data, status bits, controller, read algorithm, mapping schemes named. | Drepper 3.2, 3.3.1 (address split, associativity, Table 3.1); Kelly notes (compulsory, capacity, conflict misses); Cachegrind check. | Line-size measurement (stride.c); Lemma 2 (conflict capacity aS/gcd(S, sigma)); three-level LRU simulator (cachesim.py); independent Cachegrind session; padding prediction. | theorem |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Hit rate, average access time and the limit of the model | iBMlMcT2Q_4 | 1447.0–1478.0 s | Hit rate, hit time, miss penalty. | AMAT after Hennessy and Patterson via Kelly's notes; Little's law. | Multi-level AMAT; test against the sum loops; overlap bound t >= max(t_add, mu L / c) and implied concurrency; Table 7.1 (rowcol.c). | empirical result |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Writes, coherence and snooping | iBMlMcT2Q_4 | 1478.0–1549.0 s | Coherency problem, write-through, snooping. | Drepper 3.2, 3.3.3, 3.3.4 (write policies, MESI, RFO, shared-bus measurements). | MESI simulator with invariant check and traffic counts for four scenarios (coherence.py); link to false sharing of chapter 11. | engineering check |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Shared memory: SMP, UMA and NUMA | iBMlMcT2Q_4 | 1549.0–1976.0 s | Shared and distributed memory, SMP definition and diagram, UMA and NUMA, why NUMA is needed, NUMA implementation, Altix ICE 8400 example. | Drepper 5.1, 5.2 (NUMA factor, Altix, default policy in 2007); Linux NUMA memory policy documentation; SGI press text and slide deck. | NUMA mean latency model; bus saturation p* = B_bus/g; first-touch consequence; correction of the ICE 8400 example. | product specification |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Clusters, the interconnect and the cost of distance | iBMlMcT2Q_4 | 1946.0–2170.0 s | Cluster definition and benefits, bandwidth, latency and offloading of the HPC network. | Al-Fares et al. 2008 (fat tree, oversubscription); SGI hub offload. | alpha-beta message model and half-bandwidth size; distributed matrix sum T_p; availability model; bisection-width table and bound (topology.py). | derivation |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | What the models establish and what they do not | Original teaching; no recording span | Claims of the lecture collected in Table 7.3. | None beyond the sections above. | Claims-status table; statement of what the models leave out. | engineering check | |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Exercises | Original teaching; no recording span | None. | None. | Six exercises with solutions (derive, compute, counterexample, diagnose an assumption, design judgment, implementation and measurement). | derivation | |
| chapter-07-hierarchical-memory-and-scalable-architectures.html | Primary sources | Original teaching; no recording span | Recording and slides. | All cited sources with the claim each supports. | None. | definition | |
| chapter-08-concurrency-and-synchronization.html | The objects of the chapter and the running case | Original teaching; no recording span | The shared counter updated by threads (slides). | C11 N1570 5.1.2.4 (conflict, happens before, data race); Lamport 1979 (sequential consistency); Intel ARK (machine). | Formal model of events, schedules, conflicts, data race versus race condition; symbols; machine statement. | definition | |
| chapter-08-concurrency-and-synchronization.html | Concurrency, interleaving and overlap | ulprOSZPAu0 | 68.0–279.0 s | Time slicing, interleaving on one processor, interleaving and overlap on several; Stallings figure. | Chapter 11 definitions of concurrent and parallel. | Schedule count (8.1); one-core experiment. | definition |
| chapter-08-concurrency-and-synchronization.html | The lost update: a data race and a race condition | ulprOSZPAu0 | 279.0–579.0 s | Race definition; indeterminate and inconsistent results; two-schedule example. | C11 5.1.2.4 p4, p25; ThreadSanitizer run. | Theorem 8.1 and Corollary 8.2; exhaustive search (interleave.py); counter.c; batch-size sweep. | theorem |
| chapter-08-concurrency-and-synchronization.html | Mutual exclusion and the critical section | ulprOSZPAu0 | 579.0–1370.0 s | Lock and key; overhead of waiting; shared-cache figure; contention-only and data-sharing threads; critical section and lock. | Dijkstra EWD123 2.1 (requirements, rejected trials); POSIX 4.12; N1570 NOTE 6; Tian and Shih 2012. | Four requirements; serialization bound (8.3); batching bound (8.4). | derivation |
| chapter-08-concurrency-and-synchronization.html | Mutex locks | ulprOSZPAu0 | 1370.0–1509.0 s | Mutex, pthread example, internal binary variable. | POSIX pthread_mutex_lock table; Drepper futex mutex. | Thread sweep and batch-size sweep measurements; test of the bounds. | engineering check |
| chapter-08-concurrency-and-synchronization.html | Locks from loads and stores: Peterson's algorithm and the store buffer | Original teaching; no recording span | Atomics need hardware cooperation (remark). | Peterson 1981 (record only); Sewell et al. 2010 (x86-TSO); Lamport 1979; EWD123. | Proof under sequential consistency; explicit-state search over SC and TSO (lock_model.py); hardware tests sb.c and peterson.c; assembly of the fence. | empirical result | |
| chapter-08-concurrency-and-synchronization.html | Atomic instructions | ulprOSZPAu0 | 1509.0–1853.0 s | Test-and-set, compare-and-swap, locks from them, hardware cooperation, queue. | N1570 7.17; Sewell et al. 3; MCS 1991; OpenMP 5.2 weak clause note. | Exclusion proof of the test-and-set lock; locks.c; cas_pi.c; assembly session; cost analysis. | derivation |
| chapter-08-concurrency-and-synchronization.html | Barriers | ulprOSZPAu0 | 1853.0–2098.0 s | Level-crossing analogy; phases; dependencies, consistency, checkpointing. | OpenMP 5.2 15.3.1; POSIX pthread_barrier_wait; MCS 1991 3.1 Fig. 8; Chandy and Lamport 1985. | Barrier property; sense-reversing barrier argument; barrier.c; efficiency formula (8.5). | engineering check |
| chapter-08-concurrency-and-synchronization.html | When synchronization fails: deadlock | Original teaching; no recording span | Not covered by the recording. | Coffman et al. 1971 (record only); POSIX relock table and EDEADLK; OpenMP barrier restriction. | Deterministic deadlock demonstration; lock-order proof. | derivation | |
| chapter-08-concurrency-and-synchronization.html | The primitives in OpenMP, MPI and CUDA | ulprOSZPAu0 | 2098.0–2307.0 s | Summary; frameworks provide primitives. | OpenMP 5.2 15.2, 15.3.1, 15.8.4. | Table 8.3; omp_counter.c. | product specification |
| chapter-09-parallel-computing-numerical-models-and-cost.html | The objects of the chapter and the running case | Original teaching; no recording span | Plate problem (W3L2); canonical grid conventions are the book's. | Intel ARK and TechPowerUp for the machine. | Formal model of the plate, grid, Jacobi sweep, iteration error, work, symbols and the machine. | definition | |
| chapter-09-parallel-computing-numerical-models-and-cost.html | Moore's law, Dennard scaling and the end of faster single cores | PXmMDWzebGE | 39.0–669.0 s | Moore's law chart, MOSFET, scaling table, plateau of frequency and single-thread performance, growth of cores, parallel computing slide. | Moore 1965 and 1975; Dennard et al. 1974; Bohr 2007; Rupp trend data. | Fits of doubling times; Dennard arithmetic table with V fixed; comparison of 18 months with the data. | empirical result |
| chapter-09-parallel-computing-numerical-models-and-cost.html | Dividing a sum among people, and Amdahl's law | PXmMDWzebGE | 669.0–1194.0 s | 10,000 integers with 10 and 100 people; Amdahl's law and its limits; conclusion about machines with millions of cores. | Amdahl 1967; Gustafson 1988. | T(p) = M/p + p, optimum sqrt(M), effective serial fraction, pairwise combination, table of Amdahl limits. | derivation |
| chapter-09-parallel-computing-numerical-models-and-cost.html | From phenomenon to computation: three errors | z75dO5juDq8 | 40.0–808.0 s | Pipeline phenomenon-equation-method-computation; three errors; balance; central difference. | Goldberg 1991 (unit roundoff); NIST CODATA (Boltzmann constant). | Error decomposition (9.3); central difference with Taylor remainder; error-balance bound (9.5); experiment in double and single precision. | derivation |
| chapter-09-parallel-computing-numerical-models-and-cost.html | The plate problem and the five-point stencil | z75dO5juDq8 | 808.0–1080.0 s | Plate, Laplace's equation, grid, discretized equation, Ax = b, 'iterative is more efficient'. | Saad 2003 (eigenvalues of the model problem). | Derivation of the stencil and its truncation error; correction of the slide; maximum-principle bound (9.7); closed-form discrete solution; canonical problem: exact centre value and corner behaviour. | theorem |
| chapter-09-parallel-computing-numerical-models-and-cost.html | Jacobi iteration: convergence, iteration count and the serial code | z75dO5juDq8 | 1080.0–1147.0 s | A code is written, compiled and run; plot of the temperature field. | Saad 2003 Theorem 4.1 and eq. 13.5; Demmel 1995. | Spectrum (9.8), iteration count with amplitude 4/pi^2 (9.9), stopping-rule factor (9.10); canonical code jacobi_step; three-error experiment. | derivation |
| chapter-09-parallel-computing-numerical-models-and-cost.html | What the iteration costs, and why one core cannot keep up | Original teaching; no recording span | None (the lecture states that accuracy affects cost). | Demmel 1995 table of solver costs. | Work (9.11), measured time per point update, cost table, required speedup and Amdahl condition, work-span remark, banded Cholesky comparison. | engineering check | |
| chapter-09-parallel-computing-numerical-models-and-cost.html | From source code to instructions | z75dO5juDq8 | 1147.0–1637.0 s | Punch card, system layers, abstraction, ISA, ABI; W3L1 claim about automatic parallelization. | System V AMD64 ABI; GCC manual (-ftree-parallelize-loops, -march). | Session on the compiled kernel (14 instructions per point update); calling convention in the disassembly; automatic-parallelization test. | empirical result |
| chapter-09-parallel-computing-numerical-models-and-cost.html | What the model establishes and what it does not | Original teaching; no recording span | None. | None. | Table 9.1 of lecture claims and their status; boundaries. | engineering check | |
| chapter-09-parallel-computing-numerical-models-and-cost.html | Exercises | Original teaching; no recording span | None. | Saad Theorem 4.16 (exercise 6). | Six exercises with full solutions: derive, compute, counterexample, diagnose an assumption, design judgment, implementation and measurement. | engineering check | |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | The objects of the chapter and the running case | Original teaching; no recording span | Running problem of the book (Jacobi sweep) and the question of whether memory limits it. | None. | Formal model of a program run (F, Q, I) and a machine (P_peak, B_peak, hierarchy); the bound T >= max(F/P, Q/B); machine description with the installed memory and its pin rate. | definition | |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | The memory hierarchy: speed, size and the width of the paths | Dg69YlKdUNo | 201.0–992.0 s | Von Neumann cycle; pyramid of memory levels; speeds, sizes, costs; path widths 8 B, 32 B, 4 KB; bandwidths; warehouse analogy. | None beyond the lecture slides. | Correction of the cycle count; latency and bandwidth measurement by working-set size (hierarchy.c); half-performance length; bytes in flight. | engineering check |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | Virtual memory, paging and thrashing | Dg69YlKdUNo | 992.0–1360.0 s | Virtual address space, pages, paging, thrashing, contiguous access. | None. | Page, frame, page table, fault model; fault cost measurement (faults.c); average time with faults; the thrashing cliff table (amat.py). | derivation |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | Hit time, miss penalty, the average access time and the memory wall | Dg69YlKdUNo | 1360.0–1570.0 s | Hit, miss, hit rate, miss rate, hit time, miss penalty; hierarchy numbers. | Wulf and McKee as reported by Machanick; Ertl critique. | AMAT and two-level AMAT; failure of AMAT for streaming; memory-wall extrapolation. | derivation |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | STREAM: the bandwidth that the memory delivers | Original teaching; no recording span | None. | McCalpin STREAM rules and byte-counting conventions. | stream_mini.c with a streaming-store triad to test write allocate; interpretation. | empirical result | |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | The Roofline model: derivation, assumptions and the ceilings of this machine | Original teaching; no recording span | None. | Williams, Waterman and Patterson (technical report). | Derivation from (10.1); assumptions A1-A3; peak_fma.c; ridge points of the machine. | derivation | |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | The Jacobi sweep under the roof | Original teaching; no recording span | None. | Williams et al. 7-point stencil intensity 0.33. | Intensity of the sweep in three cache cases; layer condition; jacobi_bench.c, roofline.py, jacobi_check.c. | engineering check | |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | Shared-memory and distributed-memory machines, and the node of a leadership system | iE47tWwhBKs | 6.0–1587.0 s | Shared versus distributed memory; MPPs; CPU versus GPU; Frontier node, GPU, network, programming environment, uses; Spacetime2. | OLCF user guide; HPE talk 2023; TOP500; Kim et al. dragonfly. | Multi-link bound (10.11); Frontier numbers check; bandwidth ladder; dragonfly port budget and cut capacity; halo ratio; capacity and power per flop. | product specification |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | The Grace Hopper superchip and the economics of moving data | tCj4YXGsEXE | 39.0–1559.0 s | Grand-challenge applications, ML/DL, digital twins, Moore, energy, Grace CPU, Hopper GPU, NVLink-C2C, energy per bit, co-scheduling, ABINIT. | GH200 datasheet; whitepaper v1.21; Horowitz 2014. | Cost-error orders; ridge-point table; GH200 flop per byte and Jacobi bounds; energy per operand and per Jacobi point; ABINIT bar accounting. | product specification |
| chapter-10-memory-bottlenecks-hpc-systems-grace-hopper.html | What the models establish and what they do not | Original teaching; no recording span | Claims table. | None. | Table 10.4 and limits. | engineering check | |
| chapter-11-openmp-threads-and-work-distribution.html | The objects of the chapter and the running case | Original teaching; no recording span | Running problem: midpoint-rule pi (W4L1). | None. | Formal model: events, program order, fork, join, schedules, storage (shared/private), cost of a region; symbol list; machine description. | definition | |
| chapter-11-openmp-threads-and-work-distribution.html | OpenMP is directives, a runtime library and environment variables | DVQhXs8_o-A | 6.0–576.0 s | API of directives, library routines and environment variables; legacy-code motivation; solution stack; common core of 21 items; directive syntax and structured block; omp.h and -fopenmp. | Dagum and Menon 1998 (abstract); Menon 1998 slides (specification dates); OpenMP 5.2 sections 1.3, 3.3, 4.3. | Scope of the chapter within the common core; reading of a directive as a change of meaning. | product specification |
| chapter-11-openmp-threads-and-work-distribution.html | A first parallel program, its many outputs and the interleaving model | DVQhXs8_o-A | 576.0–1075.0 s | Hello world in a parallel region; output varies between runs; 8, 4 and 24 threads; concurrency and parallelism definitions. | None. | Count of schedules (2p)!/2^p and outputs (Catalan numbers); enumeration program; 2000-run experiment. | derivation |
| chapter-11-openmp-threads-and-work-distribution.html | Fork-join execution and the size of the team | DVQhXs8_o-A | 1075.0–1599.0 s | Fork-join model and nested regions; team size from an environment variable; omp_set_num_threads; thread number; hello world with thread number. | OpenMP 5.2 sections 1.3, 10.1, 10.1.1 (Algorithm 2.1), 18.2.1, 18.2.2, 21.1.2. | team.c checking precedence and thread numbers; correction of 'operating system' to the runtime ICV. | product specification |
| chapter-11-openmp-threads-and-work-distribution.html | Shared and private storage, redundant execution and the data race | Cz8KRZBbgpI | 101.0–334.0 s | Parallel region with pooh(ID, A); redundant execution; shared array and private ID; implicit barrier; requested versus actual threads; scalar promoted to array to avoid a race. | OpenMP 5.2 sections 5.1.1 and 1.4.1 (data-race definition, update granularity). | Model definition of a race; race.c; remark that race-freedom (memory units) and false sharing (cache lines) are independent. | definition |
| chapter-11-openmp-threads-and-work-distribution.html | The midpoint rule for pi: cost and error | Cz8KRZBbgpI | 334.0–653.0 s | Integral of 4/(1+x^2) as a sum of rectangles; serial program; omp_get_wtime. | OpenStax Calculus Volume 2 section 3.6 Theorem 3.5 (error bound). | Derivation of the bound and of the h^2/24 [f'] expansion; M = 8; h^2/12 for this f; cost-accuracy budget; pi_error.c. | derivation |
| chapter-11-openmp-threads-and-work-distribution.html | The SPMD program: cyclic and block distribution of iterations | Cz8KRZBbgpI | 653.0–974.0 s | SPMD pi program with sum[id], thread 0 copying the team size, serial global sum, cyclic and block distribution. | OpenMP 5.2 section 1.3 (different numbers of threads, different numeric results). | Dependence argument and reduction; distributions; load-balance model (11.3), (11.4); pi_spmd.c; triangle.c. | derivation |
| chapter-11-openmp-threads-and-work-distribution.html | Speedup, efficiency and Amdahl's law | Cz8KRZBbgpI | 974.0–1336.0 s | Timing table 1.86/1.03/1.08/0.97 s; speedup, linear and superlinear; Amdahl's law with alpha. | Amdahl 1967 (argument, 40 percent housekeeping, five to seven times; no equations). | Derivation from assumptions A1-A3; experimental serial fraction; two-core model; amdahl.py. | derivation |
| chapter-11-openmp-threads-and-work-distribution.html | The cost of a parallel region and the choice of the thread count | Cz8KRZBbgpI | 1336.0–1525.0 s | Overheads of thread creation, destruction and management; 1000 threads slower than serial; OMP_NUM_THREADS without recompiling; timing study. | None. | Overhead model and optimum team size; fork_cost.c; single-shot 1000-thread runs; capacity-plus-creation model; selection procedure. | empirical result |
| chapter-11-openmp-threads-and-work-distribution.html | False sharing: cache-line arithmetic and a measurement | Original teaching; no recording span | None. | Drepper 2007 sections 3.2, 6.4.1 (64-byte lines, write ownership, measured penalties). | Line-index formula (11.8); falseshare.c; pi_scaling.c with -O0/-O2 and strides 1/8; independent-copies capacity measurement. | empirical result | |
| chapter-11-openmp-threads-and-work-distribution.html | What the model establishes and what it does not | Original teaching; no recording span | None. | None. | Claim table (Table 11.1) and boundaries. | engineering check | |
| chapter-11-openmp-threads-and-work-distribution.html | Exercises | Original teaching; no recording span | None. | None. | Six exercises with full solutions: derive, compute, counterexample, diagnose an assumption, design judgment, implementation and measurement. | engineering check |