options

mumps-parametrable-launcher - 2026-04-13 16:13:44 - MAQAO 2026.0.0

Help is available by moving the cursor above any symbol or by checking MAQAO website.

  • run_0
  • run_1
  • run_2
  • run_3
  • run_4
  • run_5
  • run_6
  • run_7
  • run_8

Stylizer  

[ 4 / 4 ] Application profile is long enough (195.85 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 8.13 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (9.69%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 99.90% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 99.90% of time

[ 4 / 4 ] Loop profile is not flat

At least one loop coverage is greater than 4% (4.23%), representing an hotspot for the application

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (9.16%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 0 / 4 ] Affinity stability is lower than 90% (21.67%)

Threads are often migrating to other CPU cores/threads. For OpenMP, typically set (OMP_PLACES=cores OMP_PROC_BIND=close) or (OMP_PLACES=threads OMP_PROC_BIND=spread). With OpenMPI + OpenMP, use --bind-to core --map-by node:PE=$OMP_NUM_THREADS --report-bindings. With IntelMPI + OpenMP, set I_MPI_PIN_DOMAIN=omp:compact or I_MPI_PIN_DOMAIN=omp:scatter and use -print-rank-map.

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.53%) lower than cumulative innermost loop coverage (9.16%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 4 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1939 - libdmumps.so+Execution Time: 2 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1937 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.33 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 561 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.38 %
Control Flow Issues+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Loop 613 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Loop Computation Issues+11
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1854 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.51 %
Control Flow Issues+349
[SA] Too many paths (343 paths) - Simplify control structure. There are 343 issues ( = paths) costing 1 point each with a malus of 4 points.347
[SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points.2
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+349
[SA] Too many paths (343 paths) - Simplify control structure. There are 343 issues ( = paths) costing 1 point each with a malus of 4 points.347
[SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points.2
Loop 1021 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.59 %
Control Flow Issues+22
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
[SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points.2
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+22
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
[SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points.2
Loop 1005 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.82 %
Control Flow Issues+2
[SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points.2
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
[SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points.2
Loop 2095 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 92 - libmumps_common.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %

Stylizer  

[ 4 / 4 ] Application profile is long enough (145.44 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 6.07 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (7.99%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 180.25% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 90.18% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 3.04%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (7.36%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (7.61%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 1 / 4 ] Affinity stability is lower than 90% (37.24%)

Threads are often migrating to other CPU cores/threads. For OpenMP, typically set (OMP_PLACES=cores OMP_PROC_BIND=close) or (OMP_PLACES=threads OMP_PROC_BIND=spread). With OpenMPI + OpenMP, use --bind-to core --map-by node:PE=$OMP_NUM_THREADS --report-bindings. With IntelMPI + OpenMP, set I_MPI_PIN_DOMAIN=omp:compact or I_MPI_PIN_DOMAIN=omp:scatter and use -print-rank-map.

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.38%) lower than cumulative innermost loop coverage (7.61%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 3 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1939 - libdmumps.so+Execution Time: 1 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1937 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.33 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 561 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.38 %
Control Flow Issues+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Loop 613 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Loop Computation Issues+11
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1720 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Control Flow Issues+2
[SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points.2
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
[SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points.2
Loop 2857 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.75 %
Loop Computation Issues+2
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Control Flow Issues+12
[SA] Too many paths (8 paths) - Simplify control structure. There are 8 issues ( = paths) costing 1 point each with a malus of 4 points.12
Vectorization Roadblocks+12
[SA] Too many paths (8 paths) - Simplify control structure. There are 8 issues ( = paths) costing 1 point each with a malus of 4 points.12
Loop 179 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 732 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 11.88 %
Loop Computation Issues+11
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+7
[SA] Several paths (2 paths) - Simplify control structure or force the compiler to use masked instructions. There are 2 issues ( = paths) costing 1 point each.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+4
[SA] Several paths (2 paths) - Simplify control structure or force the compiler to use masked instructions. There are 2 issues ( = paths) costing 1 point each.2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2

Stylizer  

[ 4 / 4 ] Application profile is long enough (105.96 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 4.33 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (6.45%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 335.06% of observed threads are actually active

[ 3 / 4 ] CPU activity is below 90% (83.87%)

CPU cores are idle more than 10% of time. Threads supposed to run on these cores are probably IO/sync waiting. Some hints: use faster filesystems to read/write data, improve parallel load balancing and/or scheduling.

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 1.97%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (5.87%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (6.23%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 2 / 4 ] Affinity stability is lower than 90% (65.01%)

Threads are often migrating to other CPU cores/threads. For OpenMP, typically set (OMP_PLACES=cores OMP_PROC_BIND=close) or (OMP_PLACES=threads OMP_PROC_BIND=spread). With OpenMPI + OpenMP, use --bind-to core --map-by node:PE=$OMP_NUM_THREADS --report-bindings. With IntelMPI + OpenMP, set I_MPI_PIN_DOMAIN=omp:compact or I_MPI_PIN_DOMAIN=omp:scatter and use -print-rank-map.

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.23%) lower than cumulative innermost loop coverage (6.23%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 1 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1939 - libdmumps.so+Execution Time: 1 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 1937 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.33 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 561 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.38 %
Control Flow Issues+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Loop 179 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 613 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Loop Computation Issues+11
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 2037 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 328 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.68 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+8
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+5
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2

Stylizer  

[ 4 / 4 ] Application profile is long enough (67.11 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 3.20 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (5.07%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 719.83% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 90.19% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 1.40%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (4.60%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (4.90%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 3 / 4 ] Affinity stability is lower than 90% (81.23%)

Threads are often migrating to other CPU cores/threads. For OpenMP, typically set (OMP_PLACES=cores OMP_PROC_BIND=close) or (OMP_PLACES=threads OMP_PROC_BIND=spread). With OpenMPI + OpenMP, use --bind-to core --map-by node:PE=$OMP_NUM_THREADS --report-bindings. With IntelMPI + OpenMP, set I_MPI_PIN_DOMAIN=omp:compact or I_MPI_PIN_DOMAIN=omp:scatter and use -print-rank-map.

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.17%) lower than cumulative innermost loop coverage (4.90%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 1 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1939 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 179 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1937 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.33 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 561 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.38 %
Control Flow Issues+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Loop 732 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 11.88 %
Loop Computation Issues+11
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+7
[SA] Several paths (2 paths) - Simplify control structure or force the compiler to use masked instructions. There are 2 issues ( = paths) costing 1 point each.2
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+4
[SA] Several paths (2 paths) - Simplify control structure or force the compiler to use masked instructions. There are 2 issues ( = paths) costing 1 point each.2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop 328 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.68 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+8
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+5
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2

Stylizer  

[ 4 / 4 ] Application profile is long enough (45.74 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 2.25 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (3.54%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 1536.28% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 96.19% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 0.83%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (3.11%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (3.39%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 3 / 4 ] Affinity stability is lower than 90% (86.29%)

Threads are often migrating to other CPU cores/threads. For OpenMP, typically set (OMP_PLACES=cores OMP_PROC_BIND=close) or (OMP_PLACES=threads OMP_PROC_BIND=spread). With OpenMPI + OpenMP, use --bind-to core --map-by node:PE=$OMP_NUM_THREADS --report-bindings. With IntelMPI + OpenMP, set I_MPI_PIN_DOMAIN=omp:compact or I_MPI_PIN_DOMAIN=omp:scatter and use -print-rank-map.

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.15%) lower than cumulative innermost loop coverage (3.39%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1939 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 1937 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.33 %
Control Flow Issues0
Vectorization Roadblocks+1000
[SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point.1000
Loop 561 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.38 %
Control Flow Issues+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Loop 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop 179 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 2827 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 328 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.68 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+8
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+5
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2

Stylizer  

[ 4 / 4 ] Application profile is long enough (41.72 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 1.28 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (2.50%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 3005.90% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 94.08% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 0.40%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (2.18%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (2.38%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 3 / 4 ] Affinity stability is lower than 90% (89.06%)

Threads are often migrating to other CPU cores/threads. For OpenMP, typically set (OMP_PLACES=cores OMP_PROC_BIND=close) or (OMP_PLACES=threads OMP_PROC_BIND=spread). With OpenMPI + OpenMP, use --bind-to core --map-by node:PE=$OMP_NUM_THREADS --report-bindings. With IntelMPI + OpenMP, set I_MPI_PIN_DOMAIN=omp:compact or I_MPI_PIN_DOMAIN=omp:scatter and use -print-rank-map.

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.12%) lower than cumulative innermost loop coverage (2.38%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 1939 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 179 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop 2827 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 561 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.38 %
Control Flow Issues+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+10
[SA] Too many paths (6 paths) - Simplify control structure. There are 6 issues ( = paths) costing 1 point each with a malus of 4 points.10
Loop 328 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.68 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+8
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+5
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 1728 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4

Stylizer  

[ 4 / 4 ] Application profile is long enough (38.26 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.69 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (1.80%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 6090.85% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 95.41% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 0.32%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (1.59%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (1.71%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 4 / 4 ] Affinity is good (90.11%)

Threads are not migrating to CPU cores: probably successfully pinned

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.09%) lower than cumulative innermost loop coverage (1.71%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 490 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1939 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 179 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1728 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop 2827 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1922 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+12
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 3 issues ( = indirect data accesses) costing 4 point each.12
Vectorization Roadblocks+12
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 3 issues ( = indirect data accesses) costing 4 point each.12
Loop 1726 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4

Stylizer  

[ 4 / 4 ] Application profile is long enough (38.38 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.35 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (1.52%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 12357.07% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 96.93% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 0.34%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (1.39%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (1.46%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 4 / 4 ] Affinity is good (94.26%)

Threads are not migrating to CPU cores: probably successfully pinned

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.07%) lower than cumulative innermost loop coverage (1.46%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 490 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1728 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1939 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1726 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1922 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+12
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 3 issues ( = indirect data accesses) costing 4 point each.12
Vectorization Roadblocks+12
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 3 issues ( = indirect data accesses) costing 4 point each.12
Loop 2827 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop 328 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.68 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+8
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+5
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2

Stylizer  

[ 4 / 4 ] Application profile is long enough (39.62 s)

To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.

[ 0 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information

Functions without compilation information (typically not compiled with -g) cumulate 100.00% of the time spent in analyzed modules. Check that -g is present.
Remark: if -g is indeed used, this can also be due to some compiler built-in functions (typically math) or statically linked libraries. This warning can be ignored in that case.

[ 0 / 3 ] Some functions are compiled with a low optimization level (O0 or O1)

To have better performances, it is advised to help the compiler by using a proper optimization level (-O2 of higher). Warning, depending on compilers, faster optimization levels can decrease numeric accuracy.

[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.

[ 0 / 3 ] Compilation of some functions is not optimized for the target processor

Architecture specific options are needed to produce efficient code for a specific processor ( -x(target) or -ax(target) ).

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.25 % of the execution time)

To have a representative profiling, it is advised that the category "Others" represents less than 20% of the execution time in order to analyze as much as possible of the user code

[ 1 / 1 ] Lstopo present. The Topology lstopo report will be generated.

Strategizer  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (1.54%)

If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.

[ 4 / 4 ] Threads activity is good

On average, more than 16571.55% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 96.65% of time

[ 0 / 4 ] Loop profile is flat

No hotspot found in the application (greatest loop coverage is 0.38%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (1.43%)

[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (1.48%)

If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.

[ 4 / 4 ] Affinity is good (93.97%)

Threads are not migrating to CPU cores: probably successfully pinned

[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations

It could be more efficient to inline by hand BLAS1 operations

[ 3 / 3 ] Functions mostly use all threads

Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)

[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.05%) lower than cumulative innermost loop coverage (1.48%)

Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex

[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations

BLAS2 calls usually could make a poor cache usage and could benefit from inlining.

[ 2 / 2 ] Less than 10% (0.00%) is spend in Libm/SVML (special functions)

Optimizer

Loop IDAnalysisPenalty Score
Loop 1802 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+8
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+6
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 3 issues ( = data accesses) costing 2 point each.6
Loop 885 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop Computation Issues+6
[SA] Less than 10% of the FP ADD/SUB/MUL arithmetic operations are performed using FMA - Reorganize arithmetic expressions to exhibit potential for FMA. This issue costs 4 points.4
[SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points.2
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 490 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 7.29 %
Control Flow Issues+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Data Access Issues+2
[SA] More than 20% of the loads are accessing the stack - Perform loop splitting to decrease pressure on registers. This issue costs 2 points.2
Vectorization Roadblocks+20
[SA] Too many paths (16 paths) - Simplify control structure. There are 16 issues ( = paths) costing 1 point each with a malus of 4 points.20
Loop 1728 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 10.94 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1939 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 1.56 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1726 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Data Access Issues+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Vectorization Roadblocks+4
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 2 issues ( = data accesses) costing 2 point each.4
Loop 1922 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+12
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 3 issues ( = indirect data accesses) costing 4 point each.12
Vectorization Roadblocks+12
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 3 issues ( = indirect data accesses) costing 4 point each.12
Loop 2827 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Vectorization Roadblocks+4
[SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 1 issues ( = indirect data accesses) costing 4 point each.4
Loop 328 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 8.68 %
Loop Computation Issues+5
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Control Flow Issues+8
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Peel/tail loop, considered having a low iteration count - Perform full unroll. Force compiler to use masked instructions. This issue costs 5 points.5
Data Access Issues+2
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Vectorization Roadblocks+5
[SA] Several paths (3 paths) - Simplify control structure or force the compiler to use masked instructions. There are 3 issues ( = paths) costing 1 point each.3
[SA] Presence of constant non unit stride data access - Use array restructuring, perform loop interchange or use gather instructions to lower a bit the cost. There are 1 issues ( = data accesses) costing 2 point each.2
Loop 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
×