blob: 7d3fcd5f55eb6c3e2b6fa565d13ea38e9c5432d8 [file] [log] [blame] [view] [edit]
# ittapi
ittapi is a Python binding to Intel Instrumentation and Tracing Technology (ITT) API. It provides a convenient way
to mark up the Python code for further performance analysis using performance analyzers from Intel like Intel VTune
or others.
NOTE: For compatibility and smooth migration with earlier versions of Python bindings([itt-python](https://github.com/oleksandr-pavlyk/itt-python/)), please replace `import itt` with `import ittapi.compat as itt`. For more details about `ittapi.compat`, visit [ittapi.compat page](./ittapi/compat/README.md).
ittapi supports following ITT APIs:
- Collection Control API
- Domain API
- Event API
- Id API
- String Handle API
- Task API
- Thread Naming API
## Usage
The main goal of the project is to provide the ability to instrument a Python code using ITT API in the Pythonic way.
ittapi provides wrappers that simplify markup of Python code.
```python
import ittapi
@ittapi.task
def workload():
pass
workload()
```
`ittapi.task` can be used as a decorator. In this case, the name of a callable object (`workload` function in this
example) will be used as a name of the task and the task will be attributed to a default domain named 'ittapi'.
If you want to change the default name and/or other parameters for the task (e.g. task domain), you can pass
them as arguments to `ittapi.task`:
```python
import ittapi
@ittapi.task('My Task', domain='My Task Domain')
def workload():
pass
workload()
```
Also, `ittapi.task` returns the object that can be used as a context manager:
```python
import ittapi
with ittapi.task():
# some code here...
pass
```
If the task name is not specified, the `ittapi.task` uses call site information (filename and line number) to give
the name to the task. A custom name for the task and other task parameters can be specified via arguments
for `ittapi.task` in the same way as for the decorator form.
## Installation
ittapi package is available on PyPi and can be installed in the usual way for the supported configurations:
pip install ittapi
## Build
The native part of ittapi module is written using C++20 standard, therefore you need a compiler that supports this
standard, for example GCC-10 for Linux and Visual Studio 2022 for Windows.
### Ubuntu 22.04
1. Install the compiler and Python utilities to build module:
sudo apt install gcc g++ python3-pip
2. Clone the repository:
git clone https://github.com/intel/ittapi.git
3. Build and install ittapi:
cd python
pip install .
### Windows 10/11
1. Install [Python 3.8+](https://www.python.org/downloads/) together with pip utility.
2. Install [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/).
Make sure that "Desktop development with C++" workload is selected.
3. Clone the repository
git clone https://github.com/intel/ittapi.git
4. Build and install ittapi
cd python
pip install .
## References
- [Instrumentation and Tracing Technology APIs](https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2023-0/instrumentation-and-tracing-technology-apis.html)
- [Intel® VTune Profiler User Guide - Task Analysis](https://www.intel.com/content/www/us/en/docs/vtune-profiler/user-guide/2023-0/task-analysis.html)
- [Intel® Graphics Performance Analyzers User Guide - Instrumentation and Tracing Technology API Support](https://www.intel.com/content/www/us/en/docs/gpa/user-guide/2022-4/instrumentation-and-tracing-technology-apis.html)