(Originally recorded 2019-05-16)
In this lecture we focus on one of the most user-friendly mechanisms for parallelization: OpenMP.
As opposed to the manual and program-based approaches to parallelization we have looked at thus far (threads and tasks), OpenMP is compiler-based. Traditionally applied to parallelizing loops, OpenMP simply requires that the user insert appropriate compiler directives at points in the code that are suitable for parallelization.
All of the same issues about parallelization (races etc) still apply, but the original source code does not have to be changed.