Commit Graph

257 Commits

Author SHA1 Message Date
Clement Jamin 0c80db26d4 Forgot to remove an #include 2013-02-18 11:16:45 +01:00
Clement Jamin bce43fbb8e Improved the way parallelism is handle in Mesh_3/Triangulation_3
Added a better support for parallelism in Triangulation_3.
Simplified how to enable/disable concurrency in Mesh_3.
Moved the Compact_container stategies to a new file.
2013-02-15 18:07:43 +01:00
Clement Jamin eb2ed63d8b Changed the way we activate concurrency in Triangulation_3 + Code clean-up 2013-02-11 19:12:30 +01:00
Clement Jamin c4859681e3 Removed the "localization ids" related code.
It was an old, unused and slow.
2013-02-06 18:57:36 +01:00
Clement Jamin cb89562205 Removed the CGAL_MESH_3_ACTIVATE_GRID_INDEX_CACHE_IN_VERTEX macro.
It was buggy and useless.
2013-02-06 18:10:35 +01:00
Clement Jamin 5938113aff Moved some code because there was a problem with some #ifdef 2013-02-06 14:30:04 +01:00
Clement Jamin dc5e90b8cc Clean-up + some debugging functions + comments 2013-02-02 06:53:43 +01:00
Clement Jamin 2ee92ca346 Missing #ifdef 2013-01-30 17:30:31 +01:00
Clement Jamin ad4a9dcaf6 New is_element_locked_by_this_thread for testing purposes 2013-01-29 19:03:07 +01:00
Clement Jamin 7af597cb4f Parallel Mesh_3 can now be compiled with GCC 2013-01-17 14:49:04 +01:00
Clement Jamin 3dd7981cf4 The erase counter in vertex_base is only required for the parallel version. 2013-01-15 17:05:24 +01:00
Clement Jamin 44e91351ce Code clean-up + minor changes/optimizations 2013-01-11 16:40:03 +01:00
Clement Jamin 7efd61b6db Removed some data race conditions in the parallel perturber.
Note: the code needs some clean-up
2013-01-08 08:59:17 +01:00
Clement Jamin dc7096b1e5 This parallel version of the Perturber seems much better. Needs to be tested... 2012-12-13 20:39:37 +01:00
Clement Jamin 9c5cddbbc3 Global optimizers: better parallel performance
- We used to have a thread-local variable for cell::TDS_data to make
  incident_cells concurrently callable but it was slow and memory-consuming
  => new incident_cells function which do not use cell::TDS_data
  => faster and lighter
- update_restricted_delaunay now uses parallel_for instead of parallel_do
  (it was quite slow with the implicit oracle)
  => faster (but requires to fill a temporary vector)
2012-11-28 14:17:59 +01:00
Clement Jamin 11a2a1c68a Merge from Mesh_3-improvements-GF 2012-11-21 17:49:59 +01:00
Clement Jamin ab4d97c1e5 The global optimizers are now parallel (needs some intense testing now) 2012-11-21 16:16:47 +01:00
Clément Jamin ffc70d4482 Added support for concurrency to "locate" + minor changes 2012-11-20 15:16:21 +01:00
Laurent Rineau 57a58d00a3 Triangulation_cell_base_with_circumcenter_3::invalidate_circumcenter() must
be public.

That is required by the slivers exuder.
2012-11-20 10:25:47 +01:00
Laurent Rineau 4509b5bbe2 Merge branch 'master' into improvements
Conflicts:
	Mesh_3/include/CGAL/Mesh_3/mesh_standard_facet_criteria.h
2012-11-14 12:17:29 +01:00
Sébastien Loriot 825bfe6144 make create_star_3 non recursive only after 100 recursive calls.
The speed observed on random data set produced by simple_2.cpp is equivalent
to the original recursive version and faster than the version better this commit
2012-10-30 13:42:47 +00:00
Clément Jamin 74fad3a088 Typo 2012-10-19 08:50:18 +00:00
Clément Jamin 8a12c83451 The parallel version can now use safely FORCE_STRUCTURAL_FILTERING (optimization from GF-Improvements) 2012-10-17 16:33:37 +00:00
Clément Jamin 1ca7174e01 Merge from Mesh_3-improvements-GF
+ some bugfixes (most of them are related to the parallel version)

This version works (sequential and parallel) as long as the following macros are NOT defined:
* CGAL_COMPACT_MESH_VERTEX_CELL
* CGAL_INTRUSIVE_LIST
* FORCE_STRUCTURAL_FILTERING
2012-10-16 14:02:16 +00:00
Clément Jamin 4e1f8aa4f8 Merge from next 2012-10-15 08:28:01 +00:00
Laurent Rineau 795c71fc9b Fix headers of Mesh_2 and Mesh_3. All were missing #include.
I found out that way that <CGAL/Mesh_3/Refine_facets.h> and
<CGAL/Mesh_3/Protect_edges_sizing_field> were using global functions
instead of functors of the traits class.

