| ID | Module | Source Location | Source Function | Level | Max Time Over Threads (s) | Time w.r.t. Wall Time (s) | Coverage (% app. time) | Speedup if no scalar integer | Speedup if FP arith vectorized | Speedup if fully vectorized | Speedup if FP only | Number of paths | Vectorization Ratio (%) | Vector Length Use (%) | CQA cycles | CQA cycles if no scalar integer | CQA cycles if FP arith vectorized | CQA cycles if fully vectorized | CQA cycles if FP only |
| ○Loop 25 | exec | cg.cpp:88-90 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone .omp_outlined] | Innermost | 672.33 | 672.33 | 42.68 | 1.00 | 1.00 | 1.00 | 1.05 | 1 | 94.59 | 97.30 | 5.75 | 5.75 | 5.75 | 5.75 | 5.50 |
| ○Loop 29 | exec | cg.cpp:111-113 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone .omp_outlined] | Innermost | 586.11 | 586.11 | 37.21 | 1.00 | 1.00 | 1.14 | 1.33 | 1 | 80.00 | 90.00 | 2.67 | 2.67 | 2.67 | 2.33 | 2.00 |
| ○Loop 33 | exec | cg.cpp:131-131 | cg_calc_p(int, int, int, double, double*, double const*) [clone .omp_outlined] | Innermost | 299.78 | 299.78 | 19.03 | 1.00 | 1.00 | 1.29 | 1.50 | 1 | 71.43 | 85.71 | 1.50 | 1.50 | 1.50 | 1.17 | 1.00 |
| ○Loop 91 | exec | local_halos.cpp:13-15 | update_left(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 7.56 | 7.56 | 0.48 | 1.00 | 1.00 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 1.00 | 1.00 | 1.00 | 0.50 | 1.00 |
| ○Loop 23 | exec | cg.cpp:85-86 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone .omp_outlined] | Outermost | 2.56 | 2.56 | 0.16 | 2.79 | 1.00 | 1.62 | 2.79 | 1 | 0.98 | 48.28 | 16.75 | 6.00 | 16.75 | 10.34 | 6.00 |
| ○Loop 28 | exec | cg.cpp:107-108 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone .omp_outlined] | Outermost | 2.22 | 2.22 | 0.14 | 7.78 | 1.00 | 1.91 | 7.78 | 6 | 1.25 | 47.81 | 11.67 | 1.50 | 11.67 | 6.09 | 1.50 |
| ○Loop 96 | exec | local_halos.cpp:28-30 | update_right(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 1.41 | 1.41 | 0.09 | 1.00 | 1.00 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 1.00 | 1.00 | 1.00 | 0.50 | 1.00 |
| ○Loop 16 | exec | cg.cpp:47-50 | cg_init(int, int, int, int, double, double, double*, double const*, double const*, double*, double*, double*, double*, double*, double*) [clone .omp_outlined.5] | Innermost | 0.29 | 0.29 | 0.02 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 95 | exec | local_halos.cpp:27-28 | update_right(int, int, int, int, double*, bool) [clone .omp_outlined] | InBetween | 0.24 | 0.24 | 0.02 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 92 | exec | local_halos.cpp:12-13 | update_left(int, int, int, int, double*, bool) [clone .omp_outlined] | InBetween | 0.23 | 0.23 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 20 | exec | cg.cpp:64-68 | cg_init(int, int, int, int, double, double, double*, double const*, double const*, double*, double*, double*, double*, double*, double*) [clone .omp_outlined.7] | Innermost | 0.20 | 0.20 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 99 | exec | local_halos.cpp:46-46 | update_top(int, int, int, int, double*, bool) [clone .omp_outlined] | Single | 0.20 | 0.20 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 160 | exec | solver_methods.cpp:71-72 | calculate_residual(int, int, int, double const*, double const*, double*, double const*, double const*) [clone .omp_outlined] | Innermost | 0.19 | 0.19 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 102 | exec | local_halos.cpp:62-62 | update_bottom(int, int, int, int, double*, bool) [clone .omp_outlined] | Single | 0.16 | 0.16 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 168 | exec | solver_methods.cpp:105-105 | finalise(int, int, int, double*, double const*, double*) [clone .omp_outlined] | Innermost | 0.14 | 0.14 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 30 | exec | cg.cpp:127-128,cg.cpp:131-131 | cg_calc_p(int, int, int, double, double*, double const*) [clone .omp_outlined] | Outermost | 0.13 | 0.13 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 24 | exec | cg.cpp:85-86 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone .omp_outlined] | InBetween | 0.10 | 0.10 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 0 | exec | cg.cpp:21-25 | cg_init(int, int, int, int, double, double, double*, double const*, double const*, double*, double*, double*, double*, double*, double*) [clone .omp_outlined] | Innermost | 0.10 | 0.10 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 81 | exec | kernel_initialise.cpp:51-56,kernel_initialise.cpp:67-70 | run_set_chunk_state(Chunk*, Settings&, State*) | Innermost | 0.07 | 0.07 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 12 | exec | cg.cpp:37-37 | cg_init(int, int, int, int, double, double, double*, double const*, double const*, double*, double*, double*, double*, double*, double*) [clone .omp_outlined.3] | Innermost | 0.05 | 0.05 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 157 | exec | solver_methods.cpp:55-55 | copy_u(int, int, int, double*, double const*) [clone .omp_outlined] | Innermost | 0.05 | 0.05 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 222 | exec | cg_driver.cpp:69-74 | cg_main_step_driver(Chunk*, Settings&, int, double*, double*) | Single | 0.04 | 0.04 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 165 | exec | solver_methods.cpp:88-88 | calculate_2norm(int, int, int, double const*, double*) [clone .omp_outlined] | Innermost | 0.03 | 0.03 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 31 | exec | cg.cpp:127-131 | cg_calc_p(int, int, int, double, double*, double const*) [clone .omp_outlined] | InBetween | 0.03 | 0.03 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 169 | exec | solver_methods.cpp:30-35 | run_field_summary(Chunk*, Settings&, double*, double*, double*, double*) | Innermost | 0.03 | 0.03 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 68 | exec | kernel_initialise.cpp:35-38 | run_set_chunk_data(Chunk*, Settings&) | Innermost | 0.02 | 0.02 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 286 | exec | remote_halo_driver.cpp:56-76 | remote_halo_driver(Chunk*, Settings&, int) | Single | 0.01 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 272 | exec | remote_halo_driver.cpp:137-137,remote_halo_driver.cpp:140-146,remote_halo_driver.cpp:150-150 | remote_halo_driver(Chunk*, Settings&, int) | InBetween | 0.01 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 76 | exec | kernel_initialise.cpp:80-80 | run_set_chunk_state(Chunk*, Settings&, State*) | Innermost | 0.01 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 277 | exec | remote_halo_driver.cpp:150-156 | remote_halo_driver(Chunk*, Settings&, int) | Innermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 225 | exec | cg_driver.cpp:57-59 | cg_main_step_driver(Chunk*, Settings&, int, double*, double*) | Single | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 149 | exec | solver_methods.cpp:16-16 | store_energy(int, int, double const*, double*) [clone .omp_outlined] | Single | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 269 | exec | halo_update_driver.cpp:12-14 | halo_update_driver(Chunk*, Settings&, int) | Innermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 159 | exec | solver_methods.cpp:68-69,solver_methods.cpp:72-72 | calculate_residual(int, int, int, double const*, double const*, double*, double const*, double const*) [clone .omp_outlined] | Outermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 270 | exec | remote_halo_driver.cpp:133-133,remote_halo_driver.cpp:136-137,remote_halo_driver.cpp:161-161 | remote_halo_driver(Chunk*, Settings&, int) | InBetween | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |