NAME
MPI - HP Message-Passing Interface
DESCRIPTION
HP MPI is an implementation of the MPI standard for HP servers and
workstations. MPI's main goals are efficiency, portability, and
flexibility. In HP MPI, the core MPI functionality is redesigned and
optimized to use shared-memory and deliver high-performance
communication.
HP MPI supports a 32-bit and 64-bit version of the MPI library on all
platforms running HP-UX 11.0 or later OS on PA-RISC 1.1 and 2.0; and
HP-UX 11i version 1.5 or later OS on Itanium based platform. HP-UX
10.20 is not supported anymore. You cannot mix 32-bit and 64-bit
executable files in the same application.
A thread-compliant library is also available. A Diagnostics library,
using MPI's standard profiling interface, is provided to help
developers debug applications. It does advanced error checking that
was deemed too expensive, in terms of performance impact, to be
included in the core MPI library.
SYNOPSIS OF FEATURES
HP MPI is fully compliant with the MPI 1.2 standard and supports a
subset of the MPI 2.0 standard including:
MPI I/O
Language interoperability
Thread-compliance
One-sided communication (details below)
Dynamic process - spawn (details below)
HP MPI also supports Fortran programs compiled 64-bit with any of the
following options: +i8, +r8, +autodbl4, +autodbl. See autodbl(1) for
more information.
HP MPI enhances MPI with tools and options to help you tune your MPI
application for maximum performance, and help debug an application
readily. This manpage describes the use of HP MPI. For more
information, refer to the referenced manpage and to the HP MPI User's
Guide.
SETTING PATHS
When you install HP MPI using the install script, /opt/mpi and
/opt/mpi/share/man are added to the system PATH and MANPATH files,
respectively.
To configure your environment if you get HP MPI by ftp and install it
in /opt/mpi:
-Add /opt/mpi/bin to the shell path.
-Add /opt/mpi/share/man to MANPATH.
If you move the HP MPI installation directory from its default
location in /opt/mpi:
-Set the MPI_ROOT environment variable to point to the new location.
-Set PATH to $MPI_ROOT/bin.
-Set MANPATH to $MPI_ROOT/share/man
COMPILING
For C programs, use mpicc(1):
% mpicc -o foo foo.c
For Fortran 77 programs, use mpif77(1):
% mpif77 -o foo foo.f
For C++ programs, use mpiCC(1):
% mpiCC -o foo foo.C
For Fortran 90 programs, use mpif90(1):
% mpif90 -o foo foo.f90
In the HP-UX 11.0 version of HP MPI, the mpicc(1), mpiCC(1), and
mpif90(1) commands link the 64-bit version of the MPI library when you
use the +DA2.0W or +DD64 compiler option. Otherwise, the 32-bit
version of the library is used.
Statically-bound binaries built on HP-UX 10.20 platforms can also run
on HP-UX 11.0 systems. Dynamically-bound binaries can only run on the
version of HP-UX (10.20 versus 11.0) on which they were built. 64-bit
binaries can only run on HP-UX 11.0 64-bit platforms.
The compilation commands use the default HP compilers. For mpiCC, the
HP ANSI C++ compiler is the default if available on the system.
Otherwise the HP C++ compiler is the default. You can specify
different compilers by setting the MPI_CC, MPI_F77, MPI_CXX, and
MPI_F90 environment variables. For example, to use the GNU C
compiler, enter (assuming /bin/csh syntax):
% setenv MPI_CC gcc
% mpicc -o foo foo.c
RUNNING
You can start applications that run multiple copies of a single
program within a single host by using mpirun(1). For example, to
start two copies of program 'foo', enter:
% mpirun -np 2 foo
You must use mpirun(1) and an appfile to start applications that
require different programs or different hosts. An appfile is a text
file that contains process counts and a list of programs. For
example, you can create an appfile containing the following two lines:
-np 2 foo
-h rsn.hp.com -np 1 bar
The appfile should contain a separate line for each host. Each line
specifies the name of the executable file and the number of processes
to run on the host. The -h option is followed by the name of the host
where the specified processes must be run. Instead of using the host
name, you may use its IP address.
To run the appfile, enter
% mpirun -f appfile
See mpirun(1) for more details.
DAEMON SERVICES
HP MPI incorporates a multipurpose daemon process that provides start
up, communication, and termination services. The daemon operation is
transparently performed by a separate binary mpid executable. HP MPI
sets up one daemon per host (or appfile entry) for communication.
Optional communication through the daemon is available using the
mpirun -commd option. The daemon shuts down the MPI run time when the
application completes. This daemon behavior means that if you invoke
your application with -np x, x + 1 processes are created.
IDENTIFYING MPI JOBS
Each MPI application is given a job ID (see mpirun(1)). The mpijob(1)
command lists the current MPI jobs.
% mpijob -a
mpijob can also provide information on the status of a job's
processes.
% mpijob -j 326
TERMINATING
In cases where a bug causes the application to hang or to terminate
abnormally, stray processes may be left in the system. You can use
the mpiclean(1) command to cleanup a specific MPI job:
% mpiclean -j 326
ENVIRONMENT VARIABLES
You can use environment variables to control and customize the
behavior of an HP MPI application. The environment variables that
affect the behavior of HP MPI at run time are described in mpienv(1).
THREAD-COMPLIANT LIBRARY
HP MPI provides a thread-compliant version of the MPI library for 32-
and 64-bit HP-UX 11.0 systems. To link with the thread-compliant
library, specify the -lmtmpi option when compiling your HP MPI
application.
Because HP-UX 10.20 does not support pthreads, HP MPI on HP-UX 10.20
cannot offer pthread support. For full details about the HP MPI
thread-compliant library, refer to mpimtsafe(1).
DEBUGGING MPI APPLICATIONS
HP MPI allows you to use single-process debuggers to debug MPI
applications. HP MPI supports the following debuggers: adb(1),
xdb(1), gdb(1), and dde(1). Refer to mpidebug(1) for debugging
information.
DIAGNOSTIC LIBRARY
In addition to the use of debuggers, HP MPI provides a Diagnostics
library for advanced error checking and debugging. To link with the
diagnostic library, specify the -ldmpi option when compiling your HP
MPI application, and run your application as intended. The diagnostic
library provides message signature analysis, multiple write detection
during receives, MPI object space corruption analysis, and formatted
and unformatted message dumps.
Refer to mpidebug(1) for complete details.
USING LSF BATCH
You can use the Load Sharing Facility (LSF) to submit batch MPI jobs.
When you use LSF, HP MPI and LSF collaborate on the application
startup. LSF handles the job scheduling and the allocation of the
necessary hosts. HP MPI starts the application's processes on the
hosts selected by LSF.
To submit a single-host job, type:
% bsub pam -mpi mpirun -np 2 foo
To submit a multi-host job, type:
% bsub pam -mpi mpirun -f appfile
For full details of command line syntax, refer to mpirun(1).
By default mpirun starts the MPI processes on the hosts specified by
the user, in effect handling the direct mapping of host names to IP
addresses. When you use LSF to start MPI applications, the host
names, specified to mpirun or implicit when the -h option is not used,
are treated as symbolic variables that refer to the IP addresses that
LSF eventually assigns. The net effect is that LSF handles the
mapping of host names to IP addresses, allowing it to schedule the MPI
job on the appropriate hosts.
HEART-BEAT SIGNAL
By design, HP MPI adheres to the MPI standard progress rule. All
pending communication requests are progressed by the library every
time a communication function is called. While this is sufficient to
guarantee progress in MPI-1, it can lead to less overlap between the
application's computation and communication.
To reduce a potential serialization effect, HP MPI uses periodic
heart-beat signals to interrupt the application's computation and
attempt to progress pending requests. This is accomplished by
generating a UNIX signal (SIGALRM or SIGPROF) periodically. The
signal is trapped by the MPI process causing it to invoke a
progression-handler routine.
Generating a UNIX signal introduces a performance penalty every time
the application processes are interrupted. As a result, while some
applications benefit from it, others may experience a decrease in
performance. As part of tuning the performance of an application, you
can control the behavior of the heart-beat signals by changing their
time period or by turning them off using the s[a|p][#] option of
MPI_FLAGS. Refer to MPI_FLAGS in mpienv(1). If the application uses
both signals for its own purposes, you must disable the heart-beat
signals.
When you use the thread-compliant library, you may use s[a|p][#] or an
optional communication thread (generated using the MPI_MT_FLAGS
environment variable) to generate heart-beat signals. Refer to
mpienv(1) for details about using MPI_FLAGS and MPI_MT_FLAGS options
with the thread-compliant library.
NATIVE LANGUAGE SUPPORT (NLS)
By default, diagnostic messages and other feedback from HP MPI are
provided in English. Support for other languages is available through
the Native Language Support (NLS) catalog and the internationalization
environment variable NLSPATH.
The default NLS search path for HP MPI is $NLSPATH. Refer to the
environ(5) manpage for NLSPATH usage. When an MPI language catalog is
available, it represents HP MPI messages in two languages. The
messages are paired so that the first in the pair is always English,
and the second in the pair is the translation to your language of
choice. Refer to hpnls(5), lang(5), and environ(5).
DYNAMIC IP ADDRESSES
The mpirun(1) and xmpi(1) tools determine the IP address of the host
they are running on by calling gethostbyaddr(3N). In setups such as
SLIP or PPP protocols, the host's IP address is dynamically assigned
when the network connection is established, and gethostbyaddr(3N) may
not return the correct address. In such cases, set the MPI_LOCALIP
environment variable to indicate the actual IP address, dynamically
assigned for the duration of the session.
% setenv MPI_LOCALIP 15.99.51.171
% cat > appfile
-np 1 control
-h server.rsn.hp.com -np 64 compute
^D
% mpirun -f appfile
In the example above, the front-end 'control' program runs on the host
with the dynamically assigned IP address, and 64 copies of the
back-end 'compute' program run on the main server.
ONE-SIDED COMMUNICATION
HP MPI supports MPI 2.0 one-sided communication functionality with
restrictions. One-sided communication extends the communication
mechanism of MPI by allowing one process to specify all communication
parameters, both for the sending side and for the receiving side. See
1sided(1) for more information.
DYNAMIC PROCESS - SPAWN
MPI-2 process model allows for the creation and cooperative
termination of processes after an MPI application has started. It
provides a mechanism to establish communication between the newly
created processes and the existing MPI application(spawn), it also
provides a machanism to establish communication between two existing
MPI applications, even when one did not "start" the other(connection).
HP MPI supports spawn functionality at this release, connection is not
supported yet. For spawn functionality, MPI_Comm_parent,
MPI_Comm_spawn, MPI_Comm_spawn_multiple are supported. To use spawn
feature, mpirun option '-commd' must be turned on when starting the
application.
TROUBLESHOOTING
The HP MPI User's Guide contains a chapter dedicated to debugging and
troubleshooting your HP MPI applications. Refer to this for
information on typical problems, hints to overcome the problems, and
to get the best performance from your application.
LIMITATIONS
You must monitor MPI jobs (using mpijob(1)) and terminate them (using
mpiclean(1)) from the same host where they were started (mpirun(1)).
The diagnostics library cannot be used with the applications linked
with the thread-compliant MPI library.
Counter instrumentation and tracing are mutually exclusive functions.
The thread-compliant library does not support counter instrumentation
or trace file generation.
FILES
/opt/mpi/ installation directory
/opt/mpi/bin/ binaries and commands
/opt/mpi/help/ example programs
/opt/mpi/include/ include files
/opt/mpi/lib/ library files
/opt/mpi/share/man/ manpages
SEE ALSO
mpicc(1), mpiCC(1), mpiclean(1), mpif77(1), mpif90(1), mpijob(1),
mpirun(1), mpiview(1), xmpi(1), mpienv(1), mpidebug(1), mpimtsafe(1),
hpnls(5)
Man(1) output converted with
man2html