📄 readme
字号:
The P4 Parallel Processing Libraryp4 is a package of procedures that support development of parallel programsthat are portable across a wide variety of architectures. For theshared-memory model of parallel computation, p4 provides a set of primitivesfrom which monitors can be constructed, as well as a set of useful monitors.For the distributed-memory model, p4 provides typed send and receiveoperations, and creation of processes according to a text file describingfiles to be executed by created processes and the machines to execute themon. These two models can be combined to form the "cluster" model.Authorship: This system owes much to many people (see History, below) but thecurrent version was written by Ralph Butler of the University of North Floridaand Argonne National Laboratory, and Rusty Lusk at Argonne National Laboratory.History: The system is directly decended from the "Argonne macros", or"monmacs", or "parmacs", the system built at Argonne by Rusty Lusk and RossOverbeek using m4 macros, and documented in the book "Portable Programs forParallel Processors", by Boyle, Butler, Disz, Glickfeld, Lusk, Overbeek,Patterson, and Stevens, all of whom contributed to that version of the system.Major contributions were also made by Bob Olson, now at the University ofIllinois, and Remy Evard, now at the University of Oregon. The book ispublished by Holt, Rinehart, and Winston (ISBN 0-03-014404-3). p4 does notchange any of the basic concepts presented there, but is a completely newimplementation. Major differences are: The m4 macro processor is not part of the system; it is now constructed entirely with C macros and functions. Processes on various machines are specified in a text file that is read at run time, rather than in macros that are compiled into the executable file. More machines are supported, notably the BBN Butterflies, the Intel IPSC/860, and the IBM RS/6000. Machine dependent code has been isolated in two files, making the system easier to port.The files and subdirectories in this directory are: README - this file alog - the logging package for debugging/analyzing p4 pgms disclaimer - the "no warranty" statement doc - a draft user manual, man page, and other documentation lib - the p4 system C source code lib_f - Fortran interface routines makefile - the top-level makefile for installing p4 messages - distributed-memory examples messages_f - distributed-memory examples in Fortran monitors - shared-memory examples contrib - miscellaneous other examples contrib_f - miscellaneous fortran examples util - installation files, especially defs.all and makefile.proto bin - a few shell scripts and executable version of server daemon(s)See the manual in the doc subdirectory for full details on how to installand use p4. Following is a brief description of how to do theinstallation.To build p4, position yourself in this directory and type: make all P4ARCH=<machine>where <machine> is one of the machine names listed in util/machines.For example: make all P4ARCH=SYMMETRYThe 'all' is optional, for example make P4ARCH=IPSC860_HOSTTo save disk space, various intermediate files can be removed with make cleanThe system can be restored to its original, machine-independent state with make realcleanNote that this removes the machine-dependent Makefiles in each directory, sothe operation is not idempotent.It is also possible to install (or clean) only some of the directories: make all P4ARCH=SUN DIRS=messages make clean DIRS='monitors messages'To install only the Makefiles in all subdirectories, use: make makefiles P4ARCH=<machine>You can have p4 build a makefile in your own directory by copying one ofthe makefile.proto files from an example directory (e.g. messages ormonitors). Then edit the proto file to include information about yourown programs and the location of the p4 library (LIBDIR).Finally, you build the Makefile by getting into the top-level p4 directory and typing: make makefiles P4ARCH=<machine> DIRS=<your_full_pathname>To add a new machine, or to change the characteristic parameters associatedwith an existing one, edit the file util/defs.allTo add a new example program in one of the application directories, edit thefile makefile.proto in the appropriate directory.p4 currently traps the signals SIGINT and SIGUSR1. The SIGINT interrupt istrapped in order to do some cleanup especially on System V machines whereIPC facilities must be returned to the OS. If the user decides to trapthis interrupt for his own cleanup, he should invoke p4_error as part ofany termination processing. p4 uses the SIGUSR1 interrupt internally by alistener process for socket communications. The only time in which p4would not need this interrupt would be in those instances in which nosocket communications are to be performed./****************** OLD STUFF *****************************************/Status of version 0.2 (2/1/1992): As in version 0.1 (see below), processes on the Butterfly may not be created in the cluster you are expecting. In particular, processes which are started via remote shell from another machine may start in the public cluster. We will explore this further as time permits. Also on the butterfly, we have implemented quite a bit of code for the TCMP package planned for that machine, but do not yet have it stable. Shared memory operations in Fortran are not supported on the Sequents. This implies that you cannot have a procgroup file entry such as "local 2" for a Fortran program on the Sequent, because such an entry would imply that messages would be passed thru shared memory. We do not currently support System V IPC on any machine although we are exploring it. The major reason that we have not supported it is that in some instances the operating system may not reclaim IPC resources if a program abnormally terminates, and the user must explicitly do it. We are planning to make p4 handle such cases when possible. The alog/upshot packages are available as graphical debugging tools. In the near future, we hope to instrument the internals of p4 with logging calls for these packages. The new machine type IBM_3090_AIX does not support Fortran at this point. We have encountered one or two "standard" Fortran functions such as getarg that are not available on the machine which are using. We will explore this problem more as time permits. The Fortran on the NeXT has the same problem as the IBM_3090_AIX. The Fortran on the Titan is not yet working correctly. If your machine is running an old socket implementation (e.g. 4.2), then you may experience very slow communications via sockets. Also, in the current release, we are only using the socket option TCP_NODELAY on BSD systems to boost performance. We have found that the setsockopt call is not available on some SYSV machines that we have ported to; we plan to fix this for those SYSV environments that do support it in the future. If you wish to turn that option on, the relevant code is protected by ifdef P4BSD lines in p4_sock_util.h and can easily be changed. On an SGI machine, the make facility will only work correctly if you set your environment variable SHELL to the Bourne shell, since our makefiles contain Bourne shell code at this point.Status of version 0.1 (2/1/1991): The C version is stable. No significant changes are planned. The examples all work, but could stand some cleaning up. Subsequent releases may have different examples. The grid example in the messages directory has a compile-time configuration of 4 processes. The p4_logging routines have not been tested. They are in the process of being replaced by the atrace package. The Fortran version is included, but it is not guaranteed to compile and link on any of the given machines without local modifications. It is really a place-holder for a new version to come real soon now, which may have different procedure names and parameters but the same idea. The tutorial is in very rough draft form. It is expected to be extended in subsequent releases. It is not possible to create node processes on the IPSC860 from machines other than the IPSC host machine, nor is it possible to create node processes excuting different files. The only model that works on this machine has a master on the srm and the same executable file loaded on all the nodes. We hope to change this restriction soon. The clock on the ATT_3B2 is coarse-grained. The socket-pair system routine on the 3B2 has a bug in it which causes an error message to be reported at the end of a run. It should not effect the job as it is running. The Butterflies are treated as shared-memory machines, with primitive memory management. The next release should have BBN native memory management with support for interleaved memory, and an optimized message-passing system written by Ken Sedgewick. On the butterfly be alert to the fact that processes may not be created in the cluster you were expecting. Automatic cluster management is being explored. On the IPSC860, mixing p4 message passing with Intel message passing, even the system messages that are associated with global data operations, may lead to unexpected (and bad) results. We are working on this now.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -