Clément Jamin
b268598665
Replace LINKED_WITH_TBB by CGAL_LINKED_WITH_TBB.
2012-06-13 09:33:08 +00:00
Clément Jamin
b948543cc6
Use of a Tag (template parameter) to activate/deactivate concurrency in Mesh_3, instead of #ifdef macros.
2012-06-09 08:52:37 +00:00
Clément Jamin
dfbddff185
Bugfixes + some clean-up
2012-05-30 14:49:02 +00:00
Laurent Rineau
fd77f801dc
Bug fix: g++-4.7 (and C++03/11) requires to qualify the call.
2012-05-21 06:53:58 +00:00
Clément Jamin
d2792dff8d
- Added the ability to add points on a sphere outside the domain in the sequential case => better performance for the fandisk model (x2). I'm still wondering why...
...
- Code refactoring/clean-up
2012-05-04 15:20:28 +00:00
Clément Jamin
9da17676e9
Clean-up / formatting
2012-05-03 16:37:48 +00:00
Clément Jamin
5a628edd4e
- New worksharing technique: we use a coarse version of the mesh to split the space.
...
- Some clean-up (removed g_global_mutex)
2012-05-03 16:05:36 +00:00
Clément Jamin
107a428fb5
- Added the ability to sort work batches according to quality, in order to reduce the number of inserted vertices
...
- Modified config parameters manager (Concurrent_mesher_config class)
2012-05-02 15:21:31 +00:00
Clément Jamin
0eee3dc040
Fixed a deadlock introduced recently.
...
Added some assertions in the way...
2012-04-25 13:00:12 +00:00
Clément Jamin
fb7d171271
Oops. Forgot to remove a line.
2012-04-24 16:01:54 +00:00
Clément Jamin
107b268756
- Now, we first start by a little bit of sequential refinement, in order to get a better approximation of the bounding box
...
- New worksharing strategy, which groups tasks by batches and let TBB manage the load balancing => the results are slightly improved, compared to parallel_do
- New params in config file
2012-04-24 15:06:10 +00:00
Clément Jamin
fc121a451d
- Some clean-up
...
- Function get_number_of_bad_elements in the mesher levels (for debugging)
- option CGAL_MESH_3_ADD_OUTSIDE_POINTS_ON_A_FAR_SPHERE to reduce contention on the infinite vertex
2012-04-24 07:59:29 +00:00
Clément Jamin
9492b2eb84
Added the option to sort the refinement queue after the initial scans (facets and cells), when the queue is an unsorted container.
2012-04-20 09:45:58 +00:00
Clément Jamin
8002220aed
Clean-up and bugfixes
2012-04-13 13:57:54 +00:00
Clément Jamin
ce132eb34a
The concurrency parameters are now stored in a config file which is handled via boost::program_options.
2012-04-12 13:37:15 +00:00
Clément Jamin
9933dd83a4
- Some clean-up: moved global variables (locking/worksharing data structures) to member variables of Mesher_3.
...
- Some tests on the worksharing strategies
2012-04-12 08:33:43 +00:00
Clément Jamin
69272e4d9a
Test with a worksharing strategy (based on TBB task scheduler) + test with parallel_do.
2012-04-10 13:23:51 +00:00
Clément Jamin
a0a92cdf64
The problem "A facet is not in conflict with its refinement point" (can occur in sequential version too) is now solved => we switch to exact computation (for the dual) when it happens.
...
Note: don't try to #define CGAL_MESH_3_DO_NOT_LOCK_INFINITE_VERTEX, it doesn't work yet.
2012-04-04 07:05:46 +00:00
Clément Jamin
a520f3cbf0
Corrected a rare race condition.
...
The few bad facets that are created during the "cell refinement" step are treated immediately inside the thread which created them.
2012-03-29 15:05:28 +00:00
Clément Jamin
a3f27eff3c
Finally, a fully parallel version of the refinement. Not very efficient, though, but the idea was to identify all data races and to protect it using locks, atomics, TLS... Needs some tests now, to check if we didn't miss any rare data race.
2012-03-26 07:39:58 +00:00
Clément Jamin
da923ba811
Forget about yesterday. There was a studid mutex making the whole thing nearly sequential.
...
Anyway, now the refinement of the facets is parallel. The speedup is around 2-3 on a 12-core CPU. Can do better, but at least it shows it's not sequential.
The refinement of the cells is not parallel, yet.
One last thing: the program needs to be restarted between two refinements (should be fixed soon).
2012-03-23 18:05:24 +00:00
Clément Jamin
4ccf8e0447
First working parallel version. It's not faster than the sequential one, but not slower neither (depends if you're optimistic or not). The good news is that we found all (?) the sections to protect or to make thread-local.
2012-03-22 17:07:03 +00:00
Clément Jamin
7137347f95
Added::process_a_batch_of_elements(...) which use parallel_for to insert batch of facets/cells. For now, the body is protected by a scoped_lock to avoid races => no speedup!
2012-03-07 13:57:16 +00:00
Laurent Rineau
8f59fd9592
Turn QPL into LGPLv3+
2012-01-13 16:33:35 +00:00
Laurent Rineau
9024d5bc04
Fix the text of the assertion msg. Thanks to Sebastien L.
2011-11-16 18:25:18 +00:00
Laurent Rineau
3d1dc999a0
Add an assertion that checks that a point constructed as the midpoint of an
...
edge is located either on the edge or inside one of the two incident faces.
2011-11-16 17:58:22 +00:00
Laurent Rineau
0a363c52b5
Fix a bug introduced in trunk: criteria for Mesh_2 needs a geom traits
2011-06-04 17:00:31 +00:00
Laurent Rineau
5e1de228a1
Do not use systematically a default constructed geom traits
...
If one wants to use Mesh_2 with Triangulation_2_projection_traits_3 (a
projection traits constructed with a normal vector), one cannot use a
default constructed geom traits, but only one passed on argument. Then the
criteria class needs to be constructed with tr.geom_traits() as argument.
2011-03-23 17:45:59 +00:00
Sébastien Loriot
ae62b2ae4d
remove warnings
2011-02-24 16:36:04 +00:00
Andreas Fabri
43aea3bd18
Remove unused variable
2010-11-12 08:06:17 +00:00
Sébastien Loriot
5c8f3946f4
call to is_conforming_[Gabriel,Delaunay] was no longer possible: fix proposal.
...
Add a test into the testsuite
2010-10-19 14:23:04 +00:00
Stéphane Tayeb
61f6dcbc10
previous data member is now a reference in Null_mesher_visitor_level: visitor used by Mesh_3 as Previous_level has a state, so doing a copy is not an option.
2010-06-09 15:39:04 +00:00
Andreas Fabri
8e47168183
Remove extra ';'
2010-05-17 14:05:54 +00:00
Andreas Fabri
397bc16d9f
Remove ';'
2010-05-14 09:13:45 +00:00
Laurent Rineau
49b095589d
Strict-ansi compliance
2010-05-08 11:49:52 +00:00
Sébastien Loriot
72ef527fc6
remove extra ;
2010-04-26 09:00:17 +00:00
Laurent Rineau
d8e2cfaecd
Fix yet another bug of Mesh_2: if a vertex of the CDT has all its incident
...
edges in a cluster of constrained edges, then the construction of the
cluster was buggy.
2010-03-23 14:59:11 +00:00
Laurent Rineau
73c9d4fb3d
Determinize Mesh_2 (comparison of Face_handles in Double_map).
2010-03-10 18:05:57 +00:00
Laurent Rineau
1c84cc189b
Fix a bug of Mesh_2 that exists for years (since r23141, 2004-10-19)!
2010-03-10 16:46:10 +00:00
Laurent Rineau
274143fa4d
- Fix the Mesh_2 test suite: previously it was no longer testing anything!
...
- Fix the handling of the cdt with the triangulation plus_2.
- Add tests with CDT_plus_2.
2010-03-09 15:25:12 +00:00
Stéphane Tayeb
a9813aa1ef
Fix double map container: pop_next_element_impl now pops the first element of the internal double map.
2010-02-26 10:45:22 +00:00
Stéphane Tayeb
88b3b85630
Fix a bug concerning Boost.Bimap (boost 1.41.0) and _GLIBCXX_PARALLEL g++ flag.
2010-01-27 17:09:55 +00:00
Sylvain Pion
5fda817f95
Remove a few "warning: extra ';'" with g++ -pedantic.
2009-11-14 11:49:52 +00:00
Laurent Rineau
c5e779d227
Add a edges mesher level that prevents edges to be refined, and let some bad triangles in the mesh (when their circumcenter encroaches a constrained edge, or when their circumcenter lies outside the meshing domain.
2009-06-24 14:12:12 +00:00
Sylvain Pion
55b427d531
lenght -> length
2009-04-07 19:30:59 +00:00
Andreas Fabri
0879f84971
Don't use deprecated functions internally
2008-11-02 20:43:30 +00:00
Laurent Rineau
324db7bcee
Rename variables: add "sq" in their names, so that one know that the
...
distances are squared.
2008-09-26 13:46:54 +00:00
Laurent Rineau
a8cdc7ca4a
Remove Boost.Bimap FEATURE: it is now hard-coded that bimap is supported iff boost version is >= 1.35
2008-09-24 09:13:57 +00:00
Andreas Fabri
64d8e77840
Overload meshing function for domains selevted by the user
2008-09-24 08:58:02 +00:00
Andreas Fabri
9e667d5865
Put parenthesis around block even if it is only one statement
2008-09-24 08:57:10 +00:00