Chapter 6. Message Passing on IRIX and Linux

This chapter describes the differences in support for the Message Passing Toolkit (MPT) on IRIX and Linux systems. For general information on using MPT under Linux, see the Message Passing Toolkit (MPT) User's Guide.

Compiling MPI Programs on Linux

The compile and link syntax for MPI programs is similar on IRIX and Linux systems. See the mpi(1) man page for more specific information and compiler command syntax.

SHMEM Program Launch

On Linux, SHMEM programs are launched using the mpirun command on one or more Altix partitions or hosts. On IRIX, SHMEM programs were started by setting the NPES environment variable and running the executable program directly.

On IRIX systems, SHMEM processes start via a fork in the start_pes() function call. On Linux systems, the SHMEM processes are MPI processes that are forked prior to entry of the main program.

See the shmem(3) man page for more information.

NUMA Placement

On IRIX systems, MPI will automatically distribute the program's processes in a reasonable way across the CPUs within the system or a cpuset using the Memory Management Control Interface (MMCI) interface provided in IRIX.

On Linux systems, MPI will distribute the processes from CPU 0 to N-1 on the system or within a cpuset when exclusive execution mode is selected. MPI's exclusive execution mode can be activated in a couple ways. One way is for the user to set the MPI_DSM_DISTRIBUTE environment variable. Alternatively, when LSF launches an MPI program into cpusets that are dedicated to this program, it will set exclusive execution mode in the launched MPI program.

See the mpi(1) man page for more information.

dplace Command

The dplace command can also be used to specify NUMA placement of MPI, OpenMP, and other parallel programs on IRIX and Linux systems. The dplace command syntax is substantially revised on Linux systems.

On IRIX, MPI programs were started this way using dplace:

%mpirun -np 4 dplace -place placement_file a.out

On Linux, MPI programs were started this way using dplace:

%mpirun -np 4 dplace -s1 a.out

See the dplace(1) man page for more information.

Performance Tuning Tools

On IRIX systems, SGI SpeedShop and perfex are available for monitoring performance of parallel programs. On Linux, the  profile.pl tool is available for this purpose. You can run profile.pl with MPI in this way:

%mpirun -np 4 profile.pl -s1 a.out

MPT Release Documentation

On IRIX systems, the relnotes command could be used to read MPT release notes. On Linux systems, you can find the name of the file containing release notes information using this command:

%rpm -ql sgi-mpt | grep relnotes

Performance Impact of Partitioning

On IRIX systems, the optimized MPI data transfer methods were never implemented for MPI programs that are run across multiple partitions. On Linux systems, the latency and bandwidth of MPI communication is the same whether you are communication inside a single host or between partitions. The only effect on performance will arise from the number of hardware routers that lie in the path between the CPUs that are running the MPI processes.

Software Modules Differences

You can install SCSL, MPT, and other library packages in alternate locations using Software Modules on Linux. However, the rich set of compiler wrapper scripts (for example. cc and f77) do not exist on Linux. Therefore, you need to specify the -I and -L options when compiling or linking with libraries that are installed in alternate locations.

System-Specific MPT Features

The following table summarizes the MPT features that are available on IRIX only and the MPT features that are available on Linux only.

Table 6-1. System-Specific MPT features

IRIX only

Linux only

Support for 48p x 128p clusters

Optimized MPI send/ across partitions

Support for up to 512p single hosts

MPI one-sided across partitions

Support for checkpoint and restart (CPR)

SHMEM across partitions

Fortran 90 compile-time MPI interface checking

 

MPI-2 capabilities

 

Support for MPI_Comm_spawn and MPI_Comm_spawn_multiple

 

Thread safety

 

USEM MPI Fortran 90 statement support