27 #ifndef EMBB_ALGORITHMS_SCAN_H_ 28 #define EMBB_ALGORITHMS_SCAN_H_ 30 #include <embb/mtapi/job.h> 31 #include <embb/mtapi/execution_policy.h> 32 #include <embb/algorithms/identity.h> 35 namespace algorithms {
89 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
90 typename ScanFunction,
typename TransformationFunction>
105 TransformationFunction transformation = Identity(),
110 size_t block_size = 0
124 template<
typename RAIIn,
typename RAIOut,
typename ReturnType>
128 RAIOut output_iterator,
139 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
140 typename ScanFunction>
144 RAIOut output_iterator,
155 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
156 typename TransformationFunction>
160 RAIOut output_iterator,
163 TransformationFunction transformation,
171 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
172 typename ScanFunction,
typename TransformationFunction>
176 RAIOut output_iterator,
179 TransformationFunction transformation,
187 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
188 typename ScanFunction>
192 RAIOut output_iterator,
196 Scan(first, last, output_iterator, neutral, scan, Identity(),
203 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
204 typename ScanFunction,
typename TransformationFunction>
208 RAIOut output_iterator,
211 TransformationFunction transformation
213 Scan(first, last, output_iterator, neutral, scan, transformation,
220 template<
typename RAIIn,
typename RAIOut,
typename ReturnType,
221 typename ScanFunction,
typename TransformationFunction>
225 RAIOut output_iterator,
228 TransformationFunction transformation,
231 Scan(first, last, output_iterator, neutral, scan, transformation, policy, 0);
234 #endif // else DOXYGEN 243 #include <embb/algorithms/internal/scan-inl.h> 245 #endif // EMBB_ALGORITHMS_SCAN_H_ Definition: lock_free_mpmc_queue.h:40
void Scan(RAIIn first, RAIIn last, RAIOut output_first, ReturnType neutral, ScanFunction scan, TransformationFunction transformation=Identity(), const embb::mtapi::ExecutionPolicy &policy=embb::mtapi::ExecutionPolicy(), size_t block_size=0)
Performs a parallel scan (or prefix) computation on a range of elements.
Represents a collection of Actions.
Definition: job.h:41
Describes the execution policy of a parallel algorithm.
Definition: execution_policy.h:48