| 126 | |
| 127 | template <class ForwardIt1, class ForwardIt2, class UnaryOperation> |
| 128 | sycl::event transform(sycl::queue &q, ForwardIt1 first1, ForwardIt1 last1, |
| 129 | ForwardIt2 d_first, UnaryOperation unary_op, |
| 130 | const std::vector<sycl::event> &deps = {}) { |
| 131 | if(first1 == last1) |
| 132 | return sycl::event{}; |
| 133 | return q.parallel_for(sycl::range{std::distance(first1, last1)}, deps, |
| 134 | [=](sycl::id<1> id) { |
| 135 | auto input = first1; |
| 136 | auto output = d_first; |
| 137 | std::advance(input, id[0]); |
| 138 | std::advance(output, id[0]); |
| 139 | *output = unary_op(*input); |
| 140 | }); |
| 141 | } |
| 142 | |
| 143 | template <class ForwardIt1, class ForwardIt2, class ForwardIt3, |
| 144 | class BinaryOperation> |