Parallelware Analyzer
A static code analyzer specialized in parallelism
Early Access Program is now open!
Enter the program to have access to all versions of Parallelware Analyzer and support until the official release.

What is Parallelware Analyzer?
Parallelware Analyzer is a suite of command-line tools aimed at helping software developers to build better quality parallel software in less time. Designed around the needs of developers, Parallelware Analyzer provides the appropriate tools for the key stages of the parallel development workflow, aiding developers with code analysis that would otherwise be error-prone and completed manually. It can also be easily integrated with DevOps tools to exploit information from build systems such as CMake and benefit from its automatic usage during Continuous Integration.
The unmatched state-of-the-art static code analysis capabilities of the Parallelware technology address the complexity of parallelism from three different perspectives: finding concurrency issues in the code, discovering new opportunities for parallelization in the code, and generating parallel-equivalent code that enables tasks to complete in less time. The Parallelware analysis completes quickly and enables real-time static code analysis for the development of correct concurrent and parallel software.
The right tools for the key stage
Modern software development is an iterative process. The process of parallelizing your code should be too. Typically, developers start with a working sequential version of an algorithm and iterate to create new versions of it taking advantage of parallelization techniques to boost performance.

On each iteration of the parallelization workflow, code is profiled in order to identify the performance bottlenecks and hotspots.
Then the code is inspected to detect issues that may prevent the parallelization or that will have a negative impact on the parallel performance as well as defects to be fixed right away, such as race conditions. The code is then searched for new parallelization opportunities, some of which are parallelized. Finally, tests are conducted to guarantee correctness and measure performance improvements. Parallelware Analyzer assists throughout the parallelization workflow:
1.Get a quick high-level overview of the code.
Getting started can be daunting, no matter whether it is your code or not.
Some users need to improve the performance of their code. Others need to modernize someone else’s code. No matter how much you know about the code, parallelizing it is hard and usually a top-down approach helps. While Parallelware Analyzer consists on a set of tools, we provide a convenient entry point to get started and learn how to proceed with the other tools depending on your use case.
➝ Use an entry-point tool that provides a high-level summary of your code and suggests next steps.
The way in which code is written impacts its potential for being parallelized. In some cases, it may prevent it from being parallelized altogether. Developers might need to refrain from using certain programming features or styles to avoid inhibiting parallelization. The problem is that in many cases they are not aware of these issues. Parallelware Analyzer addresses this by providing recommendations on changes needed to prepare the code for parallelization as well as to minimize the chances of introducing bugs due to race conditions.
➝ Get recommendations on how to make your code follow the best practices for parallelization.
2. Prepare your code for parallelization.
How an algorithm is codified has a great influence on how it can be parallelized.
3. Detect and fix defects related to parallelism.
Data race conditions are very hard to detect and debug.
Even the most experienced developer regularly introduces coding defects. This is exacerbated when developing parallel code. One defect can lead to a minor malfunction, incorrect results or cause serious security and/or safety issues.
Existing static code analysis tools lack the technology to be able to detect defects related to parallelism. Not only does Parallelware Analyzer fill that gap, it analyzes code faster than competitor code analysis tools and it also provides hints on how to refactor your code to fix the defects identified.
The most common defects in parallelization are data races. Some dynamic analysis tools are able to detect some data races but none is able to guarantee that the code is data race free. Parallelware Analyzer does.
➝ Find data race conditions hidden in your code and obtain information about how to fix them. Ensure that a parallelized code is free of data races.
Discovering opportunities for parallelization in your code is a complex and time-consuming task. Parallelware uses the Appentra approach of parallelization by code patterns providing more effective parallelization support. Parallelware Analyzer supports a collection of frequently-used code patterns that are suitable for parallelization on heterogeneous hardware. Continuous improvements in Parallelware pattern-based technology makes it possible to discover new opportunities for parallelism in real code.
➝ Discover which loops are most suitable for parallelization, how they can be classified into common parallel patterns and which is the best parallelization strategy for them.
4. Identifying opportunities for parallelization.
Your code most likely contains many loops which can be parallelized in many different ways.
5.Parallelize opportunities choosing among several technologies and heterogeneous computing platforms.
Different parallel hardware and technologies to exploit parallelization opportunities are available.
Once a parallelization opportunity has been identified with the assistance of Parallelware Analyzer, the tool can generate the appropriate OpenMP or OpenACC directives for the code. Multiple parallelization techniques can be selected including multi-threading, tasking or offloading to GPUs.
➝ Create new parallel versions of your code using technologies such as OpenMP and OpenACC and targeting different hardware, including multicore CPUs and GPUs.
Posts and Resources
› Checks reference index
› Defects and recommendations for parallelism
› Fixing defects in parallel code: an OpenMP example
› Parallelware Analyzer NPB Quickstart
› Using CMake’s compilation database with Parallelware Analyzer
› Interprocedural analysis across source code files with Parallelware Analyzer
Get started with Parallelware Analyzer
Subscribe to our newsletter and get all of our updates