Slides.
- Computer anatomy
- CPU, RAM, HDD
- Desktop vs. cluster
- Why do programs run slowly?
- Hardware bottlenecks
- Algorithmic complexity
- How do you know why a program is slow?
- System utilities: time, top, and profiling tools
- Code/algorithm analysis
- Parallelizeable problems
- Monte Carlo
- split-apply-combine
- Amdahl’s Law
- Race conditions
- HPC environments
- multithreading
- clusters/supercomputers
- cloud/grid computing
- scheduling jobs
- Relevant technologies
- Shared vs. distributed memory
- OpenMP, MPI, other language-specific libraries
- Hadoop, MapReduce
- GPUs and related terminology
- Single precision computation
- Double precision computation
- Memory management in GPU
- Languages for GPUs - CUDA-C, Python, …