diff --git a/src/db/db/dbPLCConvexDecomposition.cc b/src/db/db/dbPLCConvexDecomposition.cc index 95633fb3a..9e1b50914 100644 --- a/src/db/db/dbPLCConvexDecomposition.cc +++ b/src/db/db/dbPLCConvexDecomposition.cc @@ -30,6 +30,14 @@ #include #include #include +#include + +#if defined(__cpp_lib_execution) +#include +#define PARALLEL_EXEC_POLICY std::execution::par, +#else +#define PARALLEL_EXEC_POLICY +#endif // #define DEBUG_DUMP_ESSENTIAL_EDGES @@ -269,7 +277,7 @@ ConvexDecomposition::hertel_mehlhorn_decomposition (Triangulation &tris, const C if (! new_points.empty ()) { - std::sort (new_points.begin (), new_points.end (), less_compare_func ()); + std::sort (PARALLEL_EXEC_POLICY new_points.begin (), new_points.end (), less_compare_func ()); new_points.erase (std::unique (new_points.begin (), new_points.end (), equal_compare_func ()), new_points.end ()); // Insert the new points and make connections @@ -332,7 +340,7 @@ ConvexDecomposition::hertel_mehlhorn_decomposition (Triangulation &tris, const C } } - std::sort (sorted_edges.begin (), sorted_edges.end (), SortAngleAndEdgesByEdgeLength ()); + std::sort (PARALLEL_EXEC_POLICY sorted_edges.begin (), sorted_edges.end (), SortAngleAndEdgesByEdgeLength ()); for (auto i = sorted_edges.end (); i != sorted_edges.begin (); ) { --i; diff --git a/src/db/db/dbShapes.cc b/src/db/db/dbShapes.cc index 8176df950..dbfca4a90 100644 --- a/src/db/db/dbShapes.cc +++ b/src/db/db/dbShapes.cc @@ -30,6 +30,14 @@ #include "dbLayout.h" #include +#include + +#if defined(__cpp_lib_execution) +#include +#define PARALLEL_EXEC_POLICY std::execution::par, +#else +#define PARALLEL_EXEC_POLICY +#endif namespace db { @@ -111,7 +119,7 @@ layer_op::erase (Shapes *shapes) std::vector done; done.resize (m_shapes.size (), false); - std::sort (m_shapes.begin (), m_shapes.end ()); + std::sort (PARALLEL_EXEC_POLICY m_shapes.begin (), m_shapes.end ()); typename std::vector::const_iterator s_begin = m_shapes.begin (); typename std::vector::const_iterator s_end = m_shapes.end ();