Difficult Problems: Choosing a Different Set of Tasks

If you find a conflict that cannot be resolved using the above techniques, you should consider the following alternatives.

  • Merge the two tasks involved in the conflict into a single task.

  • Divide the tasks into smaller tasks and do the work preceding the conflict in parallel, the work involving the conflict serially, and the work after the conflict in parallel.

  • Find a different site to introduce parallelism.

  • Intel Advisor presents a simplified model of what is possible with parallel programming. Occasionally it will be beneficial to take advantage of more advanced techniques that are available in the Intel® TBB, OpenMP*, or native threading APIs.

Any changes - other than lock annotations - you have made to fix incidental sharing problems should be left in the code. These changes will not harm performance, they have improved maintainability, and they may be useful at the new site or in future parallelization efforts.

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