The review will not be as thorough as the one on Advisor Lite, because Advisor is an update of Advisor Lite. It has some additional features, and that’s what I’d like to focus on.
I won’t dwell into the details of Intel’s new offer, suffice to say that Intel took the opportunity of changing some offers name and of incorporating some parts of Parallel Studio in its other products, and of course on Linux (which was left alone until then).
Description of the workflow
The workflow is comparable to the one of Advisor Lite. After the profile, annotations are made, and then additional tests are performed. This is where Advisor differs from Advisor Lite, but I’ll get to this in a short moment. I won’t describe every step as in the Advisor Lite review, as they are pretty much identical.
The workflow is clearly identified, as there is a panel for it, with links to the help pages and the different other dialog boxes.
This page is vastly more usable than the one provided by the first Advisor beta. One couldn’t go to the next step without completing the current one, and sometimes it didn’t work whatever you tried. Now, it’s working.
Profile to detect hotposts
A profile creation is very simple. You just have to push the button. Be sure to be in Release mode, and that’s it.
Here is an example:
The profile is taken from my IRT series. As, for the Lite version, I’ve used a basic scene, although a more complicated one would give a similar profile. It is clear that most of the time is spent inside IRT::UniformSample
Annotation of the source
Annotation is a manual process, although Intel provides a contextual menu that adds macros automatically to your selection. A specific header has to be added, but it is also available in the menu. For instance, one macro will say that a group can be parallelized (a site), another will delimit each task, another will act as a lock, …
I think this window is the heart and the jewel of Advisor. All the other stuff were already availabe in Advisor Lite, but this is entirely new.
Usually, when one tries to optimize a code, the biggest issue is estimating the future gain. This is especially true with parallelization. Intel took the opportunity of Advisor to create a solution to this question. No need to implement the optimization, just do a scalability test. Advisor will then help you design your parallelization implementation with different libraries and different options (meta-tasks, …)
As I’ve already said, this window is a jewel, and the heart of how to make a correct decision.
Of course, the parallelization is correct only if the program remains correct. Advisor takes another pat of Parallel Studio (Inspector this time) to help ensure the correction of the parallelization. This step must be done in debug mode, otherwise, the reporting won’t be correct.
Several reported errors may not be errors, you still will have to sort them out, but there may be some real errors that you won’t have thought of.
This step and the step before must be done several times, until there are no more correction issues.
The work is not done. The final step is the actual implementation, but the work is easier as every element is annotated.
All things considered, Advisor may seem not useful, until one actually use it. Its real strength is IMHO the scalability estimation et the correction. Usually you don’t have access to these until the code is parallel, and all the problems appear then at once. With Advisor, the risk is far less.
Unfortunately, this plugin is only available in Parallel Studio, and not the other XE products (I can be wrong, show me I am ;)). It may be the perfect gift from your boss this Christmas.