Bolt  1.3
C++ template library with support for OpenCL
reduce_by_key.h
Go to the documentation of this file.
1 /***************************************************************************
2 * © 2012,2014 Advanced Micro Devices, Inc. All rights reserved.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 
16 ***************************************************************************/
17 
18 #if !defined( BOLT_CL_REDUCE_BY_KEY_H )
19 #define BOLT_CL_REDUCE_BY_KEY_H
20 #pragma once
21 
22 #include "bolt/cl/device_vector.h"
23 #include "bolt/cl/pair.h"
24 
28 namespace bolt
29 {
30  namespace cl
31  {
32 
84  template<
85  typename InputIterator1,
86  typename InputIterator2,
87  typename OutputIterator1,
88  typename OutputIterator2>
89  pair<OutputIterator1, OutputIterator2>
91  control &ctl,
92  InputIterator1 keys_first,
93  InputIterator1 keys_last,
94  InputIterator2 values_first,
95  OutputIterator1 keys_output,
96  OutputIterator2 values_output,
97  const std::string& user_code="" );
98 
99  template<
100  typename InputIterator1,
101  typename InputIterator2,
102  typename OutputIterator1,
103  typename OutputIterator2>
104  pair<OutputIterator1, OutputIterator2>
106  InputIterator1 keys_first,
107  InputIterator1 keys_last,
108  InputIterator2 values_first,
109  OutputIterator1 keys_output,
110  OutputIterator2 values_output,
111  const std::string& user_code="" );
112 
155  template<
156  typename InputIterator1,
157  typename InputIterator2,
158  typename OutputIterator1,
159  typename OutputIterator2,
160  typename BinaryPredicate>
161  pair<OutputIterator1, OutputIterator2>
163  control &ctl,
164  InputIterator1 keys_first,
165  InputIterator1 keys_last,
166  InputIterator2 values_first,
167  OutputIterator1 keys_output,
168  OutputIterator2 values_output,
169  BinaryPredicate binary_pred,
170  const std::string& user_code="" );
171 
172  template<
173  typename InputIterator1,
174  typename InputIterator2,
175  typename OutputIterator1,
176  typename OutputIterator2,
177  typename BinaryPredicate>
178  pair<OutputIterator1, OutputIterator2>
180  InputIterator1 keys_first,
181  InputIterator1 keys_last,
182  InputIterator2 values_first,
183  OutputIterator1 keys_output,
184  OutputIterator2 values_output,
185  BinaryPredicate binary_pred,
186  const std::string& user_code="" );
187 
188 
232  template<
233  typename InputIterator1,
234  typename InputIterator2,
235  typename OutputIterator1,
236  typename OutputIterator2,
237  typename BinaryPredicate,
238  typename BinaryFunction>
239  pair<OutputIterator1, OutputIterator2>
241  control &ctl,
242  InputIterator1 keys_first,
243  InputIterator1 keys_last,
244  InputIterator2 values_first,
245  OutputIterator1 keys_output,
246  OutputIterator2 values_output,
247  BinaryPredicate binary_pred,
248  BinaryFunction binary_op,
249  const std::string& user_code="" );
250 
251  template<
252  typename InputIterator1,
253  typename InputIterator2,
254  typename OutputIterator1,
255  typename OutputIterator2,
256  typename BinaryPredicate,
257  typename BinaryFunction>
258  pair<OutputIterator1, OutputIterator2>
260  InputIterator1 keys_first,
261  InputIterator1 keys_last,
262  InputIterator2 values_first,
263  OutputIterator1 keys_output,
264  OutputIterator2 values_output,
265  BinaryPredicate binary_pred,
266  BinaryFunction binary_op,
267  const std::string& user_code="" );
268 
269 
270 
271  };// end of bolt::cl
272 };// end of bolt namespace
273 
274 #include <bolt/cl/detail/reduce_by_key.inl>
275 
276 #endif