User Guide

Contents

advisor-annotate.h and libittnotify.dll

This topic is provided for reference, but it should not be needed. If you read this because you believe you need it to understand a problem, please provide feedback (see the release notes for support information).
Code using
advisor-annotate.h
should work when running your application
regardless of whether or not you are running your application under Visual Studio
using
Intel® Advisor
on Windows* OS. However, should you run into problems, this topic provides a few implementation details that might be helpful to understand issues.
Each compilation unit that includes
advisor-annotate.h
, and that has one or more annotations in it, will have a global inline routine named
__AnnotateRoutine
. This routine is called from the various locations where you have used the
ANNOTATE
* macros, and will be used to invoke one or more routines in
libittnotify.dll
(on Windows OS) or
libittnotify.so
(on Linux* OS)
.
__AnnotateRoutine
is an inline function that will have only one copy per executable in your program. So, if you are only working on modeling semantic behavior in a single Dynamic Link Library (DLL), you will only have one copy of it in that one library. If you have multiple executables where you have annotations, there will be a single copy of
__AnnotateRoutine
for each executable.
When the
ANNOTATE
macros are used, the first one executed in a given executable attempts to load
libittnotify.dll
from the current path.
Once the library is loaded, calls from the annotations will go to the
__itt_model*
routines in the library. If an expected routine is not found, the code asserts.
The following figure shows what happens when you have a main executable and a DLL that both have annotations:
Showing a main executable and a DLL that both have annotations
Finally, the annotation routines -
__itt_model*
in the
.dll
- by themselves are only markers for a tool that interprets the calls. Unless the program is run under the tool, these routines will not do anything. The intent is that the application will run normally when it is not run under the tool.

Product and Performance Information

1

Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804