MUDA
Loading...
Searching...
No Matches
device_merge_sort.h
1#pragma once
2#include <muda/cub/device/cub_wrapper.h>
3#include "details/cub_wrapper_macro_def.inl"
4#ifndef __INTELLISENSE__
5#include <cub/device/device_merge_sort.cuh>
6#endif
7
8namespace muda
9{
10//ref: https://nvlabs.github.io/cub/structcub_1_1_device_merge_sort.html
11class DeviceMergeSort : public CubWrapper<DeviceMergeSort>
12{
14
15 public:
16 using Base::Base;
17
18 template <typename KeyIteratorT, typename ValueIteratorT, typename OffsetT, typename CompareOpT>
19 DeviceMergeSort& SortPairs(KeyIteratorT d_keys, ValueIteratorT d_items, OffsetT num_items, CompareOpT compare_op)
20 {
21 MUDA_CUB_WRAPPER_IMPL(cub::DeviceMergeSort::SortPairs(
22 d_temp_storage, temp_storage_bytes, d_keys, d_items, num_items, compare_op, _stream, false));
23 }
24
25 template <typename KeyInputIteratorT, typename ValueInputIteratorT, typename KeyIteratorT, typename ValueIteratorT, typename OffsetT, typename CompareOpT>
26 DeviceMergeSort& SortPairsCopy(KeyInputIteratorT d_input_keys,
27 ValueInputIteratorT d_input_items,
28 KeyIteratorT d_output_keys,
29 ValueIteratorT d_output_items,
30 OffsetT num_items,
31 CompareOpT compare_op)
32 {
33 MUDA_CUB_WRAPPER_IMPL(cub::DeviceMergeSort::SortPairsCopy(d_temp_storage,
34 temp_storage_bytes,
35 d_input_keys,
36 d_input_items,
37 d_output_keys,
38 d_output_items,
39 num_items,
40 compare_op,
41 _stream,
42 false));
43 }
44
45 template <typename KeyIteratorT, typename OffsetT, typename CompareOpT>
46 DeviceMergeSort& SortKeys(KeyIteratorT d_keys, OffsetT num_items, CompareOpT compare_op)
47 {
48 MUDA_CUB_WRAPPER_IMPL(cub::DeviceMergeSort::SortKeys(
49 d_temp_storage, temp_storage_bytes, d_keys, num_items, compare_op, _stream, false));
50 }
51
52 template <typename KeyInputIteratorT, typename KeyIteratorT, typename OffsetT, typename CompareOpT>
53 DeviceMergeSort& SortKeysCopy(KeyInputIteratorT d_input_keys,
54 KeyIteratorT d_output_keys,
55 OffsetT num_items,
56 CompareOpT compare_op)
57 {
58 MUDA_CUB_WRAPPER_IMPL(cub::DeviceMergeSort::SortKeysCopy(
59 d_temp_storage, temp_storage_bytes, d_input_keys, d_output_keys, num_items, compare_op, _stream, false));
60 }
61
62 template <typename KeyIteratorT, typename ValueIteratorT, typename OffsetT, typename CompareOpT>
63 DeviceMergeSort& StableSortPairs(KeyIteratorT d_keys,
64 ValueIteratorT d_items,
65 OffsetT num_items,
66 CompareOpT compare_op)
67 {
68 MUDA_CUB_WRAPPER_IMPL(cub::DeviceMergeSort::StableSortPairs(
69 d_temp_storage, temp_storage_bytes, d_keys, d_items, num_items, compare_op, _stream, false));
70 }
71
72 template <typename KeyIteratorT, typename OffsetT, typename CompareOpT>
73 DeviceMergeSort& StableSortKeys(KeyIteratorT d_keys, OffsetT num_items, CompareOpT compare_op)
74 {
75 MUDA_CUB_WRAPPER_IMPL(cub::DeviceMergeSort::StableSortKeys(
76 d_temp_storage, temp_storage_bytes, d_keys, num_items, compare_op, _stream, false));
77 }
78
79 // Origin:
80
81 template <typename KeyIteratorT, typename ValueIteratorT, typename OffsetT, typename CompareOpT>
82 DeviceMergeSort& SortPairs(void* d_temp_storage,
83 size_t& temp_storage_bytes,
84 KeyIteratorT d_keys,
85 ValueIteratorT d_items,
86 OffsetT num_items,
87 CompareOpT compare_op)
88 {
89 MUDA_CUB_WRAPPER_FOR_COMPUTE_GRAPH_IMPL(cub::DeviceMergeSort::SortPairs(
90 d_temp_storage, temp_storage_bytes, d_keys, d_items, num_items, compare_op, _stream, false));
91 }
92
93 template <typename KeyInputIteratorT, typename ValueInputIteratorT, typename KeyIteratorT, typename ValueIteratorT, typename OffsetT, typename CompareOpT>
94 DeviceMergeSort& SortPairsCopy(void* d_temp_storage,
95 size_t& temp_storage_bytes,
96 KeyInputIteratorT d_input_keys,
97 ValueInputIteratorT d_input_items,
98 KeyIteratorT d_output_keys,
99 ValueIteratorT d_output_items,
100 OffsetT num_items,
101 CompareOpT compare_op)
102 {
103 MUDA_CUB_WRAPPER_FOR_COMPUTE_GRAPH_IMPL(
104 cub::DeviceMergeSort::SortPairsCopy(d_temp_storage,
105 temp_storage_bytes,
106 d_input_keys,
107 d_input_items,
108 d_output_keys,
109 d_output_items,
110 num_items,
111 compare_op,
112 _stream,
113 false));
114 }
115
116 template <typename KeyIteratorT, typename OffsetT, typename CompareOpT>
117 DeviceMergeSort& SortKeys(void* d_temp_storage,
118 size_t& temp_storage_bytes,
119 KeyIteratorT d_keys,
120 OffsetT num_items,
121 CompareOpT compare_op)
122 {
123 MUDA_CUB_WRAPPER_FOR_COMPUTE_GRAPH_IMPL(cub::DeviceMergeSort::SortKeys(
124 d_temp_storage, temp_storage_bytes, d_keys, num_items, compare_op, _stream, false));
125 }
126
127 template <typename KeyInputIteratorT, typename KeyIteratorT, typename OffsetT, typename CompareOpT>
128 DeviceMergeSort& SortKeysCopy(void* d_temp_storage,
129 size_t& temp_storage_bytes,
130 KeyInputIteratorT d_input_keys,
131 KeyIteratorT d_output_keys,
132 OffsetT num_items,
133 CompareOpT compare_op)
134 {
135 MUDA_CUB_WRAPPER_FOR_COMPUTE_GRAPH_IMPL(cub::DeviceMergeSort::SortKeysCopy(
136 d_temp_storage, temp_storage_bytes, d_input_keys, d_output_keys, num_items, compare_op, _stream, false));
137 }
138
139 template <typename KeyIteratorT, typename ValueIteratorT, typename OffsetT, typename CompareOpT>
140 DeviceMergeSort& StableSortPairs(void* d_temp_storage,
141 size_t& temp_storage_bytes,
142 KeyIteratorT d_keys,
143 ValueIteratorT d_items,
144 OffsetT num_items,
145 CompareOpT compare_op)
146 {
147 MUDA_CUB_WRAPPER_FOR_COMPUTE_GRAPH_IMPL(cub::DeviceMergeSort::StableSortPairs(
148 d_temp_storage, temp_storage_bytes, d_keys, d_items, num_items, compare_op, _stream, false));
149 }
150
151 template <typename KeyIteratorT, typename OffsetT, typename CompareOpT>
152 DeviceMergeSort& StableSortKeys(void* d_temp_storage,
153 size_t& temp_storage_bytes,
154 KeyIteratorT d_keys,
155 OffsetT num_items,
156 CompareOpT compare_op)
157 {
158 MUDA_CUB_WRAPPER_FOR_COMPUTE_GRAPH_IMPL(cub::DeviceMergeSort::StableSortKeys(
159 d_temp_storage, temp_storage_bytes, d_keys, num_items, compare_op, _stream, false));
160 }
161};
162} // namespace muda
163#include "details/cub_wrapper_macro_undef.inl"
Definition cub_wrapper.h:14
Definition device_merge_sort.h:12
Definition launch_base.h:42