Source: https://www.iare.ac.in/sites/default/files/lecture_notes/IARE_MPI_LECTURE_NOTES_0.pdf