Description
Profiling computer systems; bottlenecks, Amdahl’s law. Concurrency: threads and locks. Techniques for programming multicore processors; cache consistency. Transactional memory. Streaming architectures, vectorization, and SIMD. High-performance programming languages.
The computers are fast quiz might be on our exams…
Roadmap
- Learn Rust
- Learn HW
- Parallelize code well
- Find out what is slow with profiling
- 1-thread performance + CUDA
- Cloud computing + queueing theory
Concepts
- Performance
- Parallelism
- Rust
- Concurrency
- Multiple Ownership
- Non-Blocking IO
- Processors
- Cache
- Algorithms
- Concurrency
- Parallelism
- Systems Design and Software Architecture
- Locking
- Atomicity
- Dependencies
- Speculation
- Critical Paths
- Side Effects
- Software Transactional Memory
- Early Termination
- Memory Consistency
- Rate Limiting
- Data Parallelism
- Parallelism
- Compiler Optimizations
- Query Optimization
- Self Optimizing Software
- GPU Programming
- Cryptography
- Bitcoin
- LLMs
- Performance Profiling
- Load Testing
- Bottlenecks
- Flamegraphs
- Profilers
- Causal Profiling
- Simulation Profiling
- Cloud Computing
- Queueing Theory
- Convergence
- Averages
- Queueing Processes
- Queueing for Performance