while writing a simple test to figure out how to add user tasks and such I stumbled upon the following questions:
1. Which ITT functions are actually supported by VTune? Things I have found to work are tasks, domains, ids, string handles. Things that do not work for me are e.g. __itt_task_group, __itt_marker, __itt_metadata_add, __itt_relation_add . I digged a bit through the .trace files generated by VTune and all the calls I make to functions like _itt_task_group actually end up in the collected data, but they do not appear anywhere in the GUI. Also stuff like feeding the parent id to a task does not seem to make any difference. Relevant links that I found:
- Task Groups: https://software.intel.com/sites/products/documentation/gpa/13.4/win/Task_Groups_Overview.htm
- Tracks and track groups: http://gpa.helpmax.net/en/intel-graphics-performance-analyzers-help/intel-itt-api-programmers-guide/...
2. Is there really no way to add any data to a task besides putting all the information into the task name? Is there a way to group tasks just like task groups promise to do?
3. What's the difference between events (e.g. see https://software.intel.com/zh-cn/blogs/2011/03/24/400006948 ) and tasks (e.g. https://software.intel.com/en-us/articles/a-simplest-example-to-use-task-apis-in-your-code )? They seem to be pretty much the same.
4. Is there a way to export the custom data collected with VTune so that I can analyze it with some script later on? Of course I can just export myself, but it would be nice to have a coherent system.
Event API helps you to observe the event occurring/finishing in your application, and know when and where. The developer can select the region then use "Zoom-in and Filter by selection" to focus new area with performance data. User Task API is more powerful to establish a logic group to mark any executing in your program, AND mark any region if you pay attention in sub-tasks.
I wrote two articles (you mentioned) about using Event API & Task API, several years ago. Now, I write a new example (attachment, for VS2013 .sln) for using these APIs, you can compare them in VTune Amplifier's result.
Region is marked in timeline panel of bottom-up report
Platform view display all customized info of Event/Task (your annotation code)