Deliver Flexible, Efficient, and Scalable Cluster Messaging

Intel® MPI Library 5.0 focuses on making applications perform better on Intel® architecture-based clusters—implementing the high performance Message Passing Interface Version 3.0 specification on multiple fabrics. It enables you to quickly deliver maximum end user performance even if you change or upgrade to new interconnects, without requiring changes to the software or operating environment.

Use this high performance MPI message library to develop applications that can run on multiple cluster interconnects chosen by the user at runtime. Benefit from a free runtime environment kit for products developed with Intel® MPI Library. Get excellent performance for enterprise, divisional, departmental, workgroup, and personal High Performance Computing.

Quotes

“Fast and accurate state of the art general purpose CFD solvers is the focus at S & I Engineering Solutions Pvt, Ltd. Scalability and efficiency are key to us when it comes to our choice and use of MPI Libraries. The Intel® MPI Library has enabled us to scale to over 10k cores with high efficiency and performance.”Nikhil Vijay Shende, Director,S & I Engineering Solutions, Pvt. Ltd.

Scalability

Implementing the high performance MPI 3.0 specification on multiple fabrics, Intel® MPI Library for Windows* and Linux* focuses on making applications perform better on IA-based clusters. Intel® MPI Library enables you to quickly deliver maximum end-user performance, even if you change or upgrade to new interconnects without requiring major modifications to the software or to the operating environment. Intel also provides a free runtime environment kit for products developed with the Intel® MPI Library.

Interconnect Independence & Flexible Runtime Fabric Selection

Whether you need to run TCP sockets, shared memory, or one of many Remote Direct Memory Access (RDMA) based interconnects, including InfiniBand*, Intel® MPI Library covers all configurations by providing an accelerated universal, multi-fabric layer for fast interconnects via the Direct Access Programming Library (DAPL*) or the Open Fabrics Association (OFA*) methodology. Develop MPI code independent of the fabric, knowing it will run efficiently on whatever network is chosen by the user at runtime.

Get high-performance interconnects, including Intel® True Scale, Myrinet* MX, and QLogic* PSM interfaces as well as TCP, shared memory, and others

Efficiently work through the Direct Access Programming Library (DAPL*), Open Fabrics Association (OFA*), and Tag Matching Interface (TMI*), making it easy for you to test and run applications on a variety of network fabrics.
Optimizations to all levels of cluster fabrics: from shared memory thru Ethernet and RDMA-based fabrics to the tag matching interconnects

Intel® MPI Library dynamically establishes the connection, but only when needed, which reduces the memory footprint. It also automatically chooses the fastest transport available. Memory requirements are reduced by several methods including a two-phase communication buffer enlargement capability which allocates only the memory space actually required.

MPI 3.0 Standard Support

The next major evolution of the Message Passing Interface is with the release of the MPI-3.0 standard. Significant changes to remote memory access (RMA) one-sided communications, addition of non-blocking collective operations, and large counts messages greater than 2GB will enhance usability and performance. Now available in the Intel® MPI Library 5.0.

Binary compatibility

Intel® MPI Library offers binary compatibility with existing MPI-1.x and MPI-2.x applications. Even if you’re not ready to move to the new standard, you can still take advantage of the latest Intel® MPI Library performance improvements without recompiling. Furthermore, the Intel® MPI Library is an active collaborator in the MPICH ABI Compatibility Initiative, ensuring any MPICH-compiled code can use our runtimes.

Support for Mixed Operating Systems

Run a single MPI job using a cluster with mixed operating systems (Windows* OS and Linux OS*) under the Hydra process manager. Get more flexibility in job deployment with this added functionality.

Latest Processor Support

Intel consistently offers the first set of tools to take advantage of the latest performance enhancements in the newest Intel product, while preserving compatibility with older Intel and compatible processors. New support includes AVX2, TSX, FMA3 and AVX-512.

More Tech Articles

1. Check prerequisites
Each host and each Intel® Xeon Phi™ coprocessor should have a unique IP address across a cluster;
ssh access between host(s) and Intel® Xeon Phi™ coprocessor(s) should be password-less;
Update the Intel® Manycore Platform Software Stack (Intel® MPSS) to current version;
Mak...

When running an MPI program, process placement is critical to maximum performance. Many applications can be sufficiently controlled with a simple process placement scheme, while some will require a more complex approach. The Intel® MPI Library offers multiple options for controlling process pla...

Response to our February session of the Intel® Xeon® and Xeon® Phi™ Introduction to High Performance Application Development for Multicore and Manycore-Live webinar was gratifying and overwhelming, but finally we worked through all of your questions. Some of the questions required a context we l...

Documentation & Tutorials:

Supplemental Documentation

Overview
When running a hybrid Intel MPI/threaded program on a Xeon Phi™ coprocessor (either in native or symmetric mode), thread placement is just as important (if not more so) as on a standard Xeon" processor.
Process Pinning VS. Thread Affinity
Process pinning defines a set of processors on wh...