Note also the funny bug that <CGAL/Regular_triangulation_cell_base_3.h> was
depending on <CGAL/Triangulation_vertex_base_3.h>!
2012-10-08 09:33:38 +00:00
Clément Jamin 2366fee1e1 Merge from next 2012-09-28 14:51:02 +00:00
Jane Tournois 3555cf3cb2 make just_incident_cells_3 the default use of incident_cells(v)
replace macro CGAL_JUST_INCIDENT_CELLS with CGAL_TDS_3_NOT_JUST_INCIDENT_CELLS (and reverse use), and comment it in config.h
2012-08-28 09:01:47 +00:00
Jane Tournois abc1515741 r70387, r70573, r70574 from Mesh_3-experimental-GF
Add incident_cells_3(Vertex_handle, std::vector<Cell_handle>)

This function avoids the construction of two additional std::vectors.
The performance gain is between 30% (g++) and 50% (VC++)
for points on surfaces as well as for points filling space.

We at the same time change the implementation of the function
incident_cells(Vertex_handle, OutputIterator).
In order to save one additional std::vector,
the cells are reported in bfs and not in dfs order
2012-07-31 14:44:45 +00:00
Jane Tournois 7d169b85f8 r70573 from Mesh_3-experimental-GF
add macro to force Structural_filtering
2012-07-31 14:14:25 +00:00
Jane Tournois db9f968ea9 r70321 from Mesh_3-experimental-GF
Change inexact_locate and inexact_orientation from protected to public (needed for the commit in Mesh_3 concerning inexact_locate in Mesh_sizing_field)
2012-07-31 13:30:29 +00:00
Clément Jamin 1c664776c9 The parallel version can now be built with GCC 2012-07-10 16:53:34 +00:00
Clément Jamin 41f9cbe411 Sequential Mesh_3 can now be compiled by GCC. 2012-07-09 15:44:58 +00:00
Philipp Möller caf3cce0d1 Silence unused parameter warnings. Leave the ones from the test-suite
that could signal incomplete tests.
2012-06-22 14:22:16 +00:00
Clément Jamin 40f602fea9 Minor changes (comments, etc.) 2012-06-21 12:03:03 +00:00
Clément Jamin 3725168185 Backup commit (I need to roll back to an older version) 2012-06-15 11:28:09 +00:00
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
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 0eee3dc040 Fixed a deadlock introduced recently.
Added some assertions in the way...
2012-04-25 13:00:12 +00:00
Clément Jamin 7d1d94f42e Merge from next 2012-04-24 16:24:13 +00:00
Laurent Rineau 5acc79e554 Add comments to explain what happens with the use of Default Dt_3 2012-04-23 16:54:47 +00:00
Clément Jamin 4adf775814 Bugfix for sequential Mesh_3 using lazy refinement queue. 2012-04-13 15:18:22 +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
Laurent Rineau 95bec3999c Use Unique_has_map instead of std::map (patch from Andreas Fabri)
The gain on copies of T2 or T3 is the following:


afabri@klimt /cygdrive/c/cgal/next/Triangulation_3/benchmark/Triangulation_3
$ ./copy 1000000 2
36.806 sec

afabri@klimt /cygdrive/c/cgal/next/Triangulation_3/benchmark/Triangulation_3
$ ./copy 1000000 2
4.865 sec

The benchmarck copy.cpp is the following (not commited):

#define  CGAL_T3_HASH
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_3.h>
#include <CGAL/Timer.h>
#include <CGAL/point_generators_3.h>


#include <iostream>
#include <fstream>
#include <string>
#include <vector>

typedef CGAL::Exact_predicates_inexact_constructions_kernel  K;
typedef CGAL::Delaunay_triangulation_3<K> Delaunay;
typedef K::Point_3                                     Point;
typedef CGAL::Creator_uniform_3<double,Point>  Creator;



int main(int argc, char **argv)
{
  int n=1000000;
  int rep=100;
  if (argc>=2)
    n=atoi(argv[1]);
  if (argc>=3)
    rep=atoi(argv[2]);
  std::vector<Point> points;
  points.reserve(n);  
  CGAL::Random_points_in_sphere_3<Point,Creator> g(1);
  CGAL::copy_n( g, n, std::back_inserter(points));
  Delaunay original;
  original.insert(points.begin(),points.end());
  
  double res = 0;
  for (int r=0;r<rep;++r){
    CGAL::Timer t;    t.start();
    Delaunay delaunay=original;
    t.stop();
    res+=t.time();
  }

  std::cout << res << std::endl;
            
  return 0;
}
2012-03-30 12:37:19 +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 4fdf647428 "Re-tabulation" 2012-03-28 08:30:32 +00:00