Modern Languages and Concurrency Constructs 159
which we discussed and provided examples of earlier in section 4.2.1. The rea-
sons for the widespread use of message passing are many. It is a mature model
that has been actively used since the 1970s on many different parallel plat-
forms. Message passing has often aided in portability, as it does not assume
anything about the underlying hardware. Programs written using message
passing abstractions program to the abstraction and achieve portability by
using implementations of the abstraction on different platforms. A message
passing program written in MPI can target MPI implementations that utilize
shared memory for large SMPs, or network communications for distributed
memory clusters. All that is required ...