8 #ifndef SRC_VECTOR_PERFORMANCE_CL_PART_PERFORMANCE_GRAPH_HPP_
9 #define SRC_VECTOR_PERFORMANCE_CL_PART_PERFORMANCE_GRAPH_HPP_
11 #include "vector_dist_performance_util.hpp"
13 template<
unsigned int dim>
void cl_part_time(
GoogleChart & cg,
22 std::string file_mean(test_dir);
23 std::string file_var(test_dir);
24 file_mean += std::string(
"/openfpm_pdata/cl_part_norm_hilbert_mean_" + std::to_string(dim) + std::string(
"_ref"));
25 file_var += std::string(
"/openfpm_pdata/cl_part_norm_hilbert_dev_" + std::to_string(dim) + std::string(
"_ref"));
27 std::string file_mean_save = std::string(
"cl_part_norm_hilbert_mean_" + std::to_string(dim) + std::to_string(
"_ref"));
28 std::string file_var_save = std::string(
"cl_part_norm_hilbert_dev_" + std::to_string(dim) + std::to_string(
"_ref"));
38 yp_mean.resize(cl_time_rand_mean.size());
39 yp_dev.resize(cl_time_rand_dev.size());
40 for (
size_t i = 0 ; i < yp_mean.
size() ; i++)
42 yp_mean.get(i).resize(cl_time_rand_mean.get(i).size());
43 yp_dev.get(i).resize(cl_time_rand_dev.get(i).size());
45 for (
size_t j = 0 ; j < yp_mean.get(i).
size() ; j++)
47 yp_mean.get(i).get(j).resize(1+cl_time_hilb_mean.get(i).get(j).size());
48 yp_dev.get(i).get(j).resize(1+cl_time_hilb_dev.get(i).get(j).size());
50 for (
size_t k = 0 ; k < cl_time_hilb_mean.get(i).get(j).size() ; k++)
52 yp_mean.get(i).get(j).get(k) = cl_time_hilb_mean.get(i).get(j).get(k);
53 yp_dev.get(i).get(j).get(k) = cl_time_hilb_dev.get(i).get(j).get(k);
55 yp_mean.get(i).get(j).get(cl_time_hilb_mean.get(i).get(j).size()) = cl_time_rand_mean.get(i).get(j);
56 yp_dev.get(i).get(j).get(cl_time_hilb_mean.get(i).get(j).size()) = cl_time_rand_dev.get(i).get(j);
60 for (
size_t i = 0 ; i < cl_orders.
size() ; i++)
61 {names.add(std::string(
"Order of: " + std::to_string(cl_orders.get(i))));}
62 names.add(
"No-order");
64 for (
size_t i = 0 ; i < cl_r_cutoff.
size() ; i++)
65 gnames.add(
"Cell-list performance, cut-off radius: " + std::to_string(cl_r_cutoff.get(i)));
67 std::string y_string = std::string(
"Time to calculate forces (s)");
68 std::string x_string = std::string(
"Number of particles");
70 std::string str(
"<h1>Cell-list " + std::to_string(dim) +
"-D performance tests: </h1>");
71 str +=
"<h2> 1) Time to calculate forces in the case of particles randomly ordered in a vector of particles, and in the case of particles ordered along an hilbert curve of order N</h2>";
75 StandardPerformanceGraph(file_mean,
90 template<
unsigned int dim>
void cl_part_reorder_time(
GoogleChart & cg,
98 std::string file_mean(test_dir);
99 std::string file_var(test_dir);
100 file_mean += std::string(
"/openfpm_pdata/cl_part_reorder_hilbert_mean_" + std::to_string(dim) + std::string(
"_ref"));
101 file_var += std::string(
"/openfpm_pdata/cl_part_reorder_hilbert_dev_" + std::to_string(dim) + std::string(
"_ref"));
105 y_ref_mean.load(file_mean);
106 y_ref_dev.load(file_var);
117 for (
size_t i = 0; i < cl_n_particles.
size() ; i++)
118 x.add(cl_n_particles.get(i));
120 for (
size_t i = 0; i < cl_orders.
size(); i++)
121 yn.add(
"Order of: " + std::to_string(cl_orders.get(i)));
124 y.resize(cl_time_reorder_mean.size());
125 y_dev.resize(cl_time_reorder_dev.size());
126 for (
size_t r = 0; r < cl_time_reorder_mean.size(); r++)
128 y.get(r).resize(cl_time_reorder_mean.get(r).size());
129 y_dev.get(r).resize(cl_time_reorder_mean.get(r).size());
130 for (
size_t k = 0; k < cl_time_reorder_mean.get(r).size(); k++)
133 for (
size_t m = 0; m < cl_time_reorder_mean.get(r).get(k).size(); m++)
136 y.get(r).get(k).add(cl_time_reorder_mean.get(r).get(k).get(m));
137 y_dev.get(r).get(k).add(cl_time_reorder_dev.get(r).get(k).get(m));
143 y.save(
"cl_part_reorder_hilbert_mean_" + std::to_string(dim) + std::to_string(
"_ref"));
144 y_dev.save(
"cl_part_reorder_hilbert_dev_" + std::to_string(dim) + std::to_string(
"_ref"));
146 if (y_ref_mean.
size() != 0)
151 size_t i = cl_orders.
size()-1;
152 yn.add(
"Order of: " + std::to_string(cl_orders.get(i)));
157 y.resize(cl_time_reorder_mean.size());
158 for (
size_t r = 0; r < cl_time_reorder_mean.size(); r++)
160 int warning_level = -1;
162 y.get(r).resize(cl_time_reorder_mean.get(r).size());
163 for (
size_t k = 0; k < cl_time_reorder_mean.get(r).size(); k++)
166 size_t m = cl_orders.
size()-1;
169 y.get(r).get(k).add(cl_time_reorder_mean.get(r).get(k).get(m));
170 y.get(r).get(k).add(y_ref_mean.get(r).get(k).get(m) - 3.0*y_ref_dev.get(r).get(k).get(m) );
171 y.get(r).get(k).add(y_ref_mean.get(r).get(k).get(m) + 3.0*y_ref_dev.get(r).get(k).get(m) );
173 warning_set(warning_level,cl_time_reorder_mean.get(r).get(k).get(m),y_ref_mean.get(r).get(k).get(m),y_ref_dev.get(r).get(k).get(m));
176 warning_vlevel.add(warning_level);
185 options.
yAxis = std::string(
"Time (s)");
186 options.
xAxis = std::string(
"Number of particles");
188 options.
more = GC_ZOOM;
192 std::string str(
"<h1>Cell-list " + std::to_string(dim) +
"-D performance tests: </h1>");
193 str +=
"<h2> 1) Time to reorder the distributed vector</h2>";
197 for (
size_t i = 0; i < cl_r_cutoff.
size(); i++)
199 std::string chart_area;
200 if (warning_vlevel.
size() != 0)
201 addchartarea(chart_area,warning_vlevel.get(i));
202 options.
more = GC_Y_LOG +
"," + GC_ZOOM + chart_area;
204 options.
title = std::string(
"Cell-list performance, cut-off radius: " + std::to_string(cl_r_cutoff.get(i)));
void addHTML(const std::string &html)
Add HTML text.
void AddLinesGraph(openfpm::vector< X > &x, openfpm::vector< Y > &y, const GCoptions &opt)
Add a simple lines graph.
std::string title
Title of the chart.
std::string yAxis
Y axis name.
Small class to produce graph with Google chart in HTML.
size_t lineWidth
Width of the line.
std::string xAxis
X axis name.