Help is available by moving the cursor above any symbol or by checking MAQAO website.
[ 4 / 4 ] Application profile is long enough (727.42 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2.40 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information
Functions without compilation information (typically not compiled with -g and -grecord-gcc-switches) cumulate 0.20% of the time spent in analyzed modules. Check that -g and -grecord-gcc-switches are present. Remark: if -g and -grecord-gcc-switches 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.
[ 3 / 3 ] Optimization level option is correctly used
[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.
[ 2.99 / 3 ] Architecture specific option -march=znver is used
[ 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.
[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (2.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 ] CPU activity is good
CPU cores are active 97.12% of time
[ 4 / 4 ] Threads activity is good
On average, more than 97.11% of observed threads are actually active
[ 0 / 4 ] Affinity stability is lower than 90% (15.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.
[ 0 / 4 ] Loop profile is flat
No hotspot found in the application (greatest loop coverage is 0.53%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (2.05%)
[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (2.04%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.01%) lower than cumulative innermost loop coverage (2.04%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 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)
Loop ID | Analysis | Penalty Score |
---|---|---|
►Loop 252 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Vectorization Roadblocks | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Loop 303 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Vectorization Roadblocks | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Loop 289 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 112 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 115 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 295 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 177 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % |
[ 4 / 4 ] Application profile is long enough (410.15 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2.39 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information
Functions without compilation information (typically not compiled with -g and -grecord-gcc-switches) cumulate 0.25% of the time spent in analyzed modules. Check that -g and -grecord-gcc-switches are present. Remark: if -g and -grecord-gcc-switches 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.
[ 3 / 3 ] Optimization level option is correctly used
[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.
[ 2.99 / 3 ] Architecture specific option -march=znver is used
[ 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.
[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (1.36%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 4 / 4 ] CPU activity is good
CPU cores are active 94.17% of time
[ 4 / 4 ] Threads activity is good
On average, more than 188.06% of observed threads are actually active
[ 0 / 4 ] Affinity stability is lower than 90% (14.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.
[ 0 / 4 ] Loop profile is flat
No hotspot found in the application (greatest loop coverage is 0.40%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (1.36%)
[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (1.35%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.01%) lower than cumulative innermost loop coverage (1.35%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 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)
Loop ID | Analysis | Penalty Score |
---|---|---|
►Loop 303 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Vectorization Roadblocks | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Loop 252 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Vectorization Roadblocks | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Loop 289 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 295 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 112 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 115 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
○Loop 177 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % |
[ 4 / 4 ] Application profile is long enough (241.97 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2.39 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information
Functions without compilation information (typically not compiled with -g and -grecord-gcc-switches) cumulate 0.27% of the time spent in analyzed modules. Check that -g and -grecord-gcc-switches are present. Remark: if -g and -grecord-gcc-switches 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.
[ 3 / 3 ] Optimization level option is correctly used
[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.
[ 2.99 / 3 ] Architecture specific option -march=znver is used
[ 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.
[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (0.91%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 4 / 4 ] CPU activity is good
CPU cores are active 90.12% of time
[ 4 / 4 ] Threads activity is good
On average, more than 359.21% of observed threads are actually active
[ 0 / 4 ] Affinity stability is lower than 90% (22.50%)
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.
[ 0 / 4 ] Loop profile is flat
No hotspot found in the application (greatest loop coverage is 0.30%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (0.91%)
[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (0.90%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.01%) lower than cumulative innermost loop coverage (0.90%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 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)
Loop ID | Analysis | Penalty Score |
---|---|---|
►Loop 303 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Vectorization Roadblocks | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Loop 252 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Vectorization Roadblocks | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Loop 289 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 295 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 177 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Loop 112 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 115 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
[ 4 / 4 ] Application profile is long enough (158.17 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2.39 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information
Functions without compilation information (typically not compiled with -g and -grecord-gcc-switches) cumulate 0.42% of the time spent in analyzed modules. Check that -g and -grecord-gcc-switches are present. Remark: if -g and -grecord-gcc-switches 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.
[ 3 / 3 ] Optimization level option is correctly used
[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.
[ 2.99 / 3 ] Architecture specific option -march=znver is used
[ 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.
[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (0.58%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 3 / 4 ] CPU activity is below 90% (86.13%)
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.
[ 4 / 4 ] Threads activity is good
On average, more than 685.16% of observed threads are actually active
[ 1 / 4 ] Affinity stability is lower than 90% (33.08%)
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.
[ 0 / 4 ] Loop profile is flat
No hotspot found in the application (greatest loop coverage is 0.18%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (0.58%)
[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (0.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.
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.01%) lower than cumulative innermost loop coverage (0.58%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 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)
Loop ID | Analysis | Penalty Score |
---|---|---|
►Loop 252 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Vectorization Roadblocks | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Loop 303 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Vectorization Roadblocks | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Loop 289 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 177 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Loop 295 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 112 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 115 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
[ 4 / 4 ] Application profile is long enough (108.24 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2.39 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information
Functions without compilation information (typically not compiled with -g and -grecord-gcc-switches) cumulate 0.33% of the time spent in analyzed modules. Check that -g and -grecord-gcc-switches are present. Remark: if -g and -grecord-gcc-switches 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.
[ 3 / 3 ] Optimization level option is correctly used
[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.
[ 2.99 / 3 ] Architecture specific option -march=znver is used
[ 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.
[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (0.43%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 3 / 4 ] CPU activity is below 90% (77.96%)
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.
[ 4 / 4 ] Threads activity is good
On average, more than 1236.25% of observed threads are actually active
[ 1 / 4 ] Affinity stability is lower than 90% (47.19%)
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.
[ 0 / 4 ] Loop profile is flat
No hotspot found in the application (greatest loop coverage is 0.14%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (0.43%)
[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (0.43%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.01%) lower than cumulative innermost loop coverage (0.43%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 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)
Loop ID | Analysis | Penalty Score |
---|---|---|
►Loop 252 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Vectorization Roadblocks | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Loop 303 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Vectorization Roadblocks | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Loop 289 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 177 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Loop 295 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 112 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 115 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
[ 4 / 4 ] Application profile is long enough (86.43 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2.39 / 3 ] Most of time spent in analyzed modules comes from functions without compilation information
Functions without compilation information (typically not compiled with -g and -grecord-gcc-switches) cumulate 0.37% of the time spent in analyzed modules. Check that -g and -grecord-gcc-switches are present. Remark: if -g and -grecord-gcc-switches 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.
[ 3 / 3 ] Optimization level option is correctly used
[ 3 / 3 ] Host configuration allows retrieval of all necessary metrics.
[ 2.99 / 3 ] Architecture specific option -march=znver is used
[ 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.
[ 0 / 4 ] Too little time of the experiment time spent in analyzed loops (0.35%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 3 / 4 ] CPU activity is below 90% (74.68%)
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.
[ 4 / 4 ] Threads activity is good
On average, more than 1772.34% of observed threads are actually active
[ 1 / 4 ] Affinity stability is lower than 90% (42.46%)
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.
[ 0 / 4 ] Loop profile is flat
No hotspot found in the application (greatest loop coverage is 0.12%), and the twenty hottest loops cumulated coverage is lower than 20% of the application profiled time (0.35%)
[ 0 / 4 ] Too little time of the experiment time spent in analyzed innermost loops (0.35%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.01%) lower than cumulative innermost loop coverage (0.35%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 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)
Loop ID | Analysis | Penalty Score |
---|---|---|
►Loop 252 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Vectorization Roadblocks | 188 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [SA] Presence of indirect accesses - Use array restructuring or gather instructions to lower the cost. There are 31 issues ( = indirect data accesses) costing 4 point each. | 124 |
►Loop 303 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Vectorization Roadblocks | 134 | |
○ | [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 63 issues ( = data accesses) costing 2 point each. | 126 |
○ | [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 |
►Loop 289 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 | 68 | |
○ | [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 32 issues ( = data accesses) costing 2 point each. | 64 |
○ | [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 177 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Loop 295 - xhpl | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 12.50 % | |
►Data Access Issues | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 | 70 | |
○ | [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 33 issues ( = data accesses) costing 2 point each. | 66 |
○ | [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 112 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |
►Loop 115 - xhpl | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
►Loop Computation Issues | 4 | |
○ | [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 |