240
edits
Changes
→How does it work?
=== How does it work? ===
Advisor surveys the given binary of an application built in release mode and its source code to determine information such as the time spent processing the instructions in the call stack, the loops that can be vectorized, and the estimates on the merits of vectorizing un-vectorized and under-vectorized loops. You can upgrade the Survey Report to allow it to make better suggestions by collecting additional information through running a Trip Count Analysis to determine the number of times loops and functions are executed; this step is optional. A second run of the Survey Analysis is required after changes are made to the application based on the suggestions in the first Survey Report. If the new report states all loops are vectorized, then the Advisor has completed its job; but this is often not the case in complex programs due to dependencies and memory issues. To resolve these issues, you can mark suspicious sections of the code and use the Dependencies analysis and the Memory Access Patterns (MAP) analysis to identify the causes and make the appropriate changes.
The Threading Workflow also begins with a survey for times and an optional count of invocations to generate the Survey Report. You must add annotations to the source code to identify the sections for the Advisor to try parallelization. With annotations added, Advisor can determine whether the annotated areas are suitable for parallelization and give estimates of the performance boost if the areas are parallelized. Lastly, a Dependencies analysis can identify the data sharing issues within annotated code sections. Similar to the Vectorization Workflow, you can modify the source code and repeat these analyses as necessary to parallelize a serial application.