8 #ifndef SRC_VECTOR_VECTOR_DIST_PERFORMANCE_UTIL_HPP_
9 #define SRC_VECTOR_VECTOR_DIST_PERFORMANCE_UTIL_HPP_
11 #include "Plot/GoogleChart.hpp"
12 #include "vector_dist_performance_common.hpp"
15 #define N_VERLET_TEST 3
16 #define N_STAT_TEST 30
18 static inline void warning_set(
int & warning_level,
double mean,
double mean_ref,
double sigma)
20 int warning_level_candidate;
22 if (mean - mean_ref < -2.0*sigma )
23 warning_level_candidate = -1;
24 else if (mean - mean_ref < 2.0*sigma)
25 warning_level_candidate = 0;
26 else if (mean - mean_ref < 3.0*sigma)
27 warning_level_candidate = 1;
29 warning_level_candidate = 2;
31 if (warning_level_candidate > warning_level)
32 warning_level = warning_level_candidate;
35 static inline void addchartarea(std::string & chart_area,
int lvl)
41 chart_area = std::string(
",chartArea: {\
54 chart_area = std::string(
",chartArea: {\
63 chart_area = std::string(
",chartArea: {\
85 for (
size_t i = 0 ; i < measures.
size() ; i++)
86 mean += measures.get(i);
87 mean /= measures.
size();
90 for (
size_t i = 0 ; i < measures.
size() ; i++)
91 dev += (measures.get(i) - mean)*(measures.get(i) - mean);
93 dev = sqrt(dev / (measures.
size() - 1));
106 template<
unsigned int dim,
size_t prp = 0,
typename T,
typename V>
double benchmark_calc_forces(T & NN, V & vd,
float r_cut)
112 calc_forces<dim,prp>(NN,vd,r_cut);
126 template<
typename V>
double benchmark_reorder(V & vd,
size_t m)
148 template<
typename T,
typename V>
double benchmark_get_celllist(T & NN, V & vd,
float r_cut)
155 NN = vd.getCellList(r_cut);
169 template<
typename V>
double benchmark_get_verlet(V & vd,
float r_cut)
177 auto vr = vd.getVerlet(r_cut);
194 template<
unsigned int dim,
size_t prp = 0,
typename T,
typename V>
double benchmark_calc_forces_hilb(T & NN, V & vd,
float r_cut)
200 calc_forces_hilb<dim,prp>(NN,vd,r_cut);
215 template<
typename T,
typename V>
double benchmark_get_celllist_hilb(T & NN, V & vd,
float r_cut)
222 NN = vd.getCellList_hilb(r_cut);
235 template<
unsigned int dim,
typename v_dist>
void move_particles(v_dist & vd,
double dist)
239 const double pi = 3.14159;
241 auto it = vd.getDomainIterator();
245 phi = rand()/double(RAND_MAX);
246 theta = rand()/double(RAND_MAX);
253 vd.getPos(
key)[0] += dist*sin(theta)*cos(phi);
256 vd.getPos(
key)[0] += dist*sin(theta)*cos(phi);
257 vd.getPos(
key)[1] += dist*sin(theta)*sin(phi);
261 vd.getPos(
key)[0] += dist*sin(theta)*cos(phi);
262 vd.getPos(
key)[1] += dist*sin(theta)*sin(phi);
263 vd.getPos(
key)[2] += dist*cos(phi);
278 extern void StandardPerformanceGraph(std::string file_mean,
279 std::string file_var,
280 std::string file_mean_save,
281 std::string file_var_save,
288 std::string x_string,
289 std::string y_string,
double getwct()
Return the elapsed real time.
Small class to produce graph with Google chart in HTML.
void start()
Start the timer.
This class is a trick to indicate the compiler a specific specialization pattern. ...
Implementation of 1-D std::vector like structure.
Class for cpu time benchmarking.
void stop()
Stop the timer.