I have been adding some tasks to my code and I was trying to create sub-tasks that are within a parent task. I did a bit of searching on the web and I noticed that within the Intel Graphics Performance Analyzers the ITT APIs appear to offer such functionality. (https://software.intel.com/content/www/us/en/develop/documentation/gpa-user-guide-for-windows-host/top/instrumentation-and-tracing-technology-apis/itt-api-description/task-api.html).
I started looking through the header file for ITT I have in VTune (ittnotify.h), and I found references to 'overlapped' tasks, as well as '__itt_id_make' and '__itt_id_create' functions. I had a quick attempt at trying to make use of these, but as there is little documentation I struggled to make any head way.
Is it possible to create sub-tasks and assign them to parent task_ids, and is there any documentation or examples anywhere I can use to crib usage from?
Did you get a chance to look in to below documentation on ITT provided by vtune ? Also provide us what additional information is required. We are also checking with vtune team if any other documentation is available.
Yes, I've been using the VTune ITT documentation, and in particular the page on the Task API.
On this Task API page we can see that '__itt_task_begin' takes parameters for 'taskid' and 'parentid', where 'parentid' is described as 'The parent instance to which this task belongs, or __itt_null'.
There is slightly more/different information on the GPA Task API page for ITT that also mentions methods for overlapped tasks, however it provides no example of ho to use them, or what to use them for.
Looking at 'ittnotify.h' provided in the VTune includes, there appears to be methods available to create '__itt_id' types, along with the overlapped methods discussed in the GPA manual. From my user perspective, it looks as though there is only a single generic ITT library shared amongst the Intel tools.
What I would like to be able to do is to define a parent task at a higher-level in my code, and then define child tasks for the blocks of code that are called underneath. The aim is to make visualisation of the profiling results in VTune much clearer by being able to group blocks of code with specific tasks.
I hope this description is clear! If you have more questions then just ask.