We are pleased to announce the availability of Parallelware Analyzer 0.16. This release features a redesigned pwloops tool and new checks to improve the detection of data races and GPU data movement issues:
- Redesign of pwloops to better match the parallelization workflow: first, make sure that the code is analyzable; second, see what computation patterns are present; third, discover which parallelization opportunities are there; and fourth, know which opportunities can be automatically parallelized using pwdirectives. This should help you better check the progress in preparing your code for parallelism by following best practice recommendations, and in converting sequential loops into parallelization opportunities.
- Memory-footprint analysis. You can now use pwloops –memory-footprint to gain insights into which array ranges are accessed in your code. Such array ranges are very useful to determine array sections that are referenced in a loop and that need to be copied from the CPU memory to the GPU memory when the loop computations are offloaded to the GPU.
- OpenMP 4.5 enter/exit data execution statements support. pwdirectives is now able to generate directives to perform deep-copy of non-contiguous multidimensional arrays using OpenMP enter/exit data statements.
- New CSV output format. Now pwreport can output information in human-friendly text, JSON or CSV.
- New defects and recommendations. Parallelware Analyzer checks catalog has been extended with 11 new defects and recommendations, with an special emphasis on improving the detection of data races and GPU data movement issues:
- PWD004: Out-of-memory-bounds array access.
- PWD005: Array range copied to or from the GPU does not cover the used range.
- PWD006: Missing deep copy of non-contiguous data to the GPU.
- PWD007: Unprotected multithreading recurrence.
- PWD008: Unprotected multithreading recurrence due to out-of-dimension-bounds array access.
- PWR011: Outline loop to increase compiler and tooling code coverage.
- PWR012: Pass only required fields from derived data types as parameters.
- PWR013: Avoid copying unused variables to the GPU.
- PWR014: Out-of-dimension-bounds array access.
- PWR015: Avoid copying unnecessary array elements to or from the GPU.
- PWR016: Use separate arrays instead of an Array-of-Structs.
Follow Parallelware Analyzer’s Quick Start Guide and try the tool on your own code.
More info:
- JSON Compilation Database Format Specification — Clang 11 documentation
- Defects and recommendations for parallelism
Join the Early Access of Parallelware Analyzer
Register for free access to the latest versions and support until the official release.
Leave a Reply