QUALITY ASSURANCE AND DEVELOPMENT TOOLS FOR CONCURRENT AND PARALLEL CODE
Early Access Program
WHAT IS PARALLELWARE ANALYZER?
Parallelware Analyzer is a suite of command-line tools aimed at helping software developers to build better quality concurrent and 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.
The unmatched state-of-the-art static code analysis capabilities of the Parallelware technology address the problem of concurrency and 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 STAGES
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 for defects that may prevent the parallelization or that will have a negative impact on the parallel performance; the code is then searched for new parallelization opportunities, some of them are parallelized, and tests are conducted to guarantee correctness and measure performance improvements. Parallelware Analyzer assists throughout the parallelization workflow by: detecting and fixing defects related to concurrency and parallelism, identifying opportunities for parallelization, and implementing them using several technologies and heterogeneous computing platforms.
Check for defects
Even the most experienced developer regularly introduces coding defects. This is exacerbated when developing concurrent and parallel code. One defect can lead to a minor malfunction, incorrect results or cause serious security and/or safety issues. It can also prevent reaching the full parallelization performance potential or even restrict parallelizing code at all.
Existing static code analysis tools lack the technology to be able to detect defects related to concurrency and parallelism. Not only does Parallelware Analyzer fill that gap, it analyzes code faster than competitor code analysis tools. Parallelware Analyzer also provides hints on how to refactor your code to fix the defects identified.
Find opportunities for parallelism
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.
Once an 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.