| 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 27 | exec | cg.cpp:108-113 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone ._omp_fn.0] | Innermost | 64.70 | 61.95 | 38.57 | 1.00 | 1.00 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 8.00 | 8.00 | 8.00 | 4.00 | 8.00 |
| ○Loop 23 | exec | cg.cpp:86-90 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone ._omp_fn.0] | Innermost | 59.26 | 58.47 | 36.41 | 1.00 | 1.00 | 2.00 | 1.33 | 1 | 0.00 | 50.00 | 7.33 | 7.33 | 7.33 | 3.67 | 5.50 |
| ○Loop 30 | exec | cg.cpp:128-131 | cg_calc_p(int, int, int, double, double*, double const*) [clone ._omp_fn.0] | Innermost | 29.04 | 26.86 | 16.72 | 1.00 | 1.00 | 2.00 | 4.00 | 1 | 0.00 | 50.00 | 8.00 | 8.00 | 8.00 | 4.00 | 2.00 |
| ○Loop 85 | exec | local_halos.cpp:10-10,local_halos.cpp:13-15 | update_left(int, int, int, int, double*, bool) [clone ._omp_fn.0] | InBetween | 0.10 | 0.05 | 0.03 | 1.55 | 1.00 | 2.76 | 18.00 | 15 | 0.00 | 49.11 | 7.50 | 4.83 | 7.50 | 2.72 | 0.42 |
| ○Loop 24 | exec | cg.cpp:105-105 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone ._omp_fn.0] | Innermost | 0.09 | 0.04 | 0.02 | 1.00 | 1.80 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 2.00 | 2.00 | 1.11 | 1.00 | 2.00 |
| ○Loop 89 | exec | local_halos.cpp:25-25,local_halos.cpp:28-30 | update_right(int, int, int, int, double*, bool) [clone ._omp_fn.0] | InBetween | 0.08 | 0.03 | 0.02 | 1.40 | 1.00 | 2.67 | 16.20 | 15 | 0.00 | 49.11 | 6.75 | 4.83 | 6.75 | 2.53 | 0.42 |
| ○Loop 20 | exec | cg.cpp:83-83 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone ._omp_fn.0] | Innermost | 0.07 | 0.03 | 0.02 | 1.00 | 1.80 | 2.00 | 1.00 | 1 | 0.00 | 50.00 | 2.00 | 2.00 | 1.11 | 1.00 | 2.00 |
| ○Loop 19 | 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_fn.3] | Innermost | 0.04 | 0.02 | 0.01 | 1.00 | 1.00 | 2.00 | 1.33 | 1 | 0.00 | 50.00 | 8.67 | 8.67 | 8.67 | 4.33 | 6.50 |
| ○Loop 203 | exec | solver_methods.cpp:69-72 | calculate_residual(int, int, int, double const*, double const*, double*, double const*, double const*) [clone ._omp_fn.0] | Innermost | 0.03 | 0.02 | 0.01 | 1.00 | 1.00 | 2.00 | 1.47 | 1 | 0.00 | 50.00 | 7.33 | 7.33 | 7.33 | 3.67 | 5.00 |
| ○Loop 13 | 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_fn.0] | Innermost | 0.04 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 25 | exec | cg.cpp:105-108 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone ._omp_fn.0] | Outermost | 0.06 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 6 | 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_fn.2] | Innermost | 0.02 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 92 | exec | local_halos.cpp:42-46 | update_top(int, int, int, int, double*, bool) [clone ._omp_fn.0] | Outermost | 0.03 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 28 | exec | cg.cpp:125-128 | cg_calc_p(int, int, int, double, double*, double const*) [clone ._omp_fn.0] | Outermost | 0.03 | 0.01 | 0.01 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 217 | exec | solver_methods.cpp:103-105 | finalise(int, int, int, double*, double const*, double*) [clone ._omp_fn.0] | Innermost | 0.02 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 10 | exec | cg.cpp:35-37 | cg_init(int, int, int, int, double, double, double*, double const*, double const*, double*, double*, double*, double*, double*, double*) [clone ._omp_fn.1] | Innermost | 0.02 | 0.01 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 192 | exec | solver_methods.cpp:53-55 | copy_u(int, int, int, double*, double const*) [clone ._omp_fn.0] | Innermost | 0.02 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 93 | exec | local_halos.cpp:46-46 | update_top(int, int, int, int, double*, bool) [clone ._omp_fn.0] | Innermost | 0.02 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 94 | exec | local_halos.cpp:58-62 | update_bottom(int, int, int, int, double*, bool) [clone ._omp_fn.0] | Outermost | 0.03 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 95 | exec | local_halos.cpp:62-62 | update_bottom(int, int, int, int, double*, bool) [clone ._omp_fn.0] | Innermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 21 | exec | cg.cpp:83-88 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone ._omp_fn.0] | Outermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 206 | exec | solver_methods.cpp:86-88 | calculate_2norm(int, int, int, double const*, double*) [clone ._omp_fn.0] | Innermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 22 | exec | cg.cpp:86-90 | cg_calc_w(int, int, int, double*, double const*, double*, double const*, double const*) [clone ._omp_fn.0] | InBetween | 0.02 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 26 | exec | cg.cpp:108-108,cg.cpp:111-113 | cg_calc_ur(int, int, int, double, double*, double*, double const*, double*, double const*) [clone ._omp_fn.0] | InBetween | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 29 | exec | cg.cpp:128-128,cg.cpp:131-131 | cg_calc_p(int, int, int, double, double*, double const*) [clone ._omp_fn.0] | InBetween | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 70 | exec | kernel_initialise.cpp:51-56 | run_set_chunk_state(Chunk*, Settings&, State*) | Innermost | 0.05 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 86 | exec | local_halos.cpp:10-13 | update_left(int, int, int, int, double*, bool) [clone ._omp_fn.0] | Outermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 220 | exec | solver_methods.cpp:28-35 | field_summary(int, int, int, double const*, double const*, double const*, double const*, double*, double*, double*, double*) | Innermost | 0.03 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 90 | exec | local_halos.cpp:25-28 | update_right(int, int, int, int, double*, bool) [clone ._omp_fn.0] | Outermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 190 | exec | solver_methods.cpp:16-16 | store_energy(int, int, double const*, double*) [clone ._omp_fn.0] | Innermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 60 | exec | kernel_initialise.cpp:35-38 | run_set_chunk_data(Chunk*, Settings&) | Innermost | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 83 | exec | kernel_initialise.cpp:44-46 | run_set_chunk_state(Chunk*, Settings&, State*) | Single | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 330 | exec | remote_halo_driver.cpp:56-59,remote_halo_driver.cpp:65-70,remote_halo_driver.cpp:76-76 | remote_halo_driver(Chunk*, Settings&, int) | Single | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 271 | exec | cg_driver.cpp:83-88 | cg_main_step_driver(Chunk*, Settings&, int, double*, double*) | Single | 0.01 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 71 | exec | kernel_initialise.cpp:50-50,kernel_initialise.cpp:83-83 | run_set_chunk_state(Chunk*, Settings&, State*) | InBetween | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 325 | exec | remote_halo_driver.cpp:137-146 | 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 205 | exec | solver_methods.cpp:86-88 | calculate_2norm(int, int, int, double const*, double*) [clone ._omp_fn.0] | InBetween | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |
| ○Loop 68 | exec | kernel_initialise.cpp:78-80 | run_set_chunk_state(Chunk*, Settings&, State*) | Innermost | 0.00 | 0.00 | 0.00 | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA | NA |