Help is available by moving the cursor above any
symbol or by checking MAQAO website.
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (437.10 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (99.47%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 4 / 4 ] Threads activity is good
On average, more than 99.77% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 99.77% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (97.02%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (98.28%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (99.99%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.00%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.19%) lower than cumulative innermost loop coverage (98.28%)
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.15%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 97 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (219.10 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (99.34%)
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 199.00% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 99.70% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (96.71%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (98.11%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (99.92%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.21%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.23%) lower than cumulative innermost loop coverage (98.11%)
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.14%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 96 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (110.34 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (99.04%)
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 395.70% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 99.53% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (96.56%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (97.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.
[ 4 / 4 ] Affinity is good (99.77%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.38%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.13%) lower than cumulative innermost loop coverage (97.90%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations
BLAS2 calls usually could make a poor cache usage and could benefit from inlining.
[ 2 / 2 ] Less than 10% (0.16%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 96 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (56.07 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (98.45%)
If the time spent in analyzed loops is less than 30%, standard loop optimizations will have a limited impact on application performances.
[ 4 / 4 ] Threads activity is good
On average, more than 782.77% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 99.20% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (95.76%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (97.20%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (99.50%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (0.86%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.25%) lower than cumulative innermost loop coverage (97.20%)
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.16%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 95 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (29.11 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (96.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 ] Threads activity is good
On average, more than 1527.18% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 98.19% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (94.34%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (95.75%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (98.96%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (2.21%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.17%) lower than cumulative innermost loop coverage (95.75%)
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.22%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 94 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (22.54 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (95.06%)
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 2249.64% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 97.29% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (87.83%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (93.99%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (98.63%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (3.61%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.07%) lower than cumulative innermost loop coverage (93.99%)
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.20%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 87 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1942 - libggml-cpu.so | Execution Time: 4 % - Vectorization Ratio: 55.38 % - Vector Length Use: 70.96 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Data Access Issues | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Vectorization Roadblocks | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (17.97 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (94.94%)
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 2942.76% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 96.34% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (92.51%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (93.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.
[ 4 / 4 ] Affinity is good (98.27%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (4.59%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.04%) lower than cumulative innermost loop coverage (93.90%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations
BLAS2 calls usually could make a poor cache usage and could benefit from inlining.
[ 2 / 2 ] Less than 10% (0.19%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 92 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 63 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 44.79 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (15.77 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (91.44%)
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 3615.33% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 95.25% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (89.10%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (90.42%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (98.03%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (5.73%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.02%) lower than cumulative innermost loop coverage (90.42%)
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.17%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 89 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 1915 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 64.09 % - Vector Length Use: 84.98 % | |
| ►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 |
| ►Control Flow Issues | 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (14.00 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (89.60%)
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 4261.65% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 94.21% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (87.27%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (88.59%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (97.75%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (6.64%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (1.01%) lower than cumulative innermost loop coverage (88.59%)
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.21%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 87 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (12.87 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (87.82%)
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 4854.18% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 92.38% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (81.39%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (86.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.
[ 4 / 4 ] Affinity is good (97.47%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (6.99%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.92%) lower than cumulative innermost loop coverage (86.90%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations
BLAS2 calls usually could make a poor cache usage and could benefit from inlining.
[ 2 / 2 ] Less than 10% (0.18%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 81 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1942 - libggml-cpu.so | Execution Time: 4 % - Vectorization Ratio: 55.38 % - Vector Length Use: 70.96 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Data Access Issues | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Vectorization Roadblocks | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 55 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 47.98 % | |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (11.21 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (89.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 5459.43% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 91.67% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (86.74%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (88.16%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (97.19%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (6.88%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.95%) lower than cumulative innermost loop coverage (88.16%)
Having cumulative Outermost/In between loops coverage greater than cumulative innermost loop coverage will make loop optimization more complex
[ 2 / 2 ] Less than 10% (0.00%) is spend in BLAS2 operations
BLAS2 calls usually could make a poor cache usage and could benefit from inlining.
[ 2 / 2 ] Less than 10% (0.21%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 86 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 1915 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 64.09 % - Vector Length Use: 84.98 % | |
| ►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 |
| ►Control Flow Issues | 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1937 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 23.33 % - Vector Length Use: 49.26 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 2 | |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1002 | |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ○ | [SA] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (12.26 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 2 / 2 ] Application is correctly profiled ("Others" category represents 0.01 % 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (87.20%)
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 6169.35% of observed threads are actually active
[ 4 / 4 ] CPU activity is good
CPU cores are active 91.45% of time
[ 4 / 4 ] Loop profile is not flat
At least one loop coverage is greater than 4% (45.09%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (86.33%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (97.45%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (8.53%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.87%) lower than cumulative innermost loop coverage (86.33%)
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.20%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1942 - libggml-cpu.so | Execution Time: 45 % - Vectorization Ratio: 55.38 % - Vector Length Use: 70.96 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Data Access Issues | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Vectorization Roadblocks | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Loop 1940 - libggml-cpu.so | Execution Time: 40 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1915 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 64.09 % - Vector Length Use: 84.98 % | |
| ►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 |
| ►Control Flow Issues | 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (10.12 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (83.62%)
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 6555.48% of observed threads are actually active
[ 3 / 4 ] CPU activity is below 90% (88.64%)
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 ] Loop profile is not flat
At least one loop coverage is greater than 4% (77.27%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (82.70%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (96.93%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 3 / 3 ] Functions mostly use all threads
Functions running on a reduced number of threads (typically sequential code) cover less than 10% of application walltime (9.46%)
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.92%) lower than cumulative innermost loop coverage (82.70%)
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.23%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 77 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1942 - libggml-cpu.so | Execution Time: 4 % - Vectorization Ratio: 55.38 % - Vector Length Use: 70.96 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Data Access Issues | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Vectorization Roadblocks | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 805 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 25.52 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (10.68 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (84.48%)
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 7223.42% of observed threads are actually active
[ 3 / 4 ] CPU activity is below 90% (88.34%)
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 ] Loop profile is not flat
At least one loop coverage is greater than 4% (41.58%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (83.55%)
If the time spent in analyzed innermost loops is less than 15%, standard innermost loop optimizations such as vectorisation will have a limited impact on application performances.
[ 4 / 4 ] Affinity is good (97.06%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 0 / 3 ] Too many functions do not use all threads
Functions running on a reduced number of threads (typically sequential code) cover at least 10% of application walltime (10.07%). Check both "Max Inclusive Time Over Threads" and "Nb Threads" in Functions or Loops tabs and consider parallelizing sequential regions or improving parallelization of regions running on a reduced number of threads
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.92%) lower than cumulative innermost loop coverage (83.55%)
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.20%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1940 - libggml-cpu.so | Execution Time: 41 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 1942 - libggml-cpu.so | Execution Time: 40 % - Vectorization Ratio: 55.38 % - Vector Length Use: 70.96 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Data Access Issues | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Vectorization Roadblocks | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1915 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 64.09 % - Vector Length Use: 84.98 % | |
| ►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 |
| ►Control Flow Issues | 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 790 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 90.00 % - Vector Length Use: 98.67 % | |
| ►Loop Computation Issues | 8 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 805 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 25.52 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
[ 0 / 9 ] Compilation options are not available
Compilation options are an important optimization leverage but ONE-View is not able to analyze them.
[ 4 / 4 ] Application profile is long enough (10.29 s)
To have good quality measurements, it is advised that the application profiling time is greater than 10 seconds.
[ 2 / 3 ] Security settings from the host restrict profiling. Some metrics will be missing or incomplete.
Current value for kernel.perf_event_paranoid is 2. If possible, set it to 1 or check with your system administrator which flag can be used to achieve this.
[ 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.
[ 4 / 4 ] Enough time of the experiment time spent in analyzed loops (81.82%)
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 7756.87% of observed threads are actually active
[ 3 / 4 ] CPU activity is below 90% (87.08%)
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 ] Loop profile is not flat
At least one loop coverage is greater than 4% (42.31%), representing an hotspot for the application
[ 4 / 4 ] Enough time of the experiment time spent in analyzed innermost loops (80.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.
[ 4 / 4 ] Affinity is good (97.03%)
Threads are not migrating to CPU cores: probably successfully pinned
[ 3 / 3 ] Less than 10% (0.00%) is spend in BLAS1 operations
It could be more efficient to inline by hand BLAS1 operations
[ 0 / 3 ] Too many functions do not use all threads
Functions running on a reduced number of threads (typically sequential code) cover at least 10% of application walltime (10.29%). Check both "Max Inclusive Time Over Threads" and "Nb Threads" in Functions or Loops tabs and consider parallelizing sequential regions or improving parallelization of regions running on a reduced number of threads
[ 3 / 3 ] Cumulative Outermost/In between loops coverage (0.85%) lower than cumulative innermost loop coverage (80.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.23%) is spend in Libm/SVML (special functions)
| Loop ID | Analysis | Penalty Score |
|---|---|---|
| ►Loop 1942 - libggml-cpu.so | Execution Time: 42 % - Vectorization Ratio: 55.38 % - Vector Length Use: 70.96 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Data Access Issues | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Vectorization Roadblocks | 24 | |
| ○ | [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 12 issues ( = data accesses) costing 2 point each. | 24 |
| ►Loop 1940 - libggml-cpu.so | Execution Time: 37 % - Vectorization Ratio: 16.22 % - Vector Length Use: 51.35 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Vectorization Roadblocks | 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 6 issues ( = data accesses) costing 2 point each. | 12 |
| ►Loop 61 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 48.03 % | |
| ►Control Flow Issues | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 52 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (45 paths) - Simplify control structure. There are 45 issues ( = paths) costing 1 point each with a malus of 4 points. | 49 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1499 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 47.48 % - Vector Length Use: 62.10 % | |
| ►Loop Computation Issues | 2 | |
| ○ | [SA] Presence of a large number of scalar integer instructions - Simplify loop structure, perform loop splitting or perform unroll and jam. This issue costs 2 points. | 2 |
| ►Control Flow Issues | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Vectorization Roadblocks | 1003 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (18273 paths) - Simplify control structure. There are 18273 issues ( = paths) costing 1 point, limited to 1000. | 1000 |
| ○ | [SA] Non innermost loop (InBetween) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 829 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 28.37 % | |
| ►Loop Computation Issues | 12 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 2 issues (= instructions) costing 4 points each. | 8 |
| ○ | [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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►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 2 issues ( = data accesses) costing 2 point each. | 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 | 9 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [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] 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 788 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 805 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 0.00 % - Vector Length Use: 25.52 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ►Control Flow Issues | 1 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ►Vectorization Roadblocks | 1001 | |
| ○ | [SA] Presence of calls - Inline either by compiler or by hand and use SVML for libm calls. There are 1 issues (= calls) costing 1 point each. | 1 |
| ○ | [SA] Too many paths (at least 1000 paths) - Simplify control structure. There are at least 1000 issues ( = paths) costing 1 point. | 1000 |
| ►Loop 1501 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 100.00 % - Vector Length Use: 100.00 % | |
| ►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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Vectorization Roadblocks | 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 4 issues ( = data accesses) costing 2 point each. | 8 |
| ►Loop 1915 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 64.09 % - Vector Length Use: 84.98 % | |
| ►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 |
| ►Control Flow Issues | 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. 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] Non innermost loop (Outermost) - Collapse loop with innermost ones. This issue costs 2 points. | 2 |
| ►Loop 1916 - libggml-cpu.so | Execution Time: 0 % - Vectorization Ratio: 15.24 % - Vector Length Use: 29.29 % | |
| ►Loop Computation Issues | 6 | |
| ○ | [SA] Presence of expensive FP instructions - Perform hoisting, change algorithm, use SVML or proper numerical library or perform value profiling (count the number of distinct input values). There are 1 issues (= instructions) costing 4 points each. | 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 |
| ○Control Flow Issues | 0 | |
| ►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 |