For this quiz, be able to: -- Read and write parallel programs that use the OpenMP shared memory model, when reminded of the syntax for the commands. -- Read and write parallel SPMD programs that use message passing commands Send, Receive, Reduce, AllReduce, Broadcast, Scatter, Gather/Allgather, Barrier when given the syntax for the commands. -- Identify and avoid the main pitfalls of parallel computing: deadlock, sequential execution, race conditions. -- Measure speedup and efficiency. -- Use Amdahl's law to bound parallel execution time. -- Distinguish between shared memory computing and distributed memory computing and identify advantages/disadvantages. -- Distinguish between SIMD, MIMD, and SPMD programming and identify advantages/disadvantages. -- Explain what GPUs are, why they are good computational devices, and why they can be difficult to use effectively. -- Read parallel programs that use Cuda or OpenCL, given syntax definitions for calling upon the GPU.