There is a saying that you can only manage what you can measure, and so several tools have emerged to help you understand how your code is behaving on multicore machines. Here is a brief round-up of three tools created by Intel, which you might find useful. If you’ve tried them out, or have any other tools to recommend, feel free to add a comment below.
- Intel VTune Performance Analyzer – I’ve mentioned this several times before on this blog, and this appears to be the most mature solution on offer. It can be used to analyse applications on all sizes of systems based on Intel processors, from embedded systems through supercomputers. This is a commercial application, but there is a 30-day free trial available too.
- Intel Performance Tuning Utility – this tool is experimental and provides more sophisticated analysis than Intel VTune for those who are experienced at performance tuning. It is able to map issues back to your source code, but can also block instructions for analysis if you don’t have the corresponding source code. You need a valid Intel VTune licence to use this software, and as usual with experimental releases, there is no guarantee that particular features will find it in to production. You can influence what ends up in any commercial release by providing your feedback, though. There is a detailed white paper available that shows you how the software can be used to make parallelisation easier (HTML and PDF versions available).
- Intel Software Tuning Agent – the newest of the three, this was released in December 2009. It is a Java program that is free (as in speech and beer), which helps prioritise performance events according to the number of execution cycles they take. The tool also helps to locate functions where there is a risk of stalling. It analyses non-managed runtime code and uses graphs and pie charts to make it easy to identify where the processor is spending most of its time. This tool works as an add-on to Intel VTune and Intel Performance Tuning Utility, and is supported on Windows for Intel Core processors. It also requires the Java Runtime Environment.