hpc
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| hpc [June 10, 2026 at 15:33] – created Ivan Janevski | hpc [August 26, 2026 at 15:46] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| # HPC | # HPC | ||
| - | **HPC** (or **High-performance engineering**) is a type of software engineering where you try to squeeze as much performance as you can out of silicon. | ||
| - | Modern | + | **High-Performance Computing (HPC)** is the practice of extracting maximum computational power from available |
| + | |||
| + | HPC is fundamentally about hardware-software co-design. You can't optimize without understanding the machine: cache hierarchies, | ||
| + | |||
| + | ```bash | ||
| + | # Compile openmp program | ||
| + | $ gcc -O3 -fopenmp -o app app.c | ||
| + | |||
| + | # Run with 4 threads | ||
| + | $ OMP_NUM_THREADS=4 ./app | ||
| + | |||
| + | # Profile with perf | ||
| + | $ perf record ./app | ||
| + | $ perf report | ||
| + | ``` | ||
| + | |||
| + | Performance scales across three dimensions: parallelism (use all cores), memory efficiency (minimize stalls), and communication (reduce latency and bandwidth waste). Most real bottlenecks live at the intersection of these. A fast algorithm on the wrong hardware, or perfect parallelism with pathological cache behavior, both fail. | ||
| + | |||
| + | ## Concepts | ||
| + | |||
| + | 1. [[hpc-hardware|Hardware architectures]] | ||
| + | 2. [[hpc-parallelism|Parallelism models]] | ||
| + | 3. [[openmp|OpenMP]] | ||
| + | 4. [[mpi|MPI]] | ||
| + | 5. [[cuda|CUDA]] | ||
| + | 6. [[hpc-memory-hierarchy|Memory hierarchy]] | ||
| + | 7. [[hpc-cache-optimization|Cache optimization]] | ||
| + | 8. [[hpc-vectorization|Vectorization]] | ||
| + | 9. [[hpc-profiling|Profiling]] | ||
| + | 10. [[hpc-roofline-model|Roofline model]] | ||
| + | 11. [[amdahls-law|Amdahl' | ||
| + | 12. [[hpc-communication-patterns|Communication patterns]] | ||
| + | 13. [[hpc-load-balancing|Load balancing]] | ||
| + | 14. [[hpc-numerical-libraries|Numerical libraries]] | ||
| + | 15. [[hpc-cluster-computing|Cluster computing]] | ||
| + | 16. [[hpc-debugging-distributed|Debugging distributed applications]] | ||
| + | 17. [[hpc-performance-bottlenecks|Performance bottlenecks]] | ||
| + | 18. [[hpc-heterogeneous-computing|Heterogeneous computing]] | ||
hpc.1781105626.md.gz · Last modified: by Ivan Janevski
