options

Expert Summary

Columns Filter

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 (%) Flops (GFLOP/s) CQA cycles CQA cycles if no scalar integer CQA cycles if FP arith vectorized CQA cycles if fully vectorized CQA cycles if FP only
IDModuleSource LocationSource FunctionLevelMax Time Over Threads (s)Time w.r.t. Wall Time (s)Coverage (% app. time)Speedup if no scalar integerSpeedup if FP arith vectorizedSpeedup if fully vectorizedSpeedup if FP onlyNumber of pathsVectorization Ratio (%)Vector Length Use (%)Flops (GFLOP/s)CQA cyclesCQA cycles if no scalar integerCQA cycles if FP arith vectorizedCQA cycles if fully vectorizedCQA cycles if FP only
Loop 254execPdV.cpp:70-83,context.h:69-69PdV_kernel(bool, int, int, int, int, double, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.1]Single10.9210.897.821.001.001.43 - 1.194.11 - 2.04158.9075.4853.7357.5057.5057.5040.16 - 48.1713.99 - 28.17
Loop 146execcontext.h:69-69,accelerate.cpp:41-53accelerate_kernel(int, int, int, int, double, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single9.919.947.141.001.001.423.00165.6379.5778.5152.5052.5052.5036.9117.50
Loop 253execPdV.cpp:49-63,context.h:69-69PdV_kernel(bool, int, int, int, int, double, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single8.408.456.071.001.001.44 - 1.003.00 - 1.71161.3475.8749.8542.00 - 48.1742.00 - 48.1742.00 - 48.1729.16 - 48.1713.99 - 28.17
Loop 167execcontext.h:69-69,advec_mom.cpp:219-221advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.21]Single6.436.494.661.001.001.29 - 1.002.15 - 2.42163.8981.2525.2815.00 - 34.0815.00 - 34.0815.00 - 34.0811.63 - 34.086.99 - 14.08
Loop 163execcontext.h:69-69,advec_mom.cpp:147-149advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.13]Single6.096.184.441.001.001.37 - 1.002.00 - 2.42161.7677.9426.5914.00 - 34.0814.00 - 34.0814.00 - 34.0810.25 - 34.086.99 - 14.08
Loop 201execflux_calc.cpp:37-40,context.h:69-69flux_calc_kernel(int, int, int, int, double, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single6.006.054.341.001.001.375.91154.3274.7335.6532.5032.5032.5023.785.50
Loop 183execcalc_dt.cpp:50-75,context.h:69-69calc_dt_kernel(int, int, int, int, double, double, double, double, double, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, double&, int&, double&, double&, int&, int&, int&) [clone .omp_outlined]Single6.056.024.331.001.001.001.00169.4082.09143.0949.83 - 118.5949.83 - 118.5949.83 - 118.5949.83 - 118.5949.83 - 118.59
Loop 209execideal_gas.cpp:38-45,context.h:69-69ideal_gas_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single5.705.774.141.001.001.01 - 1.001.07 - 1.71168.5782.8660.5615.00 - 48.1715.00 - 48.1715.00 - 48.1714.86 - 48.1713.99 - 28.17
Loop 155execadvec_cell.cpp:209-216,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.13]Single5.555.574.001.001.001.29 - 1.001.79 - 1.71162.3081.5636.8625.00 - 48.1725.00 - 48.1725.00 - 48.1719.38 - 48.1713.99 - 28.17
Loop 166execcontext.h:69-69,advec_mom.cpp:181-211advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.19]Single5.365.393.871.001.001.13 - 1.001.60 - 1.47177.6388.98198.1933.50 - 62.2533.50 - 62.2533.50 - 62.2529.75 - 62.2520.98 - 42.25
Loop 154execadvec_cell.cpp:158-202,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.11]Single5.085.073.641.001.001.15 - 1.002.48 - 1.47173.7787.86190.3352.00 - 62.2552.00 - 62.2552.00 - 62.2545.03 - 62.2520.98 - 42.25
Loop 151execadvec_cell.cpp:118-125,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.5]Single4.995.033.611.001.001.42 - 1.001.64 - 1.71159.6576.3240.7623.00 - 48.1723.00 - 48.1723.00 - 48.1716.25 - 48.1713.99 - 28.17
Loop 162execcontext.h:69-69,advec_mom.cpp:109-139advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.11]Single5.004.993.581.001.001.15 - 1.001.62 - 1.47174.0387.18214.1534.00 - 62.2534.00 - 62.2534.00 - 62.2529.50 - 62.2520.98 - 42.25
Loop 700execcontext.h:46-46,context.h:69-69,viscosity.cpp:37-64viscosity_kernel(int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single4.484.523.251.001.001.001.01 - 1.14176.8785.91299.7670.80 - 160.8570.80 - 160.8570.80 - 160.8570.80 - 160.8569.93 - 140.85
Loop 150execadvec_cell.cpp:66-110,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.3]Single4.024.062.921.001.001.19 - 1.002.48 - 1.47171.3185.40237.5952.00 - 62.2552.00 - 62.2552.00 - 62.2543.53 - 62.2520.98 - 42.25
Loop 165execcontext.h:69-69,advec_mom.cpp:168-172advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.17]Single4.083.982.861.001.001.39 - 1.277.29158.7377.3851.5625.5025.5025.5018.38 - 20.003.50
Loop 161execcontext.h:69-69,advec_mom.cpp:96-100advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.9]Single3.833.752.691.001.001.43 - 1.257.14158.0675.8154.7325.0025.0025.0017.50 - 20.003.50
Loop 156execcontext.h:69-69,advec_mom.cpp:45-48advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined]Single3.693.702.661.001.001.35 - 1.009.50 - 10.00160.0078.3322.4719.00 - 20.0019.00 - 20.0019.00 - 20.0014.13 - 20.002.00
Loop 157execcontext.h:69-69,advec_mom.cpp:54-57advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.1]Single3.573.602.581.001.001.35 - 1.009.50 - 10.00160.0078.3322.4919.00 - 20.0019.00 - 20.0019.00 - 20.0014.13 - 20.002.00
Loop 259execcontext.h:69-69,reset_field.cpp:45-48reset_field_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.1]Single3.233.262.341.001.001.38 - 1.005.50 - 10.00157.6976.920.0011.00 - 20.0011.00 - 20.0011.00 - 20.008.00 - 20.002.00
Loop 158execcontext.h:69-69,advec_mom.cpp:63-66advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.3]Single2.872.872.061.001.001.30 - 1.007.25 - 10.00161.7680.1514.0914.50 - 20.0014.50 - 20.0014.50 - 20.0011.13 - 20.002.00
Loop 159execcontext.h:69-69,advec_mom.cpp:72-75advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.5]Single2.762.792.001.001.001.38 - 1.006.75 - 10.00159.3876.5614.8713.50 - 20.0013.50 - 20.0013.50 - 20.009.75 - 20.002.00
Loop 261execcontext.h:69-69,revert.cpp:35-38revert_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single2.702.721.961.001.001.38 - 1.005.50 - 10.00157.6976.920.0011.00 - 20.0011.00 - 20.0011.00 - 20.008.00 - 20.002.00
Loop 258execcontext.h:69-69,reset_field.cpp:35-38reset_field_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single2.682.711.941.001.001.38 - 1.005.50 - 10.00157.6976.920.0011.00 - 20.0011.00 - 20.0011.00 - 20.008.00 - 20.002.00
Loop 148execadvec_cell.cpp:45-48,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined]Single1.811.821.311.001.001.32 - 1.006.67163.2780.1034.2620.0020.0020.0015.13 - 20.003.00
Loop 152execadvec_cell.cpp:137-140,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.7]Single1.771.761.271.001.001.32 - 1.006.67163.2780.1034.5120.0020.0020.0015.13 - 20.003.00
Loop 153execadvec_cell.cpp:147-150,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.9]Single1.531.511.091.001.001.30 - 1.007.25 - 10.00162.8680.7113.7014.50 - 20.0014.50 - 20.0014.50 - 20.0011.13 - 20.002.00
Loop 149execadvec_cell.cpp:55-58,context.h:69-69advec_cell_kernel(int, int, int, int, int, int, clover::Buffer1D&, clover::Buffer1D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&) [clone .omp_outlined.1]Single1.441.441.031.001.001.38 - 1.006.75 - 10.00160.6177.2714.0913.50 - 20.0013.50 - 20.0013.50 - 20.009.75 - 20.002.00
Loop 164execcontext.h:69-69,advec_mom.cpp:158-160advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.15]Single1.441.431.031.001.001.29 - 1.006.75 - 10.00168.7581.2557.4713.50 - 20.0013.50 - 20.0013.50 - 20.0010.50 - 20.002.00
Loop 160execcontext.h:69-69,advec_mom.cpp:86-88advec_mom_kernel(int, int, int, int, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer2D&, clover::Buffer1D&, clover::Buffer1D&, int, int, int) [clone .omp_outlined.7]Single1.461.431.021.001.001.29 - 1.006.75 - 10.00168.7581.2557.5213.50 - 20.0013.50 - 20.0013.50 - 20.0010.50 - 20.002.00
Loop 199execcontext.h:69-69,field_summary.cpp:76-91field_summary(global_variables&, parallel_&) [clone .omp_outlined]Single0.470.470.331.001.001.283.50163.1680.80126.5531.5031.5031.5024.669.00
Loop 205execcontext.h:69-69,generate_chunk.cpp:75-80generate_chunk(int, global_variables&) [clone .omp_outlined]Single0.070.060.041.001.001.32 - 1.006.25 - 10.00151.5272.730.0012.50 - 20.0012.50 - 20.0012.50 - 20.009.50 - 20.002.00
Loop 206execcontext.h:46-46,context.h:69-69,generate_chunk.cpp:86-98generate_chunk(int, global_variables&) [clone .omp_outlined.1]Single0.050.050.031.001.001.212.07173.0382.5817.4228.0028.0028.0023.1313.50
Loop 214execinitialise_chunk.cpp:78-82,context.h:69-69initialise_chunk(int, global_variables&) [clone .omp_outlined.7]Single0.040.030.021.001.001.31 - 1.004.75 - 10.00151.8575.000.009.50 - 20.009.50 - 20.004.63 - 20.007.25 - 20.002.00
Loop 169execcontext.h:69-69,build_field.cpp:101-113build_field(global_variables&) [clone .omp_outlined]Single0.050.020.021.001.001.52 - 1.2712.75148.5374.310.0025.5025.5025.5016.78 - 20.002.00
Loop 170execcontext.h:69-69,build_field.cpp:119-128build_field(global_variables&) [clone .omp_outlined.1]Single0.040.020.011.001.001.48 - 1.009.25 - 10.00146.6773.330.0018.50 - 20.0018.50 - 20.0018.50 - 20.0012.50 - 20.002.00
Loop 172execcontext.h:69-69,build_field.cpp:144-148build_field(global_variables&) [clone .omp_outlined.5]Single0.030.000.00NANANANANANANA0.00NANANANANA
Loop 171execcontext.h:69-69,build_field.cpp:134-138build_field(global_variables&) [clone .omp_outlined.3]Single0.020.000.00NANANANANANANA0.00NANANANANA
Loop 432execupdate_halo.cpp:496-497update_halo_kernel(int, int, int, int, std::array const&, std::array const&, field_type&, int const*, int) [clone .omp_outlined.83]Innermost0.020.000.00NANANANANANANA0.00NANANANANA
Loop 343execupdate_halo.cpp:238-239update_halo_kernel(int, int, int, int, std::array const&, std::array const&, field_type&, int const*, int) [clone .omp_outlined.35]Innermost0.020.000.00NANANANANANANA0.00NANANANANA
Loop 292execupdate_halo.cpp:109-110update_halo_kernel(int, int, int, int, std::array const&, std::array const&, field_type&, int const*, int) [clone .omp_outlined.11]Innermost0.020.000.00NANANANANANANA0.00NANANANANA
Loop 460execupdate_halo.cpp:582-583update_halo_kernel(int, int, int, int, std::array const&, std::array const&, field_type&, int const*, int) [clone .omp_outlined.99]Innermost0.020.000.00NANANANANANANA0.00NANANANANA
Loop 275execupdate_halo.cpp:66-67update_halo_kernel(int, int, int, int, std::array const&, std::array const&, field_type&, int const*, int) [clone .omp_outlined.3]Innermost0.020.000.00NANANANANANANA0.00NANANANANA
×