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