Fixing Annotation-related Errors Detected by the Suitability Tool

As the Suitability tool executes your target executable, it scans for a proper sequence of Intel Advisor annotations. If it detects an annotation-related or an error related to very small task sizes, it displays a message at the top of the Suitability Report window.

If you see such messages, investigate the cause and fix the error. The messages displayed are generally self-explanatory.

After you modify your source code and rebuild your application, run the Suitability tool again. When no errors appear near the top of the Suitability Report window, you can carefully examine the Suitability data to help you make decisions about the proposed parallel sites and tasks.

Tools to Help You Fix Annotation Errors

Use the Suitability Source window to view source code related to a specific site or task. You can also use the Annotation Report window to view a list of your annotations and display their code snippets.

When resolving annotation-related errors, consider the execution paths your program follows. If necessary, investigate the execution paths using a debugger.

In addition to annotation sequence messages, messages about task size may also appear. For example, if the CPU time used by a task per loop cycle is so small that it does not exceed the task overhead time, consider modifying the task annotation(s) after you examine the loop structure. In some cases, the message may suggest that you use a different type of task annotation (see the help topics under See Also below).

Proper Sequence of Annotations

The rules about a proper sequence of Intel Advisor annotations include the following:

  • Sites: A site-begin annotation is followed by annotations that mark one or more tasks. It is eventually terminated by a site-end annotation. For example, if a site-begin annotation is not followed by a task annotation or is not terminated by a site-end annotation, an error occurs.

  • Tasks: A task may be marked either with one iterative-task annotation or a pair of task-begin and task-end annotations. When used, an iterative-task annotation must be the only task within a site. Only a task-begin and task-end pair allows task nesting.

  • Locks: A lock-acquire annotation must be immediately followed by a lock-release annotation, and must occur within a task.

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