NOTE: Defects and feature requests described below represent specific issues with specific test cases. It is difficult to succinctly describe an issue and how it impacted the specific test case. Some of the issues listed may impact multiple architectures, operating systems, and/or languages. If you have any questions about the issues discussed in this report, please post on the user forums, http://software.intel.com/en-us/forums or submit an issue to Intel® Premier Support, https://premier.intel.com.
To avoid deadlock situations, you can use the following approaches:
Reorder MPI communication calls between processes.
Implement non-blocking calls.
Use MPI_Sendrecv or MPI_Sendrecv_replace.
Use the buffered mode.
The following code section leads to a deadlock in your original application:
No license (express or implied, by estoppel or otherwise) to any intellectual property rights is granted by this document.
Intel disclaims all express and implied warranties, including without limitation, the implied warranties of merchantability, fitness for a particular purpose, and non-infringement, as well as any warranty arising from course of performance, course of dealing, or usage in trade.
This section describes the steps you need to do before you start using the Intel® Trace Analyzer and Collector.
To perform all the steps described in this tutorial, you need the following software installed on your system:
To demonstrate the process of correctness checking of MPI applications, this tutorial uses two sample applications that have errors in the source code. All the sample applications eligible for correctness checking are available at: <install-dir>/examples/checking. You can use these samples to manually experiment with the functionality using the workflow described here.
The table below lists the environment variables that help you configure the MPI correctness checking. Please, look through them to understand their purpose. They all are used in the examples given in this tutorial.
To experiment with the data type mismatch example, copy the contents of the <install-dir>/itac/examples/checking/global/collective/datatype_mismatch/ directory to your working directory:
$ cp -r <install-dir>/itac_latest/examples/checking/global/collective/datatype_mismatch/ ~ $ cd ~/datatype_mismatch
Then compile and run the MPI_Bcast example located in the directory using the following commands:
To experiment with the deadlock example, copy the contents of the <install-dir>/itac/examples/checking/global/deadlock/hard/ directory to your working directory:
$ cp -r <install-dir>/itac_latest/examples/checking/global/deadlock/hard/ ~ $ cd ~/hard
Compile and run the example with the following commands:
You can use the Intel® Trace Analyzer to view the reported deadlock problem. Open the MPI_Recv.stf file in Intel® Trace Analyzer:
$ traceanalyzer MPI_Recv.stf
The trace information may look as follows: