What is the difference between ranks and processes in MPI?
Rank is a logical way of numbering processes. For instance, you might have 16 parallel processes running; if you query for the current process' rank via MPI_Comm_rank you'll get 0-15.
Rank is used to distinguish processes from one another. In basic applications you'll probably have a "master" process on rank = 0 that sends out messages to "slave" applications on rank 1-15. For more advanced applications you can divide workloads even further using ranks (i.e. 0 rank master process, 1-7 perform function A, 8-15 perform function B).