Check out the slides from this weeks meeting HERE.
This week we took a look at the differences between parallelization, concurrency, and threading, and how they can be used to make your programs more efficient.
- Parallel computing involves breaking your problem up into small, discrete tasks which can be sent to separate processors and processed at the same time.
- When eating a pizza, parallelization is equivalent to having two mouths and shoving a slice into each one at the same time.
- Intel’s Brief History of Parallel Computing
- Lawrence Livermore National Laboratory Intro to Parallel Computing
- GeeksforGeeks article about MPI
- Parallel Computing with MATLAB ❤ (if you’re a MATLAB hater, also look up parallel computing with C++, Java, Python, etc.)
- If you’re interested in learning more in depth about parallel programming, there is a free Udacity course on it
- Concurrency is the art of handling the execution of many tasks at once. With a well designed concurrent program, the CPU is constantly working on some task, so that there is no wasted time.
- To make eating a pizza a concurrent task, you would put a slice of pizza in each of your two hands. Take a bite from one, and then once your arm gets tired take a bite from the other slice. The goal is to always have a slice of pizza entering your mouth.
- Multithreading is the act of having multiple threads (see slides for processes vs. threads vs. fibers) run in a CPU at the same time.
- This is one of the hardware methods for making concurrent programs work.
Business of the SIG
- Raspberry Pi parts have been ordered, waiting on their arrival to start playing around with SIG Alg project
- Despite midterms, we decided to still meet next week (03/06)