I'm developping a multi-threaded application running on a generic multi-core platform. For performance, I'm mainly interested in making sure that threads are not being migrated and the they are running in the most appropriate core for efficient cache usage. I was wondering if there is a way to check which thread is running in which core during the whole execution time in Vtune (or other Intel tools)?
Please try these steps:
1. Use advanced-hotspots collector in VTune(TM) Amplifier XE 2013 Update 12 to profile your application
2. Open Bottom-up report after data collecting, you will see Hotspots viewpoint
3. Change "Grouping" to "Package / HW Context / Function / Call Stack" to view results.
4. There are many threads displayed in timeline panel, bottom of Bottom-up report, select one of your interest
5. Associated items, such as package_n / cpu_n / functions will be highlighted in upper panel - you can expand on nodes (package/cpu) to know that your thread worked on which package/cpu, and functions' name, and CPU time. If your thread was binded in one core, VTune will report data only on one core.