Actionable insights tagged with ‘pwr’ in Parallelware Analyzer:
PWR001: Declare global variables as function parameters
PWR002: Declare scalar variables in the smallest possible scope
PWR003: Explicitly declare pure functions
PWR004: Declare OpenMP scoping for all variables
PWR005: Disable default OpenMP scoping
PWR006: Avoid privatization of read-only variables
PWR007: Disable implicit declaration of variables
PWR008: Declare the intent for each procedure parameter
PWR009: Use OpenMP teams to offload work to GPU
PWR010: Avoid column-major array access in C/C++
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
PWR017: Transform while into for loop in order to allow vectorization
PWR018: Call to recursive function within a loop may inhibit vectorization
PWR019: Consider interchanging loops to favor vectorization by maximizing inner loop’s trip count
PWR020: Consider loop fission to enable vectorization
PWR021: Temporary computation can be extracted to a vectorizable loop
PWR022: Move invariant conditional out of the loop to facilitate vectorization
PWR024: Loop can be rewritten in OpenMP canonical form
PWR025: Consider annotating pure function with OpenMP ‘declare simd’