26 template<
typename T_Data>
29 return internal::scanBufferSize<T_Data>(extents);
52 auto devAcc = queue.getDevice();
55 internal::scan<internal::INCLUSIVE_SCAN>(
64 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
exec, buffer, outputVec, inputVec);
73 auto devAcc = queue.getDevice();
76 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
defaultExecutor(devAcc), outputVec, inputVec);
79 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
exec, outputVec, inputVec);
102 auto devAcc = queue.getDevice();
105 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
defaultExecutor(devAcc), buffer, dataVec, dataVec);
108 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
exec, buffer, dataVec, dataVec);
116 auto devAcc = queue.getDevice();
119 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
defaultExecutor(devAcc), dataVec, dataVec);
122 internal::scan<internal::INCLUSIVE_SCAN>(queue, devAcc,
exec, dataVec, dataVec);
147 auto devAcc = queue.getDevice();
150 internal::scan<internal::EXCLUSIVE_SCAN>(
159 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
exec, buffer, outputVec, inputVec);
168 auto devAcc = queue.getDevice();
171 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
defaultExecutor(devAcc), outputVec, inputVec);
174 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
exec, outputVec, inputVec);
197 auto devAcc = queue.getDevice();
200 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
defaultExecutor(devAcc), buffer, dataVec, dataVec);
203 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
exec, buffer, dataVec, dataVec);
211 auto devAcc = queue.getDevice();
214 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
defaultExecutor(devAcc), dataVec, dataVec);
217 internal::scan<internal::EXCLUSIVE_SCAN>(queue, devAcc,
exec, dataVec, dataVec);
Concept to check for an executor.
Interface concept for objects describing multidimensional memory access.
Concept to check if a type is a vector or scalar variable.
constexpr AnyExecutor anyExecutor
Automatic executor selection.
Functionality which is usable on the host CPU controller thread.
constexpr auto defaultExecutor(internal::concepts::DeviceHandle auto deviceHandle)
Select a default executor for the given device.
void exclusiveScan(auto const &queue, alpaka::concepts::Executor auto exec, alpaka::concepts::IMdSpan auto &buffer, alpaka::concepts::IMdSpan auto &outputVec, alpaka::concepts::IDataSource auto const &inputVec)
Perform an exclusive scan on the input data and write the result to the output data.
void inclusiveScanInPlace(auto const &queue, alpaka::concepts::Executor auto exec, alpaka::concepts::IMdSpan auto &buffer, alpaka::concepts::IMdSpan auto &dataVec)
Perform an inclusive scan on data in-place.
void exclusiveScanInPlace(auto const &queue, alpaka::concepts::Executor auto exec, alpaka::concepts::IMdSpan auto &buffer, alpaka::concepts::IMdSpan auto &dataVec)
Perform an exclusive scan on data in-place.
auto getScanBufferSize(alpaka::concepts::VectorOrScalar auto const &extents)
For a scan of some size, this function returns the necessary buffer size in bytes.
void inclusiveScan(auto const &queue, alpaka::concepts::Executor auto exec, alpaka::concepts::IMdSpan auto &buffer, alpaka::concepts::IMdSpan auto &outputVec, alpaka::concepts::IDataSource auto const &inputVec)
Perform an inclusive scan on the input data and write the result to the output data.