/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipcub/checkouts/docs-5.7.0/hipcub/include/hipcub/backend/rocprim/device/device_adjacent_difference.hpp Source File

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipcub/checkouts/docs-5.7.0/hipcub/include/hipcub/backend/rocprim/device/device_adjacent_difference.hpp Source File#

hipCUB: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-hipcub/checkouts/docs-5.7.0/hipcub/include/hipcub/backend/rocprim/device/device_adjacent_difference.hpp Source File
device_adjacent_difference.hpp
1 /******************************************************************************
2  * Copyright (c) 2011-2021, NVIDIA CORPORATION. All rights reserved.
3  * Modifications Copyright (c) 2022, Advanced Micro Devices, Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of the NVIDIA CORPORATION nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL NVIDIA CORPORATION BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  ******************************************************************************/
28 
29 #ifndef HIPCUB_ROCPRIM_DEVICE_DEVICE_ADJACENT_DIFFERENCE_HPP_
30 #define HIPCUB_ROCPRIM_DEVICE_DEVICE_ADJACENT_DIFFERENCE_HPP_
31 
32 #include "../../../config.hpp"
33 
34 #include <hipcub/thread/thread_operators.hpp>
35 #include <rocprim/device/device_adjacent_difference.hpp>
36 
37 BEGIN_HIPCUB_NAMESPACE
38 
39 struct DeviceAdjacentDifference
40 {
41  template<typename InputIteratorT,
42  typename OutputIteratorT,
43  typename DifferenceOpT = ::hipcub::Difference,
44  typename NumItemsT = std::uint32_t>
45  static HIPCUB_RUNTIME_FUNCTION hipError_t SubtractLeftCopy(void* d_temp_storage,
46  std::size_t& temp_storage_bytes,
47  InputIteratorT d_input,
48  OutputIteratorT d_output,
49  NumItemsT num_items,
50  DifferenceOpT difference_op = {},
51  hipStream_t stream = 0,
52  bool debug_synchronous = false)
53  {
54  return ::rocprim::adjacent_difference(
55  d_temp_storage, temp_storage_bytes, d_input, d_output,
56  num_items, difference_op, stream, debug_synchronous
57  );
58  }
59 
60  template<typename RandomAccessIteratorT,
61  typename DifferenceOpT = ::hipcub::Difference,
62  typename NumItemsT = std::uint32_t>
63  static HIPCUB_RUNTIME_FUNCTION hipError_t SubtractLeft(void* d_temp_storage,
64  std::size_t& temp_storage_bytes,
65  RandomAccessIteratorT d_input,
66  NumItemsT num_items,
67  DifferenceOpT difference_op = {},
68  hipStream_t stream = 0,
69  bool debug_synchronous = false)
70  {
71  return ::rocprim::adjacent_difference_inplace(
72  d_temp_storage, temp_storage_bytes, d_input,
73  num_items, difference_op, stream, debug_synchronous
74  );
75  }
76 
77  template<typename InputIteratorT,
78  typename OutputIteratorT,
79  typename DifferenceOpT = ::hipcub::Difference,
80  typename NumItemsT = std::uint32_t>
81  static HIPCUB_RUNTIME_FUNCTION hipError_t SubtractRightCopy(void* d_temp_storage,
82  std::size_t& temp_storage_bytes,
83  InputIteratorT d_input,
84  OutputIteratorT d_output,
85  NumItemsT num_items,
86  DifferenceOpT difference_op = {},
87  hipStream_t stream = 0,
88  bool debug_synchronous = false)
89  {
90  return ::rocprim::adjacent_difference_right(
91  d_temp_storage, temp_storage_bytes, d_input, d_output,
92  num_items, difference_op, stream, debug_synchronous
93  );
94  }
95 
96  template<typename RandomAccessIteratorT,
97  typename DifferenceOpT = ::hipcub::Difference,
98  typename NumItemsT = std::uint32_t>
99  static HIPCUB_RUNTIME_FUNCTION hipError_t SubtractRight(void* d_temp_storage,
100  std::size_t& temp_storage_bytes,
101  RandomAccessIteratorT d_input,
102  NumItemsT num_items,
103  DifferenceOpT difference_op = {},
104  hipStream_t stream = 0,
105  bool debug_synchronous = false)
106  {
107  return ::rocprim::adjacent_difference_right_inplace(
108  d_temp_storage, temp_storage_bytes, d_input,
109  num_items, difference_op, stream, debug_synchronous
110  );
111  }
112 };
113 
114 END_HIPCUB_NAMESPACE
115 
116 #endif // HIPCUB_ROCPRIM_DEVICE_DEVICE_ADJACENT_DIFFERENCE_HPP_
Definition: thread_operators.hpp:86