Source: https://www3.nd.edu/~zxu2/acms60212-40212/Lec-12-OpenMP.pdf