Computing where processes are carried out simultaneously
Break a problem into parts that can be solved separately and recombined
When figuring out how to parallelize your code, important to think about
- What portions of your code are taking the most time
- Dependencies (which parts of the code depend on one another)
- Potential overhead of parallelization (work-per-task vs. work/overhead of distributing to multiple cores)