options

mumps-parametrable-launcher - 2026-04-24 16:32:17 - 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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 8.33% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.00 % 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.

Code Quality  

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

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 93.96% of observed threads are actually active

[ 4 / 4 ] CPU activity is good

CPU cores are active 93.96% of time

[ 4 / 4 ] Loop profile is not flat

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

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

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% (43.20%)

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.11%) lower than cumulative innermost loop coverage (8.15%)

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)

Loops Overview

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 92 - libmumps_common.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
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 2117 - 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 120 - libmumps_common.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 6.25 %
Data Access Issues+12
[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 2 issues ( = indirect data accesses) costing 4 point each.8
[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] 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 2 issues ( = indirect data accesses) costing 4 point each.8

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 8.50% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.00 % 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.

Code Quality  

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

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 178.79% of observed threads are actually active

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

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 3.71%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (8.03%)

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

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% (68.44%)

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.08%) lower than cumulative innermost loop coverage (7.97%)

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)

Loops Overview

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: 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 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 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 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 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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 9.13% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.00 % 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.

Code Quality  

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

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 322.22% of observed threads are actually active

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

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 2.84%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (7.33%)

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

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% (41.45%)

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.06%) lower than cumulative innermost loop coverage (7.31%)

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)

Loops Overview

Loop IDAnalysisPenalty Score
Loop 490 - libdmumps.so+Execution Time: 2 % - 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 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 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 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 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 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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 9.65% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.00 % 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.

Code Quality  

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

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 556.64% of observed threads are actually active

[ 2 / 4 ] CPU activity is below 90% (69.63%)

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.98%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (6.92%)

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

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% (49.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.05%) lower than cumulative innermost loop coverage (6.95%)

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)

Loops Overview

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 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 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 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 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 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 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 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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 10.00% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.72 % 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.

Code Quality  

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

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 995.90% of observed threads are actually active

[ 2 / 4 ] CPU activity is below 90% (62.30%)

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.24%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (5.84%)

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

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% (61.49%)

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.03%) lower than cumulative innermost loop coverage (5.87%)

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)

Loops Overview

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 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 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 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 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 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 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 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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 9.19% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.17 % 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.

Code Quality  

[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (5.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 1623.39% of observed threads are actually active

[ 2 / 4 ] CPU activity is below 90% (50.81%)

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.13%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (5.39%)

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

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% (51.38%)

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.05%) lower than cumulative innermost loop coverage (5.45%)

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)

Loops Overview

Loop IDAnalysisPenalty Score
Loop 1802 - libdmumps.so+Execution Time: 1 % - 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: 1 % - 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 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 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 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 8.74% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.80 % 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.

Code Quality  

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

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 3086.94% of observed threads are actually active

[ 1 / 4 ] CPU activity is below 90% (48.31%)

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.14%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (4.53%)

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

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% (49.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.04%) lower than cumulative innermost loop coverage (4.58%)

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)

Loops Overview

Loop IDAnalysisPenalty Score
Loop 885 - libdmumps.so+Execution Time: 1 % - 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 1802 - libdmumps.so+Execution Time: 1 % - 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 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 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 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 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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 8.05% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.56 % 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.

Code Quality  

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

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 7007.19% of observed threads are actually active

[ 2 / 4 ] CPU activity is below 90% (54.82%)

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.14%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (3.51%)

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

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% (54.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.02%) lower than cumulative innermost loop coverage (3.51%)

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)

Loops Overview

Loop IDAnalysisPenalty Score
Loop 885 - libdmumps.so+Execution Time: 1 % - 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 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 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 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 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 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 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 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
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

Experiment Quality  

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

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

[ 3 / 3 ] Most of time spent in analyzed modules comes from functions with source/debug info

-g option gives access to debugging informations, such are source locations.

[ 0 / 3 ] Architecture specific options are unknown for some functions (compilation options info are not available)

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

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

Functions without compilation options information cumulate 7.33% of the time spent in analyzed modules. For libdmumps.so, check that both -g and -grecord-gcc-switches are present. For libmumps_common.so, check that both -g and -grecord-gcc-switches are present. Remark: if such options are 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 ] Optimization level is unknown for some functions (compilation options info are not available)

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.

[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.16 % 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.

Code Quality  

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

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 9686.30% of observed threads are actually active

[ 2 / 4 ] CPU activity is below 90% (56.51%)

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.05%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (3.10%)

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

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% (43.40%)

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.02%) lower than cumulative innermost loop coverage (3.09%)

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)

Loops Overview

Loop IDAnalysisPenalty Score
Loop 885 - libdmumps.so+Execution Time: 1 % - 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 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
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 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 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 1791 - libdmumps.soExecution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 %
Loop 1794 - libdmumps.so+Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 9.90 %
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+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+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] 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] 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 2 issues ( = data accesses) costing 2 point each.4
×