Product specifications
Table Of Contents
- Table of Contents
- 1 Introduction
- 2 Feature Overview
- 3 Step-by-Step Cluster Setup and MPI Usage Checklists
- 4 InfiniPath Cluster Setup and Administration
- Introduction
- Installed Layout
- Memory Footprint
- BIOS Settings
- InfiniPath and OpenFabrics Driver Overview
- OpenFabrics Drivers and Services Configuration and Startup
- Other Configuration: Changing the MTU Size
- Managing the InfiniPath Driver
- More Information on Configuring and Loading Drivers
- Performance Settings and Management Tips
- Host Environment Setup for MPI
- Checking Cluster and Software Status
- 5 Using QLogic MPI
- Introduction
- Getting Started with MPI
- QLogic MPI Details
- Use Wrapper Scripts for Compiling and Linking
- Configuring MPI Programs for QLogic MPI
- To Use Another Compiler
- Process Allocation
- mpihosts File Details
- Using mpirun
- Console I/O in MPI Programs
- Environment for Node Programs
- Environment Variables
- Running Multiple Versions of InfiniPath or MPI
- Job Blocking in Case of Temporary InfiniBand Link Failures
- Performance Tuning
- MPD
- QLogic MPI and Hybrid MPI/OpenMP Applications
- Debugging MPI Programs
- QLogic MPI Limitations
- 6 Using Other MPIs
- A mpirun Options Summary
- B Benchmark Programs
- C Integration with a Batch Queuing System
- D Troubleshooting
- Using LEDs to Check the State of the Adapter
- BIOS Settings
- Kernel and Initialization Issues
- OpenFabrics and InfiniPath Issues
- Stop OpenSM Before Stopping/Restarting InfiniPath
- Manual Shutdown or Restart May Hang if NFS in Use
- Load and Configure IPoIB Before Loading SDP
- Set $IBPATH for OpenFabrics Scripts
- ifconfig Does Not Display Hardware Address Properly on RHEL4
- SDP Module Not Loading
- ibsrpdm Command Hangs when Two Host Channel Adapters are Installed but Only Unit 1 is Connected to the Switch
- Outdated ipath_ether Configuration Setup Generates Error
- System Administration Troubleshooting
- Performance Issues
- QLogic MPI Troubleshooting
- Mixed Releases of MPI RPMs
- Missing mpirun Executable
- Resolving Hostname with Multi-Homed Head Node
- Cross-Compilation Issues
- Compiler/Linker Mismatch
- Compiler Cannot Find Include, Module, or Library Files
- Problem with Shell Special Characters and Wrapper Scripts
- Run Time Errors with Different MPI Implementations
- Process Limitation with ssh
- Number of Processes Exceeds ulimit for Number of Open Files
- Using MPI.mod Files
- Extending MPI Modules
- Lock Enough Memory on Nodes When Using a Batch Queuing System
- Error Creating Shared Memory Object
- gdb Gets SIG32 Signal Under mpirun -debug with the PSM Receive Progress Thread Enabled
- General Error Messages
- Error Messages Generated by mpirun
- MPI Stats
- E Write Combining
- F Useful Programs and Files
- G Recommended Reading
- Glossary
- Index

5–Using QLogic MPI
QLogic MPI and Hybrid MPI/OpenMP Applications
5-24 IB6054601-00 H
S
QLogic MPI and Hybrid MPI/OpenMP
Applications
QLogic MPI supports hybrid MPI/OpenMP applications, provided that MPI
routines are called only by the master OpenMP thread. This application is called
the funneled thread model. Instead of MPI_Init/MPI_INIT (for C/C++ and
Fortran respectively), the program can call
MPI_Init_thread/MPI_INIT_THREAD to determine the level of thread
support, and the value MPI_THREAD_FUNNELED will be returned.
To use this feature, the application must be compiled with both OpenMP and MPI
code enabled. To do this, use the -mp flag on the mpicc
compile line.
As mentioned previously, MPI routines can be called only by the master OpenMP
thread. The hybrid executable is executed as usual using mpirun, but typically
only one MPI process is run per node and the OpenMP library will create
additional threads to utilize all CPUs on that node. If there are sufficient CPUs on
a node, you may want to run multiple MPI processes and multiple OpenMP
threads per node.
The number of OpenMP threads is typically controlled by the OMP_NUM_THREADS
environment variable in the
.mpirunrc file. (OMP_NUM_THREADS is used by
other compilers’ OpenMP products, but is not a QLogic MPI environment
variable.) Use this variable to adjust the split between MPI processes and
OpenMP threads. Usually, the number of MPI processes (per node) times the
number of OpenMP threads will be set to match the number of CPUs per node. An
example case would be a node with four CPUs, running one MPI process and four
OpenMP threads. In this case, OMP_NUM_THREADS is set to four.
OMP_NUM_THREADS is on a per-node basis.
See “Environment for Node Programs” on page 5-17 for information on setting
environment variables.
At the time of publication, the MPI_THREAD_SERIALIZED and
MPI_THREAD_MULTIPLE models are not supported.
NOTE:
To use MPD, the software package mpi-frontend-*.rpm and python
(available with your distribution) must be installed on all nodes. See the
QLogic HCA and QLogic OFED Software Install Guide for more details on
software installation.