We are pleased to announce a new public release of Parallelware Analyzer, the first static code analyzer specializing in performance. This version 0.19 introduces two new analyses, one comparing the vectorization capabilities of compilers present in the system and another one focused on functions, as well as significant filtering improvements to enhance the user experience.
The new vectorizing compiler capability analysis helps you quickly identify which is the most suitable compiler for your code in terms of vectorization. In systems such as supercomputers, where multiple compilers are available, it greatly simplifies choosing the right one. Additionally, it provides invaluable insights into the reasons why a loop is not being vectorized and how to correct that. Give it a try with your own code by invoking the
pwloops --vector-support command.
pwreport --functions analysis reports the user-defined functions used in the code along with those of parallel and scientific libraries (e.g. OpenMP, OpenACC, CBLAS). Relevant properties are reported for user-defined functions, such as the number of variables of each type it contains or whether the function is free of side effects, contains recursion, or calls to OpenMP, OpenACC or MPI.
Filtering capabilities have been greatly improved by introducing tags and redesigning the function and loop filter syntax. The previous
--function arguments allowing to focus the analysis on a given loop or function have been replaced by a new input syntax which allows specifying a function name or loop location along the file name (e.g.
pwloops foo.c:bar would focus on function
bar inside the
foo.c source file). This also applies to the
--exclude argument which can now be used not only to exclude entire files but also specific loops or functions.
The new tag system allows you to efficiently focus on the actionable insights more relevant to you, no matter whether you are interested in offloading to the GPU, data locality or vectorization, to name a few. Each parallelization opportunity, defect, recommendation and remark has one or more associated tags that you can use to include or exclude them from your analyses through
--exclude-tags, respectively. Invoke
pwreport --list-all to get the exhaustive list of actionable insights and their tags.
As in every release, we have improved our underlying Parallelware technology (more about how it works) and extended the supported checks with 3 new defects and 2 recommendations:
- PWD009: Incorrect privatization in parallel region
- PWD010: Incorrect sharing in parallel region
- PWD011: Missing OpenMP lastprivate clause
- PWR026: Annotate function for OpenMP Offload
- PWR027: Annotate function for OpenACC Offload