Update
This article is outdated. If you are using at least Version 4.1 Update 1 of the Intel® MPI Library, please go to http://software.intel.com/en-us/articles/using-multiple-dapl-providers-with-the-intel-mpi-library for updated information.
Overview
A feature is available for the Intel® MPI Li...

You can reply to any of the forum topics below by clicking on the title. Please do not include private information such as your email address or product serial number in your posts. If you need to share private information with an Intel employee, they can start a private thread for you.

Hello,
I am working by using remote deskpot of Cornell University servers and I have not internet conection in my deskpot. I am using Visual Studios 2008 with Intel Visual Fortran Composer XE 2011, and supposedly it has already installed MPI Library Runtime Enviroment 4.0
I can´t find the files msmpi.lib or impi.lib, or the include path. Nevertheless, I found the folder with other files like mpichi2mpi.dll, impi.dll, impimt.dll,mpiexec.ex, wmpiexec.exe, etc. The package ID in the support file is w_mpi_rt_p_4.0.1.007 listed
How can I include .dll mpi files to my code?
Thanks,

Hi, Dear Sir or Madam,
I am using the Intel MPI and OpenMP and Intel Composer XE 2015 to build a hybrid MPI/OpenMP application. For example, if I want to run the executable file of my application on 3 SMP computers with 3 MPI processes and each MPI process consists of 16 OpenMP threads. Our PC cluster has 3 SMP nodes connected by the Infiniband and each node has 16 cores.
Could someone tell me how to run with the Intel MPI command: mpiexec.exe in order to implement above running way? where can I find such a study guide for running with Intel MPI? I look forward to hearing from you and your reply is highly appreciated.
Thanks in advance.

Hello, I have the following error message when I run my FORTRAN code on a HPC of my university:
[mpiexec@node0653] control_cb (./pm/pmiserv/pmiserv_cb.c:1151): assert
(!closed) failed
I had my code attached. I can successfully compile my codes in debug mode without any error. Besides, I have already unblocked the stack size of my machine by adding in command line "ulimit -a unlimited."
To replicate the error message, please use the attached makefile to built the program, keep all the .txt files in the same folder, and then in command line type "mpirun -np 32 ./main" to execute the program. Roughly after 5 to 10 minutes, you would see the unexpected termination of the program and the machine should issue the error message as seen above.
Please help me with the problem. Thanks.
Lee

Hello,
I would like to pin MPI processes across all CPU sockets. For example, I would like to run 10 MPI processes on a two socket machine with 5 MPI processes on each socket. Could you please send me the instructions on doing this?
Many thanks,

Trying to run checkpointing with BLCR using the Intel MPI 4.1.3.049 library. Compiled the source MPI codes using the Intel mpicc compiler.
While running, used mpiexec.hydra -ckpoint on -ckpointlib blcr and other options. The checkpoints do get written, but the application crashes with a segfault after the first checkpoint itself (after having written a multi gigabyte checkpoint context file to disk). The applications run perfectly to completion when I run them without the checkpoint options. Also, checkpointing runs without problem when run on single node with multiple MPI processes.
The commandline options I use to launch the jobs are:
mpiexec.hydra -genv I_MPI_FABRICS shm:ofa -machinefile ./nodes -n 24 -ckpoint on -ckpointlib blcr -ckpoint-interval 300 ./MPIJob
What might be going wrong here?
Detailed outputs are given below:
# mpiexec.hydra -genv I_MPI_FABRICS shm:ofa -machinefile ./nodes -n 24 -ckpoint on -ckpointlib blcr -ckpoint-interval 300 ./lmp_linux -var x 120 -v...

The structure of my code is,
//part1
if(i>1){
Compute1;
}
//part2
if(i<m)
{
Compute2;
MPI_Allgatherv(); //Replaced by MPI_Iallgatherv();
}
//part3
if(i>0)
{
Compute3;
MPI_Allreduce();
}
part4
if(i<m){
Compute4;
}
Collective operations in part 2 is the bottleneck of this program.
I replaced "MPI_Allgatherv()" by the NBC "MPI_Iallgatherv()" in order to hide the collective communication by part3 and part4. But part3 and part4 take much longer than before. What do you think is the cause of this problem?
Thanks!

Licensing

What kinds of licenses are available for the Intel® MPI Library?

The Runtime license includes everything you need to run Intel MPI-based applications. The license is free and permanent. The Developer license includes everything needed to build and run applications. It is fee-based and permanent. It allows free redistribution of the components needed to run Intel MPI-based applications.

When is a Developer license required for the Intel® MPI Library?

The two kits (developer and runtime) can co-exist on a machine and it is fine for customers of Intel MPI-based applications to relink the application to include user subroutines. If the customer is actually writing MPI code (calling MPI_* functions directly), then a Developer license would be needed.

I am an ISV and am planning to ship my product with Intel® MPI Library. Do my customers have to buy the Intel® MPI Library Development Kit in order to use my software?

