p4 is a portable library of C and Fortran subroutines for programming
parallel computers. It is the current version of a system that has bee
n in use since 1984. It includes features for explicit parallel progra
mming of shared-memory machines, distributed-memory machines (includin
g heterogeneous networks of workstations), and clusters, by which we m
ean shared-memory multiprocessors communicating via message passing. W
e discuss here the design goals, history, and system architecture of p
4 and describe briefly a diverse collection of applications that have
demonstrated the utility of p4.