From d3a9b3c46d6b8c81e01c9f5d7bc0c4347511a4e8 Mon Sep 17 00:00:00 2001 From: Clement Jamin Date: Wed, 16 Oct 2013 13:03:49 +0200 Subject: [PATCH] Parallel T3 speed-up chart. --- .../doc/Triangulation_3/Triangulation_3.txt | 16 ++++++++++++++++ .../fig/DT3_parallel_benchmark.png | Bin 0 -> 41995 bytes 2 files changed, 16 insertions(+) create mode 100644 Triangulation_3/doc/Triangulation_3/fig/DT3_parallel_benchmark.png diff --git a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt index 20660724101..215ee76a091 100644 --- a/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt +++ b/Triangulation_3/doc/Triangulation_3/Triangulation_3.txt @@ -768,6 +768,22 @@ Running times in seconds for algorithms on 3D triangulations. More benchmarks comparing \cgal to other software can be found in \cgalCite{msri52:liu-snoeyink-05}. +\subsection Triangulation_3ParallelPerformance Parallel Performance + +Figure \cgalFigureRef{Triangulation3figparallelspeedup} shows insertion +and removal speed-ups obtained using the parallel version of the +triangulation algorithms. The machine used is a PC running +Windows 7 64-bits with two 6-core +Intel Xeon CPU X5660 clocked at 2.80 GHz +with 32GB of RAM. The program has been compiled with +Microsoft Visual C++ 2012 in Release mode. + +\cgalFigureBegin{Triangulation3figparallelspeedup,DT3_parallel_benchmark.png} +Speed-up obtained for the insertion of 1M points randomly generated inside +a cube (red), and the removal of 100K of them (blue), compared +to the sequential version of the algorithm. +\cgalFigureEnd + \subsection Triangulation_3MemoryUsage Memory Usage We give here some indication about the memory usage of the triangulations. diff --git a/Triangulation_3/doc/Triangulation_3/fig/DT3_parallel_benchmark.png b/Triangulation_3/doc/Triangulation_3/fig/DT3_parallel_benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..12cff9cef04581d33fd97b608a83fceb750de935 GIT binary patch literal 41995 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 Qv%iCM!G<906Z^3L0q1?Zg8%>k literal 0 HcmV?d00001