|
vir-simd 0.4.189
Parallelism TS 2 extensions and simd fallback implementation
|
Applies the given callable to the elements of the given input range, and stores the result in an output range. More...
Functions | |
| template<detail::simd_execution_policy ExecutionPolicy, detail::simd_execution_iterator It1, detail::simd_execution_iterator OutIt, typename UnaryOperation> | |
| constexpr OutIt | vir::transform (ExecutionPolicy pol, It1 first1, It1 last1, OutIt d_first, UnaryOperation unary_op) |
| Unary transform (iterator overload) | |
| template<detail::simd_execution_policy ExecutionPolicy, detail::simd_execution_iterator It1, detail::simd_execution_iterator It2, detail::simd_execution_iterator OutIt, typename BinaryOperation> | |
| constexpr OutIt | vir::transform (ExecutionPolicy pol, It1 first1, It1 last1, It2 first2, OutIt d_first, BinaryOperation binary_op) |
| Binary transform (iterator overload) | |
| template<detail::simd_execution_policy ExecutionPolicy, detail::simd_execution_range R1, detail::simd_execution_range R2, typename UnaryOperation> | |
| constexpr auto | vir::transform (ExecutionPolicy pol, R1 &&r1, R2 &d_rng, UnaryOperation unary_op) |
| Unary transform (range overload) | |
| template<detail::simd_execution_policy ExecutionPolicy, detail::simd_execution_range R1, detail::simd_execution_range R2, detail::simd_execution_range R3, typename BinaryOperation> | |
| constexpr auto | vir::transform (ExecutionPolicy pol, R1 &&r1, R2 &&r2, R3 &d_rng, BinaryOperation binary_op) |
| Binary transform (range overload) | |
| template<detail::simd_execution_range... Rs> | |
| constexpr auto | vir::transform (detail::simd_execution_policy auto pol, const std::ranges::zip_view< Rs... > &rs, detail::simd_execution_range auto &&d_rg, auto op) |
| Many-input transform (zipped range overload) | |
| template<vir::detail::simd_execution_policy ExecutionPolicy, vir::detail::simd_execution_iterator It1, vir::detail::simd_execution_iterator OutIt, typename UnaryOperation> | |
| constexpr OutIt | std::transform (ExecutionPolicy pol, It1 first1, It1 last1, OutIt d_first, UnaryOperation unary_op) |
| Overloads std::transform for vir::execution::simd. | |
| template<vir::detail::simd_execution_policy ExecutionPolicy, vir::detail::simd_execution_iterator It1, vir::detail::simd_execution_iterator It2, vir::detail::simd_execution_iterator OutIt, typename BinaryOperation> | |
| constexpr OutIt | std::transform (ExecutionPolicy pol, It1 first1, It1 last1, It2 first2, OutIt d_first, BinaryOperation binary_op) |
| Overloads std::transform for vir::execution::simd. | |
Applies the given callable to the elements of the given input range, and stores the result in an output range.
These functions are drop-in replacements for std::transform. The only difference is that unary_op / binary_op are called with multiple values out of the input range via simd arguments. The callable needs to return a simd of the value-type of the output range.
The zip_view overload looks through the zip_view, effectively turning this into a transform with arbitrary number of input ranges.
| pol | Needs to be vir::execution::simd or one of the derived types returned from its modifiers. (vir::detail::simd_execution_policy) |
| first1,last1 | Iterator pair modelling vir::detail::simd_execution_iterator. |
| first2 | Begin iterator modelling vir::detail::simd_execution_iterator. std::distance (first1, last1) determines the size of this range. |
| r1,r2 | Input ranges modelling vir::detail::simd_execution_range. |
| rs | Input range where each input to std::ranges::views::zip (Rs...) models vir::detail::simd_execution_range. |
| d_first | Output iterator modelling vir::detail::simd_execution_iterator. |
| d_rng | Output range modelling vir::detail::simd_execution_range. |
| unary_op,binary_op | Callable to be invoked per chunk of input elements. |