| |
| |
| <!DOCTYPE html> |
| <html class="writer-html5" lang="en" data-content_root="../"> |
| <head> |
| <meta charset="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>Just-In-Time (JIT) API — ITT/JIT APIs Documentation documentation</title> |
| <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=80d5e7a1" /> |
| <link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=9edc463e" /> |
| |
| |
| <link rel="canonical" href="https://intel.github.io/ittapi/src/jit-api-support.html" /> |
| <script src="../_static/jquery.js?v=5d32c60e"></script> |
| <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> |
| <script src="../_static/documentation_options.js?v=5929fcd5"></script> |
| <script src="../_static/doctools.js?v=fd6eb6e6"></script> |
| <script src="../_static/sphinx_highlight.js?v=6ffebe34"></script> |
| <script src="../_static/js/theme.js"></script> |
| <link rel="index" title="Index" href="../genindex.html" /> |
| <link rel="search" title="Search" href="../search.html" /> |
| <link rel="next" title="Compile and Link with JIT API" href="using-jit-api.html" /> |
| <link rel="prev" title="User-Defined Synchronization API" href="ittapi/user-defined-synchronization-api.html" /> |
| </head> |
| |
| <body class="wy-body-for-nav"> |
| <div class="wy-grid-for-nav"> |
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> |
| <div class="wy-side-scroll"> |
| <div class="wy-side-nav-search" > |
| |
| |
| |
| <a href="../index.html" class="icon icon-home"> |
| ITT/JIT APIs Documentation |
| </a> |
| <div role="search"> |
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> |
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> |
| <input type="hidden" name="check_keywords" value="yes" /> |
| <input type="hidden" name="area" value="default" /> |
| </form> |
| </div> |
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> |
| <p class="caption" role="heading"><span class="caption-text">Contents:</span></p> |
| <ul class="current"> |
| <li class="toctree-l1"><a class="reference internal" href="overview.html">Overview</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="build.html">Build from Source Code</a></li> |
| <li class="toctree-l1 current"><a class="reference internal" href="api-support.html">Use the ITT/JIT APIs</a><ul class="current"> |
| <li class="toctree-l2 current"><a class="reference internal" href="api-support.html#c-c-api-usage-and-reference">C/C++ API Usage and Reference:</a><ul class="current"> |
| <li class="toctree-l3"><a class="reference internal" href="itt-api-support.html">Instrumentation and Tracing Technology (ITT) API</a></li> |
| <li class="toctree-l3 current"><a class="current reference internal" href="#">Just-In-Time (JIT) API</a><ul> |
| <li class="toctree-l4"><a class="reference internal" href="#environment-variables-in-the-jit-profiling-api">Environment Variables in the JIT Profiling API</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#profile-trace-based-and-method-based-jit-compiled-code">Profile Trace-based and Method-based JIT-compiled Code</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#analyze-split-functions">Analyze Split Functions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#explore-inline-functions">Explore Inline Functions</a></li> |
| <li class="toctree-l4"><a class="reference internal" href="#learn-more">Learn More</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li class="toctree-l2"><a class="reference internal" href="api-support.html#other-language-api-bindings">Other Language API Bindings:</a></li> |
| </ul> |
| </li> |
| <li class="toctree-l1"><a class="reference internal" href="ref_collector.html">ITT API Reference Collector</a></li> |
| <li class="toctree-l1"><a class="reference external" href="https://github.com/intel/ittapi">GitHub Project</a></li> |
| </ul> |
| |
| </div> |
| </div> |
| </nav> |
| |
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > |
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> |
| <a href="../index.html">ITT/JIT APIs Documentation</a> |
| </nav> |
| |
| <div class="wy-nav-content"> |
| <div class="rst-content style-external-links"> |
| <div role="navigation" aria-label="Page navigation"> |
| <ul class="wy-breadcrumbs"> |
| <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> |
| <li class="breadcrumb-item"><a href="api-support.html">Use the ITT/JIT APIs</a></li> |
| <li class="breadcrumb-item active">Just-In-Time (JIT) API</li> |
| <li class="wy-breadcrumbs-aside"> |
| <a href="../_sources/src/jit-api-support.rst.txt" rel="nofollow"> View page source</a> |
| </li> |
| </ul> |
| <hr/> |
| </div> |
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
| <div itemprop="articleBody"> |
| |
| <section id="just-in-time-jit-api"> |
| <span id="jit-api-support"></span><h1>Just-In-Time (JIT) API<a class="headerlink" href="#just-in-time-jit-api" title="Link to this heading"></a></h1> |
| <p>Use the Just-In-Time (JIT) Profiling API to enable performance tools to collect |
| information about just-in-time generated codes. You must insert JIT Profiling |
| API calls in the code generator to report information before the JIT-compiled |
| code goes to execution. This information is collected at runtime and used by |
| tools like Intel® VTune™ Profiler to display performance metrics associated |
| with JIT-compiled code.</p> |
| <p>You can use the JIT Profiling API to profile scenarios like:</p> |
| <ul class="simple"> |
| <li><p>Dynamic JIT compilation of JavaScript code traces</p></li> |
| <li><p>JIT execution in OpenCL™ applications</p></li> |
| <li><p>Java*/.NET* managed execution environments</p></li> |
| <li><p>Custom ISV JIT engines</p></li> |
| </ul> |
| <p>You can use the JIT Profiling API to profile such environments as |
| dynamic JIT compilation of JavaScript code traces, JIT execution in |
| OpenCL™ applications, Java*/.NET* managed execution environments, and |
| custom ISV JIT engines.</p> |
| <p>The JIT engine generates code during runtime and communicates through the |
| static part with a profiler object (Collector). During runtime, the JIT engine |
| reports the information about JIT-compiled code that is stored in a trace file |
| by the profiler object. After collection, the profiling tool uses the generated |
| trace file to resolve the JIT-compiled code.</p> |
| <p>Use the JIT Profiling API to:</p> |
| <ul class="simple"> |
| <li><p><a class="reference internal" href="#profile-trace-based-and-method-based-jit-compiled-code"><span class="std std-ref">Profile Trace-based and Method-based JIT-compiled Code</span></a></p></li> |
| <li><p><a class="reference internal" href="#analyze-split-functions"><span class="std std-ref">Analyze Split Functions</span></a></p></li> |
| <li><p><a class="reference internal" href="#explore-inline-functions"><span class="std std-ref">Explore Inline Functions</span></a></p></li> |
| </ul> |
| <section id="environment-variables-in-the-jit-profiling-api"> |
| <h2>Environment Variables in the JIT Profiling API<a class="headerlink" href="#environment-variables-in-the-jit-profiling-api" title="Link to this heading"></a></h2> |
| <p>The JIT Profiling API contains two environment variables:</p> |
| <ul class="simple"> |
| <li><p><code class="docutils literal notranslate"><span class="pre">INTEL_JIT_PROFILER32</span></code></p></li> |
| <li><p><code class="docutils literal notranslate"><span class="pre">INTEL_JIT_PROFILER64</span></code></p></li> |
| </ul> |
| <p>In turn, these variables contain paths to specific runtime libraries.</p> |
| <p>These variables are used to signal the replacement of the stub |
| implementation of the JIT API with the JIT API collector. |
| After you instrument your code with the JIT API and link it to the |
| JIT API stub (<code class="docutils literal notranslate"><span class="pre">libjitprofiling.lib/libjitprofiling.a</span></code>), when the |
| environment variables are set, your code loads the libraries defined |
| in the variables.</p> |
| <p>Make sure to set these environment variables for the <code class="docutils literal notranslate"><span class="pre">ittnotify_collector</span></code> |
| to enable data collection:</p> |
| <p>On Windows*:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">INTEL_JIT_PROFILER32</span><span class="o">=</span><install-dir><span class="se">\b</span>in32<span class="se">\r</span>untime<span class="se">\i</span>ttnotify_collector.dll |
| <span class="nv">INTEL_JIT_PROFILER64</span><span class="o">=</span><install-dir><span class="se">\b</span>in64<span class="se">\r</span>untime<span class="se">\i</span>ttnotify_collector.dll |
| </pre></div> |
| </div> |
| <p>On Linux*:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">INTEL_JIT_PROFILER32</span><span class="o">=</span><install-dir>/lib32/runtime/libittnotify_collector.so |
| <span class="nv">INTEL_JIT_PROFILER64</span><span class="o">=</span><install-dir>/lib64/runtime/libittnotify_collector.so |
| </pre></div> |
| </div> |
| <p>On FreeBSD*:</p> |
| <div class="highlight-bash notranslate"><div class="highlight"><pre><span></span><span class="nv">INTEL_JIT_PROFILER64</span><span class="o">=</span><target-package>/lib64/runtime/libittnotify_collector.so |
| </pre></div> |
| </div> |
| </section> |
| <section id="profile-trace-based-and-method-based-jit-compiled-code"> |
| <span id="id1"></span><h2>Profile Trace-based and Method-based JIT-compiled Code<a class="headerlink" href="#profile-trace-based-and-method-based-jit-compiled-code" title="Link to this heading"></a></h2> |
| <p>This is the most common scenario for using JIT Profiling API to profile |
| trace-based and method-based JIT-compiled code:</p> |
| <div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><jitprofiling.h></span> |
| |
| |
| <span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">iJIT_IsProfilingActive</span><span class="p">()</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">iJIT_SAMPLING_ON</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> |
| <span class="w"> </span><span class="k">return</span><span class="p">;</span> |
| <span class="p">}</span> |
| |
| <span class="n">iJIT_Method_Load</span><span class="w"> </span><span class="n">jmethod</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">jmethod</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">iJIT_GetNewMethodID</span><span class="p">();</span> |
| <span class="n">jmethod</span><span class="p">.</span><span class="n">method_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"method_name"</span><span class="p">;</span> |
| <span class="n">jmethod</span><span class="p">.</span><span class="n">class_file_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"class_name"</span><span class="p">;</span> |
| <span class="n">jmethod</span><span class="p">.</span><span class="n">source_file_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s">"source_file_name"</span><span class="p">;</span> |
| <span class="n">jmethod</span><span class="p">.</span><span class="n">method_load_address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code_addr</span><span class="p">;</span> |
| <span class="n">jmethod</span><span class="p">.</span><span class="n">method_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">code_size</span><span class="p">;</span> |
| |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">jmethod</span><span class="p">);</span> |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_SHUTDOWN</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span> |
| </pre></div> |
| </div> |
| <p><strong>Usage Tips</strong></p> |
| <ul class="simple"> |
| <li><p>If any <code class="docutils literal notranslate"><span class="pre">iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED</span></code> event overwrites a method |
| that has already been reported , that method becomes invalid. The memory |
| region of the method is treated as unloaded.</p></li> |
| <li><p>If the line number information that was provided contains multiple source |
| lines for the same assembly instruction (code location), the profiling tool |
| selects the first line number.</p></li> |
| <li><p>You can associate dynamically generated code with a module name. Use the |
| <code class="docutils literal notranslate"><span class="pre">iJIT_Method_Load_V2</span></code> structure for this purpose.</p></li> |
| <li><p>If you register a function with the same method ID multiple times and you |
| specify different module names, the profiling tool selects the module name |
| that was registered first. If you want to distinguish the same function |
| between different JIT engines, provide different method IDs for each |
| function. Other symbolic information, like source file, can be identical.</p></li> |
| </ul> |
| </section> |
| <section id="analyze-split-functions"> |
| <span id="id2"></span><h2>Analyze Split Functions<a class="headerlink" href="#analyze-split-functions" title="Link to this heading"></a></h2> |
| <p>You can use the JIT Profiling API to analyze split functions. This scenario |
| often occurs in resource-limited environments where the code for the same |
| function is generated or updated in separate segments. Sometimes this code |
| generation can happen with overlapping lifetimes.</p> |
| <div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><jitprofiling.h></span> |
| |
| |
| <span class="kt">unsigned</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">iJIT_GetNewMethodID</span><span class="p">();</span> |
| |
| |
| <span class="n">iJIT_Method_Load</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">a</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">method_id</span><span class="p">;</span> |
| <span class="n">a</span><span class="p">.</span><span class="n">method_load_address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x100</span><span class="p">;</span> |
| <span class="n">a</span><span class="p">.</span><span class="n">method_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x20</span><span class="p">;</span> |
| |
| |
| <span class="n">iJIT_Method_Load</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">b</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">method_id</span><span class="p">;</span> |
| <span class="n">b</span><span class="p">.</span><span class="n">method_load_address</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x200</span><span class="p">;</span> |
| <span class="n">b</span><span class="p">.</span><span class="n">method_size</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mh">0x30</span><span class="p">;</span> |
| |
| |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">a</span><span class="p">);</span> |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">b</span><span class="p">)</span> |
| </pre></div> |
| </div> |
| <p><strong>Usage Tips</strong></p> |
| <ul class="simple"> |
| <li><p>If a <code class="docutils literal notranslate"><span class="pre">iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED</span></code> event overwrites a method |
| that was already reported, that method becomes invalid and its memory |
| region is treated as unloaded.</p></li> |
| <li><p>All code regions that are reported with the same method ID are |
| considered to belong to the same method. Symbolic information |
| (method name, source file name) is taken from the first notification. |
| All subsequent notifications with the same method ID are processed only |
| for the information in the line number table.</p></li> |
| <li><p>If you register a second code region with a different source file |
| name and the same method ID, this information is saved and is not |
| considered as an extension of the first code region. However, the |
| profiling tool uses the source file of the first code region and |
| can map performance metrics incorrectly.</p></li> |
| <li><p>If you register a second code region with the same source file as |
| the one used for the first region and you use the same method ID, |
| the source file is discarded but the profiling tool maps metrics to |
| the source file correctly.</p></li> |
| <li><p>If you register a second code region with a null source file and |
| the same method ID, provided line number info will be associated |
| with the source file of the first code region.</p></li> |
| </ul> |
| </section> |
| <section id="explore-inline-functions"> |
| <span id="id3"></span><h2>Explore Inline Functions<a class="headerlink" href="#explore-inline-functions" title="Link to this heading"></a></h2> |
| <p>You can use the JIT Profiling API to explore inline functions including |
| the multilevel hierarchy of nested inline methods that shows the distribution |
| of performance metrics.</p> |
| <div class="highlight-cpp notranslate"><div class="highlight"><pre><span></span><span class="cp">#include</span><span class="w"> </span><span class="cpf"><jitprofiling.h></span> |
| |
| |
| <span class="c1">// method_id parent_id</span> |
| <span class="c1">// [-- c --] 3000 2000</span> |
| <span class="c1">// [---- d -----] 2001 1000</span> |
| <span class="c1">// [---- b ----] 2000 1000</span> |
| <span class="c1">// [------------ a ----------------] 1000 n/a</span> |
| |
| |
| <span class="n">iJIT_Method_Load</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">a</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1000</span><span class="p">;</span> |
| |
| |
| <span class="n">iJIT_Method_Inline_Load</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">b</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2000</span><span class="p">;</span> |
| <span class="n">b</span><span class="p">.</span><span class="n">parent_method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1000</span><span class="p">;</span> |
| |
| |
| <span class="n">iJIT_Method_Inline_Load</span><span class="w"> </span><span class="n">c</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">c</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">3000</span><span class="p">;</span> |
| <span class="n">c</span><span class="p">.</span><span class="n">parent_method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2000</span><span class="p">;</span> |
| |
| |
| <span class="n">iJIT_Method_Inline_Load</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">{</span><span class="mi">0</span><span class="p">};</span> |
| <span class="n">d</span><span class="p">.</span><span class="n">method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2001</span><span class="p">;</span> |
| <span class="n">d</span><span class="p">.</span><span class="n">parent_method_id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1000</span><span class="p">;</span> |
| |
| |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">a</span><span class="p">);</span> |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">b</span><span class="p">);</span> |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">c</span><span class="p">);</span> |
| <span class="n">iJIT_NotifyEvent</span><span class="p">(</span><span class="n">iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED</span><span class="p">,</span><span class="w"> </span><span class="p">(</span><span class="kt">void</span><span class="o">*</span><span class="p">)</span><span class="o">&</span><span class="n">d</span><span class="p">);</span> |
| </pre></div> |
| </div> |
| <p><strong>Usage Tips</strong></p> |
| <ul class="simple"> |
| <li><p>Each inline (<code class="docutils literal notranslate"><span class="pre">iJIT_Method_Inline_Load</span></code>) method should be associated |
| with two method IDs: one for itself; one for its immediate parent.</p></li> |
| <li><p>Address regions of inline methods of the same parent method cannot |
| overlap each other.</p></li> |
| <li><p>Execution of the parent method must not start until the parent method |
| and all its inline methods are reported.</p></li> |
| <li><p>For nested inline methods, the order of |
| <code class="docutils literal notranslate"><span class="pre">iJVM_EVENT_TYPE_METHOD_INLINE_LOAD_FINISHED</span></code> events is not important.</p></li> |
| <li><p>If any event overwrites either inline method or top parent method, |
| then the parent, including inline methods, becomes invalid and their |
| memory region is treated as unloaded.</p></li> |
| </ul> |
| </section> |
| <section id="learn-more"> |
| <h2>Learn More<a class="headerlink" href="#learn-more" title="Link to this heading"></a></h2> |
| <div class="toctree-wrapper compound"> |
| <ul> |
| <li class="toctree-l1"><a class="reference internal" href="using-jit-api.html">Compile and Link with JIT API</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="jit-api-reference.html">JIT API Reference</a></li> |
| </ul> |
| </div> |
| </section> |
| </section> |
| |
| |
| </div> |
| </div> |
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> |
| <a href="ittapi/user-defined-synchronization-api.html" class="btn btn-neutral float-left" title="User-Defined Synchronization API" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> |
| <a href="using-jit-api.html" class="btn btn-neutral float-right" title="Compile and Link with JIT API" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> |
| </div> |
| |
| <hr/> |
| |
| <div role="contentinfo"> |
| <p>© Copyright 2026 Intel Corporation.</p> |
| </div> |
| |
| Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a |
| <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a> |
| provided by <a href="https://readthedocs.org">Read the Docs</a>. |
| |
| |
| </footer> |
| </div> |
| </div> |
| </section> |
| </div> |
| <script> |
| jQuery(function () { |
| SphinxRtdTheme.Navigation.enable(true); |
| }); |
| </script> |
| |
| </body> |
| </html> |