p4 is a library of macros and subroutines developed at Argonne National Laboratory for programming a variety of parallel machines in C and Fortran. Its predecessor was the m4-based "Argonne macros" system described in the Holt, Rinehart, and Winston book "Portable Programs for Parallel Processors, by Lusk, Overbeek, et al., from which p4 takes its name. The current p4 system maintains the same basic computational models described there (monitors for the shared-memory model, message-passing for the distributed-memory model, and support for combining the two models) while significantly increasing ease and flexibility of use. The current release is version 1.3. Features include: + library of useful monitors for shared-memory programming + portable monitor-building primitives + send/receive for shared-memory, distributed memory, and clusters + support for heterogeneous computing + Emacs info version of the manual for on-line help + Shared-memory programming even on uniprocessor workstations + instrumentation for automatic logging/tracing + Either automatic or user-controlled buffer-pool management + Remote startup; no daemons necessary + optional secure server for faster startup on networks + optional automatic logging of events for upshot tracing + asynchronous communication of large messages + global operations (broadcast, global sum, max, etc.) + both master-slave and SPMD models for message-passing programs p4 is intended to be portable, simple to install and use, and efficient. It can be used to program networks of workstations, distributed-memory parallel supercomputers like the Intel Paragon, the Thinking Machines CM-5, and the IBM SP-1, as well as shared-memory multiprocessors like the Kendall Square. It has currently been installed on the following list of machines: Sequent Symmetry (Dynix and PTX), Convex, Encore Multimax, Alliant FX/8, FX/800, and FX/2800, Cray X/MP, Sun (SunOS and Solaris), NeXT, DEC, Silicon Graphics, HP, and IBM RS6000 workstations, Stardent Titan, BBN GP-1000 and TC-2000, Kendall Square, nCube, Intel IPSC/860, Intel Touchstone Delta, Intel Paragon, Alliant Campus, Thinking Machines' CM-5, and the IBM SP-1 (TCP/Ethernet, TCP/switch, EUI, and EUI-H). It is not difficult to port to new systems. A useful companion system is the upshot logging and X-based trace examination facility. The macros to create logs are included in p4. Upshot (an X program for graphically displaying the logs) is available separately. You can obtain the complete distribution of p4 by anonymous ftp from info.mcs.anl.gov. Take the file p4-1.3.tar.Z from the directory pub/p4. The distribution contains all source code, installation instructions, a User's Guide in both ascii text and latexinfo format, and a collection of examples in both C and Fortran. A copy of the postscript for the manual is available separately as p4-manual.ps.Z. An article on p4 is available in p4-paper.ps.Z. There are a few features that are not implemented on certain machines. See the machine-specific section of the manual for details. To ask questions about p4, report bugs, contribute examples, etc., send mail to p4@mcs.anl.gov. To subscribe to a list to receive announcements about new releases and bug fixes, send your request to the same place, p4@mcs.anl.gov. Ralph Butler Rusty Lusk lusk@mcs.anl.gov