3 #include <SimpleKDTreeFactory.h>
4 #include <SimpleKDTreeGeometricStrategy.h>
5 #include <SAHKDTreeFactory.h>
6 #include <SAHKDTreeGeometricStrategy.h>
7 #include <AxisSAHKDTreeFactory.h>
8 #include <AxisSAHKDTreeGeometricStrategy.h>
9 #include <FastSAHKDTreeFactory.h>
10 #include <FastSAHKDTreeGeometricStrategy.h>
11 #include <MultiThreadKDTreeFactory.h>
12 #include <MultiThreadSAHKDTreeFactory.h>
16 using std::shared_ptr;
17 using std::make_shared;
49 static inline shared_ptr<SimpleKDTreeFactory>
makeSimple(){
50 return make_shared<SimpleKDTreeFactory>();
63 size_t const kdtNodeJobs,
64 size_t const kdtGeomJobs
66 shared_ptr<SimpleKDTreeFactory> kdtf =
makeSimple();
67 shared_ptr<SimpleKDTreeGeometricStrategy> gs = \
68 make_shared<SimpleKDTreeGeometricStrategy>(*kdtf);
69 return make_shared<MultiThreadKDTreeFactory>(
70 kdtf, gs, kdtNodeJobs, kdtGeomJobs
80 size_t const kdtNodeJobs
102 static inline shared_ptr<SAHKDTreeFactory>
makeSAH(
size_t const lossNodes){
103 return make_shared<SAHKDTreeFactory>(lossNodes);
116 size_t const lossNodes,
117 size_t const kdtNodeJobs,
118 size_t const kdtGeomJobs
120 shared_ptr<SAHKDTreeFactory> kdtf =
makeSAH(lossNodes);
121 shared_ptr<SAHKDTreeGeometricStrategy> gs = \
122 make_shared<SAHKDTreeGeometricStrategy>(*kdtf);
123 return make_shared<MultiThreadSAHKDTreeFactory>(
124 kdtf, gs, kdtNodeJobs, kdtGeomJobs
134 size_t const lossNodes,
135 size_t const kdtNodeJobs
147 size_t const lossNodes
169 size_t const lossNodes
171 return make_shared<AxisSAHKDTreeFactory>(lossNodes);
183 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
185 size_t const lossNodes,
186 size_t const kdtNodeJobs,
187 size_t const kdtGeomJobs
189 shared_ptr<AxisSAHKDTreeFactory> kdtf =
makeAxisSAH(lossNodes);
190 shared_ptr<AxisSAHKDTreeGeometricStrategy> gs = \
191 make_shared<AxisSAHKDTreeGeometricStrategy>(*kdtf);
192 return make_shared<MultiThreadSAHKDTreeFactory>(
193 kdtf, gs, kdtNodeJobs, kdtGeomJobs
202 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
204 size_t const lossNodes,
205 size_t const kdtNodeJobs
216 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
226 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
239 size_t const lossNodes
241 return make_shared<FastSAHKDTreeFactory>(lossNodes);
253 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
255 size_t const lossNodes,
256 size_t const kdtNodeJobs,
257 size_t const kdtGeomJobs
259 shared_ptr<FastSAHKDTreeFactory> kdtf =
makeFastSAH(lossNodes);
260 shared_ptr<FastSAHKDTreeGeometricStrategy> gs = \
261 make_shared<FastSAHKDTreeGeometricStrategy>(*kdtf);
262 return make_shared<MultiThreadSAHKDTreeFactory>(
263 kdtf, gs, kdtNodeJobs, kdtGeomJobs
272 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
274 size_t const lossNodes,
275 size_t const kdtNodeJobs
286 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
296 static inline shared_ptr<MultiThreadSAHKDTreeFactory>
305 std::thread::hardware_concurrency();
Collection of static methods to simplify making of different KDTree factories.
Definition: KDTreeFactoryMaker.h:26
static shared_ptr< SAHKDTreeFactory > makeSAH(size_t const lossNodes)
Build a SAH KDTree factory.
Definition: KDTreeFactoryMaker.h:102
static shared_ptr< MultiThreadSAHKDTreeFactory > makeFastSAHMultiThread(size_t const lossNodes)
Build a multi-thread fast SAH KDTree factory assuming the number of threads for geometry and node lev...
Definition: KDTreeFactoryMaker.h:287
static shared_ptr< MultiThreadSAHKDTreeFactory > makeSAHMultiThread(size_t const lossNodes, size_t const kdtNodeJobs)
Build a multi-thread SAH KDTree factory assuming the number of threads for geometry-level paralleliza...
Definition: KDTreeFactoryMaker.h:133
static shared_ptr< SimpleKDTreeFactory > makeSimple()
Build a simple KDTree factory.
Definition: KDTreeFactoryMaker.h:49
static shared_ptr< MultiThreadSAHKDTreeFactory > makeFastSAHMultiThread(size_t const lossNodes, size_t const kdtNodeJobs, size_t const kdtGeomJobs)
Build a multi-thread fast SAH KDTree factory.
Definition: KDTreeFactoryMaker.h:254
static shared_ptr< MultiThreadKDTreeFactory > makeSimpleMultiThread(size_t const kdtNodeJobs)
Build a multi-thread simple KDTree factory assuming the number of threads for geometry-level parallel...
Definition: KDTreeFactoryMaker.h:79
static shared_ptr< MultiThreadSAHKDTreeFactory > makeSAHMultiThread()
Build a multi-thread SAH KDTree factory with system threads and default loss nodes.
Definition: KDTreeFactoryMaker.h:157
static size_t const sysThreads
Number of threads available in the system.
Definition: KDTreeFactoryMaker.h:38
static shared_ptr< MultiThreadSAHKDTreeFactory > makeFastSAHMultiThread()
Build a multi-thread fast SAH KDTree factory with system threads and default loss nodes.
Definition: KDTreeFactoryMaker.h:297
static shared_ptr< MultiThreadSAHKDTreeFactory > makeAxisSAHMultiThread(size_t const lossNodes, size_t const kdtNodeJobs)
Build a multi-thread axis SAH KDTree factory assuming the number of threads for geometry-level parall...
Definition: KDTreeFactoryMaker.h:203
static shared_ptr< FastSAHKDTreeFactory > makeFastSAH(size_t const lossNodes)
Build a fast SAH KDTree factory.
Definition: KDTreeFactoryMaker.h:238
static shared_ptr< MultiThreadSAHKDTreeFactory > makeSAHMultiThread(size_t const lossNodes)
Build a multi-thread SAH KDTree factory assuming the number of threads for geometry and node levels p...
Definition: KDTreeFactoryMaker.h:146
static shared_ptr< MultiThreadSAHKDTreeFactory > makeAxisSAHMultiThread()
Build a multi-thread axis SAH KDTree factory with system threads and default loss nodes.
Definition: KDTreeFactoryMaker.h:227
static shared_ptr< MultiThreadSAHKDTreeFactory > makeFastSAHMultiThread(size_t const lossNodes, size_t const kdtNodeJobs)
Build a multi-thread fast SAH KDTree factory assuming the number of threads for geometry-level parall...
Definition: KDTreeFactoryMaker.h:273
static shared_ptr< MultiThreadSAHKDTreeFactory > makeAxisSAHMultiThread(size_t const lossNodes)
Build a multi-thread axis SAH KDTree factory assuming the number of threads for geometry and node lev...
Definition: KDTreeFactoryMaker.h:217
static shared_ptr< AxisSAHKDTreeFactory > makeAxisSAH(size_t const lossNodes)
Build an Axis SAH KDTree factory.
Definition: KDTreeFactoryMaker.h:168
static shared_ptr< MultiThreadKDTreeFactory > makeSimpleMultiThread()
Build a multi-thread simple KDTree factory assuming the number of threads for geometry and node level...
Definition: KDTreeFactoryMaker.h:91
static shared_ptr< MultiThreadSAHKDTreeFactory > makeSAHMultiThread(size_t const lossNodes, size_t const kdtNodeJobs, size_t const kdtGeomJobs)
Build a multi-thread SAH KDTree factory.
Definition: KDTreeFactoryMaker.h:115
static shared_ptr< MultiThreadSAHKDTreeFactory > makeAxisSAHMultiThread(size_t const lossNodes, size_t const kdtNodeJobs, size_t const kdtGeomJobs)
Build a multi-thread axis SAH KDTree factory.
Definition: KDTreeFactoryMaker.h:184
static shared_ptr< MultiThreadKDTreeFactory > makeSimpleMultiThread(size_t const kdtNodeJobs, size_t const kdtGeomJobs)
Build a multi-thread simple KDTree factory.
Definition: KDTreeFactoryMaker.h:62