| 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 19 | exec | cg.cpp:108-113 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone .omp_outlined] | Innermost | 66.01 | 63.68 | 40.23 | 1.00 | 1.00 | 2.00 | 1.58 | 1 | 0.00 | 50.00 | 3.17 | 3.17 | 3.17 | 1.58 | 2.00 |
| ○Loop 16 | exec | cg.cpp:86-90 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone .omp_outlined] | Innermost | 60.01 | 58.86 | 37.18 | 1.00 | 1.05 | 1.83 | 1.33 | 1 | 4.35 | 52.17 | 3.67 | 3.67 | 3.50 | 2.00 | 2.75 |
| ○Loop 23 | exec | cg.cpp:128-131 | cg_calc_p(int, int, int, double, double*, double const*) [clone .omp_outlined] | Innermost | 26.99 | 26.11 | 16.50 | 1.00 | 1.00 | 1.00 | 1.00 | 1 | 88.89 | 100.00 | 2.00 | 2.00 | 2.00 | 2.00 | 2.00 |
| ○Loop 13 | exec | cg.cpp:62-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.05 | 0.03 | 0.02 | 1.00 | 1.04 | 1.87 | 1.56 | 1 | 3.70 | 51.85 | 4.67 | 4.67 | 4.50 | 2.50 | 3.00 |
| ○Loop 72 | exec | local_halos.cpp:13-15 | update_left(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 0.05 | 0.03 | 0.02 | 1.00 | 1.00 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 1.00 | 1.00 | 1.00 | 0.50 | 1.00 |
| ○Loop 74 | exec | local_halos.cpp:28-30 | update_right(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 0.04 | 0.02 | 0.01 | 1.00 | 1.00 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 1.00 | 1.00 | 1.00 | 0.50 | 1.00 |
| ○Loop 2 | 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.03 | 0.02 | 0.01 | 1.00 | 1.00 | 1.00 | 1.67 | 1 | 92.31 | 96.15 | 3.33 | 3.33 | 3.33 | 3.33 | 2.00 |
| ○Loop 129 | 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.03 | 0.02 | 0.01 | 1.00 | 1.00 | 1.00 | 1.39 | 1 | 100.00 | 100.00 | 3.83 | 3.83 | 3.83 | 3.83 | 2.75 |
| ○Loop 79 | exec | local_halos.cpp:46-46 | update_top(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 0.03 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 83 | exec | local_halos.cpp:62-62 | update_bottom(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 0.03 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 22 | exec | cg.cpp:127-128 | cg_calc_p(int, int, int, double, double*, double const*) [clone .omp_outlined] | Outermost | 0.04 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 8 | 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.02 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 11 | 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.02 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 126 | exec | solver_methods.cpp:55-55 | copy_u(int, int, int, double*, double const*) [clone .omp_outlined] | Innermost | 0.02 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 135 | exec | solver_methods.cpp:105-105 | finalise(int, int, int, double*, double const*, double*) [clone .omp_outlined] | Innermost | 0.02 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 131 | exec | solver_methods.cpp:86-88 | calculate_2norm(int, int, int, double const*, double*) [clone .omp_outlined] | Innermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 17 | exec | cg.cpp:85-85 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone .omp_outlined] | Outermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 75 | exec | local_halos.cpp:25-27 | update_right(int, int, int, int, double*, bool) [clone .omp_outlined] | Outermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 73 | exec | local_halos.cpp:12-12 | update_left(int, int, int, int, double*, bool) [clone .omp_outlined] | Outermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 65 | exec | kernel_initialise.cpp:51-56,kernel_initialise.cpp:67-70 | run_set_chunk_state(Chunk*, Settings&, State*) | Innermost | 0.07 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 120 | 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 20 | exec | cg.cpp:107-107 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, 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 136 | exec | solver_methods.cpp:30-35 | run_field_summary(Chunk*, Settings&, double*, double*, double*, double*) | Innermost | 0.04 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 78 | exec | local_halos.cpp:42-44 | update_top(int, int, int, int, double*, bool) [clone .omp_outlined] | Outermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 82 | exec | local_halos.cpp:58-60 | update_bottom(int, int, int, int, double*, bool) [clone .omp_outlined] | Outermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 52 | exec | kernel_initialise.cpp:35-38 | run_set_chunk_data(Chunk*, Settings&) | Innermost | 0.02 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 62 | exec | kernel_initialise.cpp:80-80 | run_set_chunk_state(Chunk*, Settings&, State*) | Innermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 226 | exec | remote_halo_driver.cpp:133-133,remote_halo_driver.cpp:136-137,remote_halo_driver.cpp:150-150,remote_halo_driver.cpp:161-161 | remote_halo_driver(Chunk*, Settings&, int) | Outermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 81 | exec | local_halos.cpp:60-62 | update_bottom(int, int, int, int, double*, bool) [clone .omp_outlined] | Innermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 71 | exec | kernel_initialise.cpp:44-44 | run_set_chunk_state(Chunk*, Settings&, State*) | Single | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 128 | 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 |