|
10 | 10 | // compatibility with CRAN packages not previously configured |
11 | 11 | // to link to TBB in Makevars.win) |
12 | 12 | #ifndef RCPP_PARALLEL_USE_TBB |
13 | | -#if defined(__APPLE__) || defined(__gnu_linux__) || ((defined(__sun) && defined(__SVR4) && !defined(__sparc))) |
14 | | -#define RCPP_PARALLEL_USE_TBB 1 |
15 | | -#include "RcppParallel/TBB.h" |
16 | | -#else |
17 | | -#define RCPP_PARALLEL_USE_TBB 0 |
18 | | -#endif |
| 13 | +# if defined(__APPLE__) || defined(__gnu_linux__) || (defined(__sun) && defined(__SVR4) && !defined(__sparc)) |
| 14 | +# define RCPP_PARALLEL_USE_TBB 1 |
| 15 | +# else |
| 16 | +# define RCPP_PARALLEL_USE_TBB 0 |
| 17 | +# endif |
19 | 18 | #endif |
20 | 19 |
|
21 | 20 | #if RCPP_PARALLEL_USE_TBB |
22 | | - #include "RcppParallel/TBB.h" |
| 21 | +# include "RcppParallel/TBB.h" |
23 | 22 | #endif |
24 | 23 |
|
| 24 | +#include "RcppParallel/Backend.h" |
| 25 | + |
25 | 26 | #include "RcppParallel/RVector.h" |
26 | 27 | #include "RcppParallel/RMatrix.h" |
27 | 28 |
|
28 | 29 | namespace RcppParallel { |
29 | 30 |
|
30 | | -inline void parallelFor(std::size_t begin, std::size_t end, |
31 | | - Worker& worker, std::size_t grainSize = 1) { |
32 | | - |
| 31 | +inline void parallelFor(std::size_t begin, |
| 32 | + std::size_t end, |
| 33 | + Worker& worker, |
| 34 | + std::size_t grainSize = 1) |
| 35 | +{ |
33 | 36 | #if RCPP_PARALLEL_USE_TBB |
34 | | - tbbParallelFor(begin, end, worker, grainSize); |
| 37 | + if (internal::backend() == internal::BACKEND_TBB) |
| 38 | + tbbParallelFor(begin, end, worker, grainSize); |
| 39 | + else |
| 40 | + ttParallelFor(begin, end, worker, grainSize); |
35 | 41 | #else |
36 | 42 | ttParallelFor(begin, end, worker, grainSize); |
37 | 43 | #endif |
38 | | - |
39 | 44 | } |
40 | 45 |
|
41 | 46 | template <typename Reducer> |
42 | | -inline void parallelReduce(std::size_t begin, std::size_t end, |
43 | | - Reducer& reducer, std::size_t grainSize = 1) { |
44 | | - |
| 47 | +inline void parallelReduce(std::size_t begin, |
| 48 | + std::size_t end, |
| 49 | + Reducer& reducer, |
| 50 | + std::size_t grainSize = 1) |
| 51 | +{ |
45 | 52 | #if RCPP_PARALLEL_USE_TBB |
46 | | - tbbParallelReduce(begin, end, reducer, grainSize); |
| 53 | + if (internal::backend() == internal::BACKEND_TBB) |
| 54 | + tbbParallelReduce(begin, end, reducer, grainSize); |
| 55 | + else |
| 56 | + ttParallelReduce(begin, end, reducer, grainSize); |
47 | 57 | #else |
48 | 58 | ttParallelReduce(begin, end, reducer, grainSize); |
49 | 59 | #endif |
50 | | - |
51 | 60 | } |
52 | 61 |
|
53 | 62 | } // namespace RcppParallel |
|
0 commit comments