Debugging Parallel Code for Fast, Reliable Applications Webinar Questions and Answers

During the "Debugging Parallel Code for Fast, Reliable Applications" session of our technical web series about Multithreading tools and techniques, we received numerous questions about the Intel® Parallel Inspector.  The following questions were selected from the list of questions and answers generated by this web cast.  We thought they may be useful to other developers as reference. Note: the web cast is viewable on demand (via the link above), if you missed the original presentation.

Q:Can I use the thread checking mode and the memory checking mode on the same piece of software, that is, one after the other?
A: Yes. After you run one type of checking, you can then run the other type.

Q:How does the Parallel Inspector keep track of suppressed errors as you continue to develop your code? What kinds of editing changes cause Parallel Inspector suppressions to no longer match?
A: That is an excellent question!! By default, suppressions are created for the source line within the function. Consequently, any movement of the code outside of the function, or after the line within the function, does not invalidate the suppression. However, any source code added or deleted between the start of the function and the source line will cause the suppression to be applied to an unintended line. Thus, the original source line that caused the error would no longer be suppressed and the error would be reported again.

However, you can edit the suppression and use a wildcard to indicate that you don’t care about the line number and to ignore the error should it occur anywhere within the function, or the module, or the source file. See the Defining Private Suppression Rules topic in the Parallel Inspector help for more information.

Q: Can the Intel® Parallel Inspector catch data races entailing multi-process shared-memory accesses?
A: No, Parallel Inspector only watches multiple threads in a single process' execution.

Q: Will Intel® Parallel Studio run in Microsoft's Visual Studio* 2010 when it ships?
A: Visual Studio 2010 is beta software. We do not support beta software. When Visual Studio 2010 is released, there should be a Parallel Studio update or patch available to support it within some months.

Q: Can optimization create data races and other issues? That is, is it possible to actually introduce new issues by turning optimization on after using Parallel Inspector to eliminate problems?
A: Parallel Inspector finds race conditions whether or not they result in correct or incorrect results.  If a race condition already exists in the code, compiler optimizations might change relative timings that could result in a race condition resolving correctly or incorrectly more frequently or less frequently, but they will not cause new race conditions.    Compiler optimizations will not cause a race condition.

Q: Does Parallel Inspector also support OpenMP*?
A: Yes.  Parallel Inspector can detect data races and memory leaks in OpenMP applications.

Q: Intel® Parallel Inspector can inspect memory issues, too. Can you please explain the feature differences between Compuware's BoundsChecker* and Parallel Inspector?
A: Parallel Inspector supports OpenMP, Windows* native threads, Intel® Threading Building Blocks, and the Intel C language parallel extensions. Compuware's BoundsChecker may or may not support all of these threading models.  Also, BoundsChecker supports source-code instrumentation, while Parallel Inspector does not require source code modification through use of run-time instrumentation.

Q: Is there a way to mark up the data paths that were executed and tested by the Parallel Inspector on small and consecutive runs, so I can detect paths not tested?
A: Not using the Parallel Inspector.  However, Parallel Composer includes a code coverage utility (CodeCov) that can be used for this purpose.

Q: What is the difference between Inspector and Thread Checker?
A: Please see this article for a comparison.

For more complete information about compiler optimizations, see our Optimization Notice.