HP-MPI User's Guide (11th Edition)

Debugging and troubleshooting
Troubleshooting HP-MPI applications
Chapter 6 209
-h remote_host -e var=val [-np #] program [args]
Refer to “Creating an appfile” on page 78 for details.
On XC, systems the environment variables are automatically propagated
by srun. Environment variables can be established by the user with
either setenv or export and are passed along to the MPI processes by
the SLURM srun utility. Thus, on XC systems, it is not necessary to use
the "-e name=value" approach to passing environment variables.
Although the "-e name=value" will also work on XC systems using
SLURM’s srun.
Fortran 90 programming features
The MPI 1.1 standard defines bindings for Fortran 77 but not Fortran 90.
Although most Fortran 90 MPI applications work using the Fortran 77
MPI bindings, some Fortran 90 features can cause unexpected behavior
when used with HP-MPI.
In Fortran 90, an array is not always stored in contiguous memory. When
noncontiguous array data are passed to an HP-MPI subroutine,
Fortran 90 copies the data into temporary storage, passes it to the
HP-MPI subroutine, and copies it back when the subroutine returns. As
a result, HP-MPI is given the address of the copy but not of the original
data.
In some cases, this copy-in and copy-out operation can cause a problem.
For a nonblocking HP-MPI call, the subroutine returns immediately and
the temporary storage is deallocated. When HP-MPI tries to access the
already invalid memory, the behavior is unknown. Moreover, HP-MPI
operates close to the system level and needs to know the address of the
original data. However, even if the address is known, HP-MPI does not
know if the data are contiguous or not.
UNIX open file descriptors
UNIX imposes a limit to the number of file descriptors that application
processes can have open at one time. When running a multihost
application, each local process opens a socket to each remote process. An
HP-MPI application with a large amount of off-host processes can
quickly reach the file descriptor limit. Ask your system administrator to
increase the limit if your applications frequently exceed the maximum.