No trace file using Intel® Trace Analyzer and Collector

Issue

When I instrument the application test.cpp with the Intel® MPI Library compilation driver mpiicpc and with the Intel® Trace Collector using the command line (listed below) for Itanium®-based systems for Intel® Pentium® 4, Intel® Xeon®, and Intel® 64-based architectures, I do not produce a trace file.

mpiicpc test.cpp -g -L${VT_ROOT}/lib -lVT -lvtunwind -ldwarf -lelf -lpthread -lm
-o testcpp_inst


or with the command:

mpiicpc test.cpp -g -L${VT_ROOT}/lib -lVT -ldwarf -lelf -lpthread -lm
-o testcpp_inst

Solution

When compiling the C++ application test.cpp with the Intel® C/C++ compiler (mpiicpc) and with Intel® Trace Collector requires an additional library called -lmpiic. The rule for this is that if one uses the MPI-2 C++ application programming interfaces (APIs) with the Intel® C/C++ compilers, then Intel® Trace Collector cannot intercept the MPI calls as they are written. They have to be mapped to C function calls first, with the help of an MPI implementation-specific wrapper library, which with respect to the command-line, has to be placed in front of the Intel® Trace Collector library. The name of that wrapper library for the mpiicpc compilation driver is -lmpiic. Thus, for Itanium®-base systems the command line should be:

mpiicpc test.cpp -g -lmpiic -L${VT_ROOT}/lib -lVT -lvtunwind -ldwarf -lelf -lpthread -lm
-o testcpp_inst


and for Intel® Pentium® 4, Intel® Xeon®, and Intel® 64-based architectures the compilation protocol should be:

mpiicpc test.cpp -g -lmpiic -L${VT_ROOT}/lib -lVT -ldwarf -lelf -lpthread -lm
-o testcpp_inst
For more complete information about compiler optimizations, see our Optimization Notice.