fix tbb new API, and add total refinement time

This commit is contained in:
Jane Tournois 2023-12-01 10:01:54 +01:00
parent 33b9d44797
commit 0aa0242979
2 changed files with 30 additions and 12 deletions

View File

@ -33,7 +33,7 @@ const char * const BENCHMARK_SCRIPT_FILENAME = "concurrency_script.txt";
// BENCHMARK GENERAL PARAMETERS // BENCHMARK GENERAL PARAMETERS
// ========================================================================== // ==========================================================================
//#define BENCHMARK_WITH_1_TO_MAX_THREADS #define BENCHMARK_WITH_1_TO_MAX_THREADS
//#define CGAL_MESH_3_POLYHEDRON_WITH_FEATURES //#define CGAL_MESH_3_POLYHEDRON_WITH_FEATURES
//#define CGAL_MESH_3_IMPLICIT_WITH_FEATURES //#define CGAL_MESH_3_IMPLICIT_WITH_FEATURES
//#define CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA //#define CGAL_MESH_3_BENCHMARK_EXPORT_TO_MAYA
@ -84,7 +84,7 @@ const int TET_SHAPE = 3;
// Verbose // Verbose
// ========================================================================== // ==========================================================================
# define CGAL_CONCURRENT_MESH_3_VERBOSE //# define CGAL_CONCURRENT_MESH_3_VERBOSE
//# define CGAL_CONCURRENT_MESH_3_VERY_VERBOSE //# define CGAL_CONCURRENT_MESH_3_VERY_VERBOSE
// ========================================================================== // ==========================================================================
@ -195,6 +195,7 @@ protected:
subelements.push_back("Cells_scan_time"); subelements.push_back("Cells_scan_time");
subelements.push_back("Cells_refin_time"); subelements.push_back("Cells_refin_time");
subelements.push_back("Lloyd_optim_time"); subelements.push_back("Lloyd_optim_time");
subelements.push_back("Refinement_time_total");
subelements.push_back("Odt_optim_time"); subelements.push_back("Odt_optim_time");
subelements.push_back("Perturber_optim_time"); subelements.push_back("Perturber_optim_time");
subelements.push_back("Exuder_optim_time"); subelements.push_back("Exuder_optim_time");
@ -452,7 +453,8 @@ bool make_mesh_polyhedron(const std::string &input_filename,
double facet_sizing, double facet_sizing,
double cell_sizing) double cell_sizing)
{ {
std::cout << "make_mesh_polyhedron" << std::endl; std::cout << "make_mesh_polyhedron("
<< input_filename << ")" << std::endl;
// Domain // Domain
typedef Kernel K; typedef Kernel K;
@ -531,6 +533,9 @@ bool make_mesh_polyhedron(const std::string &input_filename,
double sliverbound = 2; double sliverbound = 2;
#endif #endif
CGAL::Real_timer t;
t.start();
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>( domain C3t3 c3t3 = CGAL::make_mesh_3<C3t3>( domain
, criteria , criteria
# ifdef CGAL_MESH_3_BENCHMARK_LLOYD # ifdef CGAL_MESH_3_BENCHMARK_LLOYD
@ -552,7 +557,9 @@ bool make_mesh_polyhedron(const std::string &input_filename,
, no_exude() , no_exude()
#endif #endif
); );
t.stop();
CGAL_MESH_3_SET_PERFORMANCE_DATA("Refinement_time_total", t.time());
CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices());
CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex());
CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex()); CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex());
@ -637,6 +644,9 @@ bool make_mesh_3D_images(const std::string &input_filename,
double sliverbound = 2; double sliverbound = 2;
#endif #endif
CGAL::Real_timer t;
t.start();
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>( domain C3t3 c3t3 = CGAL::make_mesh_3<C3t3>( domain
, criteria , criteria
# ifdef CGAL_MESH_3_BENCHMARK_LLOYD # ifdef CGAL_MESH_3_BENCHMARK_LLOYD
@ -659,6 +669,8 @@ bool make_mesh_3D_images(const std::string &input_filename,
#endif #endif
); );
t.stop();
CGAL_MESH_3_SET_PERFORMANCE_DATA("Refinement_time_total", t.time());
CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices());
CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex());
CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex()); CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex());
@ -778,6 +790,9 @@ bool make_mesh_implicit(double facet_approx,
double sliverbound = 2; double sliverbound = 2;
#endif #endif
CGAL::Real_timer t;
t.start();
C3t3 c3t3 = CGAL::make_mesh_3<C3t3>( domain C3t3 c3t3 = CGAL::make_mesh_3<C3t3>( domain
, criteria , criteria
# ifdef CGAL_MESH_3_BENCHMARK_LLOYD # ifdef CGAL_MESH_3_BENCHMARK_LLOYD
@ -800,6 +815,8 @@ bool make_mesh_implicit(double facet_approx,
#endif #endif
); );
t.stop();
CGAL_MESH_3_SET_PERFORMANCE_DATA("Refinement_time_total", t.time());
CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices()); CGAL_MESH_3_SET_PERFORMANCE_DATA("V", c3t3.triangulation().number_of_vertices());
CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex()); CGAL_MESH_3_SET_PERFORMANCE_DATA("F", c3t3.number_of_facets_in_complex());
CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex()); CGAL_MESH_3_SET_PERFORMANCE_DATA("T", c3t3.number_of_cells_in_complex());
@ -881,8 +898,9 @@ int main()
int i = 1; int i = 1;
#ifdef CGAL_CONCURRENT_MESH_3 #ifdef CGAL_CONCURRENT_MESH_3
# ifdef BENCHMARK_WITH_1_TO_MAX_THREADS # ifdef BENCHMARK_WITH_1_TO_MAX_THREADS
int max_nb_threads = tbb::this_task_arena::max_concurrency();
for(num_threads = 1 ; for(num_threads = 1 ;
num_threads <= tbb::task_scheduler_init::default_num_threads() ; num_threads <= max_nb_threads ;
++num_threads) ++num_threads)
# endif # endif
/*for (Concurrent_mesher_config::get().num_work_items_per_batch = 5 ; /*for (Concurrent_mesher_config::get().num_work_items_per_batch = 5 ;
@ -965,7 +983,7 @@ int main()
if (input == "Klein_function") if (input == "Klein_function")
make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Klein_function(), input); make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Klein_function(), input);
/*else if (input == "Tanglecube_function") else if (input == "Tanglecube_function")
make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Tanglecube_function(), input); make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Tanglecube_function(), input);
else if (input == "Sphere_function") else if (input == "Sphere_function")
make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Sphere_function(1.), input); make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, Sphere_function(1.), input);
@ -978,7 +996,7 @@ int main()
{ {
Cylinder_function f(3., 0.1); Cylinder_function f(3., 0.1);
make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, f, input); make_mesh_implicit(facet_approx, facet_sizing, cell_sizing, f, input);
}*/ }
else else
{ {
size_t dot_position = input.find_last_of('.'); size_t dot_position = input.find_last_of('.');

View File

@ -21,9 +21,9 @@
######################################################### #########################################################
##### Benchmark for refinement+optim ##### Benchmark for refinement+optim
######################################################### #########################################################
#meshes/elephant.off 0.05 0.04 0.04 10000 #meshes/elephant.off 0.05 0.04 0.04 100
#meshes/elephant.off 0.01 0.004 0.004 10000 meshes/elephant.off 0.01 0.004 0.004 1000
#meshes/elephant.off 0.0068 0.002 0.0025 10000 # typical timing (11 thr): 4.4 2.3 9.9 #meshes/elephant.off 0.0068 0.002 0.0025 10 # typical timing (11 thr): 4.4 2.3 9.9
#meshes/elephant.off 0.0068 0.002 0.0025 10000 #meshes/elephant.off 0.0068 0.002 0.0025 10000
#meshes/fandisk.off 0.0068 0.003 0.006 1 # typical timing (11 thr): 2.4 1.0 2.9 #meshes/fandisk.off 0.0068 0.003 0.006 1 # typical timing (11 thr): 2.4 1.0 2.9
#D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 0.003 1 #D:/INRIA/Data/_Models/BigOFF/lucy-100kt.off 0.0068 0.0015 0.003 1
@ -190,9 +190,9 @@
#Klein_function 0.0068 0.033 0.10 1 #Klein_function 0.0068 0.033 0.10 1
#Tanglecube_function 0.0068 0.01 0.03 1 #Tanglecube_function 0.0068 0.01 0.03 1
#Tanglecube_function 0.0068 0.012 0.035 1 Tanglecube_function 0.0068 0.012 0.035 1
#Tanglecube_function 0.0068 0.013 0.04 1 Tanglecube_function 0.0068 0.013 0.04 1
#Tanglecube_function 0.0068 0.017 0.05 1 Tanglecube_function 0.0068 0.017 0.05 1
#Tanglecube_function 0.0068 0.02 0.06 1 #Tanglecube_function 0.0068 0.02 0.06 1
#Tanglecube_function 0.0068 0.023 0.07 1 #Tanglecube_function 0.0068 0.023 0.07 1
#Tanglecube_function 0.0068 0.027 0.08 1 #Tanglecube_function 0.0068 0.027 0.08 1