No. There are currently 3 different models if ISVs want to ship with Intel MPI Library.
1) An ISV can redistribute the runtime components of the Intel MPI Library available from the development kit (see the redist.txt file in the Intel MPI Library installation directory for list of redistributable files).
2) If a customer would rather install the Intel MPI Library as a system component, the Runtime Environment Kit can be downloaded free of charge from the Intel MPI Library product page.
3) The Intel® MPI Library Runtime Environment (RTO) can be pre-installed by the vendor and shipped with the application.

Yes. The Intel® MPI Library is known to run on AMD platforms, and we have had no issue reports specific to AMD platforms so far.

Does the Intel® MPI Library support parallel I/O calls?

Yes. The parallel file I/O part of the MPI-2 standard is fully implemented by the Intel® MPI Library 5.0. Some of the currently supported file systems include Unix File System (UFS), Network File System (NFS), Parallel Virtual File System (PVFS2), and Lustre*. For a complete list, check the Release Notes.

Does the Intel® MPI Library support one-sided communication?

Yes. The Intel® MPI Library supports both active target and passive target one-sided communication. The only exception is the passive target one-sided communication in case the target process does not call any MPI functions. Further support is available through the new one-sided calls and memory models in MPI-3.0.

Does the Intel® MPI Library support heterogeneous clusters?

Yes. The Intel® MPI Library now supports clusters running different operating systems as well as an environment of mixed Intel processors. The library provides default optimizations depending on the detected architecture.

What DAPL* version does the Intel® MPI Library support?

The Intel® MPI Library uses Direct Access Programming Library (DAPL) as a fabric independent API to run on fast interconnects like InfiniBand* or Myrinet*. Currently the Intel MPI Library supports DAPL* version 1.1, 1.2 as well as DAPL* version 2.0-capable providers. Intel MPI automatically determines the version of DAPL standard to which the provider conforms.

What compilers does the Intel® MPI Library support?

The Intel® MPI Library supports Intel® Compilers 13.1 through 15.0 (or higher), as well as GNU* C, C++, Fortran77 3.3 or higher, and GNU* Fortran95 4.0 or higher. Additionally, the Intel® MPI Library provides a bundled source kit that offers support for the PGI* C, PGI* Fortran 77, and Absoft* Fortran 77 compilers out of the box, with the following caveats:

The PGI* compiled source files must not transfer long double entities

The Absoft* based build procedure must use the -g77, -B108 compiler option

You must take care of installing and selecting the right compilers

You must make sure that the respective compiler runtime is installed on all nodes

You may have to build extra Intel® MPI binding libraries if you need support for PGI* C++, PGI* Fortran 95, and Absoft* Fortran 95 bindings. If you need access to this additional binding kit, contact us via the Intel® Premier Support portal @ http://premier.intel.com

Does the Intel® MPI Library work with any common resource managers?

Yes. The Intel® MPI Library supports OpenPBS*, PBS Pro*, Torque, LSF*, Parallelnavi*, NetBatch*, SLURM*, SGE*, LoadLeveler* and Lava* batch schedulers. The simplified job startup command mpirun recognizes when it is run inside a session started by any PBS compatible resource manager (like OpenPBS*, PBS Pro*, Torque*), as well as LSF*. See the Intel® MPI Library Reference Manual for a description of this command.

I have a mixed application which uses both MPI and OpenMP* calls. Does the Intel® MPI Library support this type of hybrid functionality?

Yes, Intel MPI does support mixed MPI/OpenMP applications.

Technical

Is the Intel® MPI Library fault-tolerant?

Yes, to an extent. Note that the MPI standard does not yet define proper handling of aborted MPI ranks. By default, the Intel® MPI Library will stop the entire application if any of the processes exit abnormally. This behavior can be overwritten via a runtime option where the library does allow for an application to continue execution even if one of the processes stops responding. Check the Intel® MPI Library Reference Manual for details and application requirements.

Is the Intel® MPI Library thread safe?

Yes. The Intel® MPI Library includes thread safe libraries at level MPI_THREAD_MULTIPLE. Several threads can make the Intel MPI Library calls simultaneously. Use the compiler driver -mt_mpi option to link the thread safe version of the Intel MPI Library. Use the thread safe libraries if you request the thread support at the following levels:

MPI_THREAD_FUNNELED,
MPI_THREAD_SERIALIZED, or
MPI_THREAD_MULTIPLE.

How can I learn what version of the Intel® MPI Library is installed on the system?

You can use mpirun –V to get versioning and build information:

mpirun –V
This will output version information.

If this is an official package, look up the mpisupport.txt file or the Release Notes and search for a version information there:
cat /opt/intel/mpi/5.0/mpisupport.txt

If Intel MPI has been installed in RPM mode, try to query the RPM database:
rpm –qa | grep intel-mpi

Finally, for full build identification information, set I_MPI_VERSION to 1 and run any MPI program, grepping for "Build":
mpirun –n 2 –env ./a.out | grep –i build
This will turn up a couple of lines with the build date. Most of this information is also imbedded into the library and can be queried using the strings utility:
strings /opt/intel/mpi/5.0/lib/libmpi.so | grep –i build

Intel® MPI Library 5.0

Getting Started?

Click the Learn tab for guides and links that will quickly get you started.