|
219 | 219 | <div class="pytorch-left-menu-search">
|
220 | 220 |
|
221 | 221 | <div class="version">
|
222 |
| - <a href='https://pytorch.org/docs/versions.html'>master (1.13.0a0+git50ba94f ) ▼</a> |
| 222 | + <a href='https://pytorch.org/docs/versions.html'>master (1.13.0a0+gitc657c3d ) ▼</a> |
223 | 223 | </div>
|
224 | 224 |
|
225 | 225 |
|
@@ -910,6 +910,70 @@ <h1>Source code for torch.autograd.profiler</h1><div class="highlight"><pre>
|
910 | 910 | <span class="k">return</span> <span class="n">profiled_future</span>
|
911 | 911 |
|
912 | 912 |
|
| 913 | +<div class="viewcode-block" id="emit_itt"><a class="viewcode-back" href="../../../autograd.html#torch.autograd.profiler.emit_itt">[docs]</a><span class="k">class</span> <span class="nc">emit_itt</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span> |
| 914 | + <span class="sd">"""Context manager that makes every autograd operation emit an ITT range.</span> |
| 915 | + |
| 916 | +<span class="sd"> It is useful when running the program under Intel(R) VTune Profiler::</span> |
| 917 | + |
| 918 | +<span class="sd"> vtune <--vtune_flags> <regular command here></span> |
| 919 | + |
| 920 | +<span class="sd"> The Instrumentation and Tracing Technology (ITT) API enables your application to generate and</span> |
| 921 | +<span class="sd"> control the collection of trace data during its execution across different Intel tools.</span> |
| 922 | +<span class="sd"> This context manager is to annotate Intel(R) VTune Profiling trace. With help of this context manager,</span> |
| 923 | +<span class="sd"> you will be able to see labled ranges in Intel(R) VTune Profiler GUI.</span> |
| 924 | + |
| 925 | +<span class="sd"> .. warning:</span> |
| 926 | +<span class="sd"> This context manager should not be called recursively, i.e. at most one</span> |
| 927 | +<span class="sd"> instance should be enabled at any given time.</span> |
| 928 | + |
| 929 | +<span class="sd"> Args:</span> |
| 930 | +<span class="sd"> enabled (bool, optional, default=True): Setting ``enabled=False`` makes this context manager a no-op.</span> |
| 931 | +<span class="sd"> Default: ``True``.</span> |
| 932 | +<span class="sd"> record_shapes (bool, optional, default=False): If ``record_shapes=True``, the itt range wrapping</span> |
| 933 | +<span class="sd"> each autograd op will append information about the sizes of Tensor arguments received</span> |
| 934 | +<span class="sd"> by that op, in the following format:</span> |
| 935 | +<span class="sd"> ``[[arg0.size(0), arg0.size(1), ...], [arg1.size(0), arg1.size(1), ...], ...]``</span> |
| 936 | +<span class="sd"> Non-tensor arguments will be represented by ``[]``.</span> |
| 937 | +<span class="sd"> Arguments will be listed in the order they are received by the backend op.</span> |
| 938 | +<span class="sd"> Please note that this order may not match the order in which those arguments were passed</span> |
| 939 | +<span class="sd"> on the Python side. Also note that shape recording may increase the overhead of itt range creation.</span> |
| 940 | + |
| 941 | +<span class="sd"> Example:</span> |
| 942 | +<span class="sd"> >>> with torch.autograd.profiler.emit_itt():</span> |
| 943 | +<span class="sd"> ... model(x)</span> |
| 944 | + |
| 945 | +<span class="sd"> """</span> |
| 946 | + <span class="k">def</span> <span class="fm">__init__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">enabled</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">record_shapes</span><span class="o">=</span><span class="kc">False</span><span class="p">):</span> |
| 947 | + <span class="bp">self</span><span class="o">.</span><span class="n">enabled</span> <span class="o">=</span> <span class="n">enabled</span> |
| 948 | + <span class="bp">self</span><span class="o">.</span><span class="n">entered</span> <span class="o">=</span> <span class="kc">False</span> |
| 949 | + <span class="bp">self</span><span class="o">.</span><span class="n">record_shapes</span> <span class="o">=</span> <span class="n">record_shapes</span> |
| 950 | + |
| 951 | + <span class="k">def</span> <span class="fm">__enter__</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span> |
| 952 | + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">enabled</span><span class="p">:</span> |
| 953 | + <span class="k">return</span> |
| 954 | + <span class="k">if</span> <span class="bp">self</span><span class="o">.</span><span class="n">entered</span><span class="p">:</span> |
| 955 | + <span class="k">raise</span> <span class="ne">RuntimeError</span><span class="p">(</span><span class="s2">"ITT annotation context manager is not reentrant"</span><span class="p">)</span> |
| 956 | + <span class="bp">self</span><span class="o">.</span><span class="n">entered</span> <span class="o">=</span> <span class="kc">True</span> |
| 957 | + <span class="n">_enable_profiler</span><span class="p">(</span> |
| 958 | + <span class="n">ProfilerConfig</span><span class="p">(</span> |
| 959 | + <span class="n">ProfilerState</span><span class="o">.</span><span class="n">ITT</span><span class="p">,</span> |
| 960 | + <span class="bp">self</span><span class="o">.</span><span class="n">record_shapes</span><span class="p">,</span> |
| 961 | + <span class="kc">False</span><span class="p">,</span> |
| 962 | + <span class="kc">False</span><span class="p">,</span> |
| 963 | + <span class="kc">False</span><span class="p">,</span> |
| 964 | + <span class="kc">False</span><span class="p">,</span> |
| 965 | + <span class="n">_ExperimentalConfig</span><span class="p">()),</span> |
| 966 | + <span class="nb">set</span><span class="p">()</span> |
| 967 | + <span class="p">)</span> |
| 968 | + <span class="k">return</span> <span class="bp">self</span> |
| 969 | + |
| 970 | + <span class="k">def</span> <span class="fm">__exit__</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">exc_type</span><span class="p">,</span> <span class="n">exc_val</span><span class="p">,</span> <span class="n">exc_tb</span><span class="p">):</span> |
| 971 | + <span class="k">if</span> <span class="ow">not</span> <span class="bp">self</span><span class="o">.</span><span class="n">enabled</span><span class="p">:</span> |
| 972 | + <span class="k">return</span> |
| 973 | + <span class="n">_disable_profiler</span><span class="p">()</span> |
| 974 | + <span class="k">return</span> <span class="kc">False</span></div> |
| 975 | + |
| 976 | + |
913 | 977 | <div class="viewcode-block" id="emit_nvtx"><a class="viewcode-back" href="../../../autograd.html#torch.autograd.profiler.emit_nvtx">[docs]</a><span class="k">class</span> <span class="nc">emit_nvtx</span><span class="p">(</span><span class="nb">object</span><span class="p">):</span>
|
914 | 978 | <span class="sd">"""Context manager that makes every autograd operation emit an NVTX range.</span>
|
915 | 979 |
|
|
0 commit comments