Instruction address in memory
Number of CPU Threads
View scalar and vectorization characteristics that may impact performance.
Occurs when a task execution accesses a memory location more than once, under the control of different locks.
A data sharing problem happens when two tasks access the same memory location, and the behavior of the program depends on the order of accesses. This group of topics describes two common data access patterns - incidental sharing and independent updates - that result in data sharing problems that are relatively easy to fix. The fixes are described in Problem Solving Strategies.
In the topic Pointer Dereferences, we saw that there are techniques for dealing with incidental sharing of pointer-accessed storage in particular cases.
In general, to deal with sharing problems at indirect references you have to really understand what your program is doing. You cannot just do a text search for all the uses of a shared location and apply some transformation mechanically.
The Annotation Report window displays the annotations for your program. Intel Advisor updates the listed annotations when changes occur to the specified source directories. For example, when you save a source file with a code editor.
When tasks are loop iterations, and the iterations are over a range of values that are known before the loop starts, the loop is easily expressed in Intel Cilk Plus.
Consider the following serial code and the need to add parallelism to this loop:
Your program might have bugs that are now being exposed during parallel execution because of changes in order, memory allocation, uninitialized memory contents, and so on.
Such bugs are debugged in the same way as a serial (single-threaded) application, with the following challenges:
The program does not run in exactly the same order each time. Possible causes include: