Fixing Annotation-related Errors Detected by the Suitability Tool
FixingAnnotation-related Errors Detected by the Suitability Tool
As the Suitability tool executes your target executable, it scans for a proper sequence of
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
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 Reportwindow, 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
Suitability Sourcewindow to view source code related to a specific site or task. You can also use the
Annotation Reportwindow 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
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.