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.