21 #ifndef ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_RADIX_SORT_ONESWEEP_HPP_ 22 #define ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_RADIX_SORT_ONESWEEP_HPP_ 24 #include "../../../type_traits.hpp" 25 #include "../device_config_helper.hpp" 26 #include <type_traits> 36 BEGIN_ROCPRIM_NAMESPACE
41 template<
unsigned int arch,
43 class value_type = rocprim::empty_type,
50 template<
class key_type,
class value_type>
52 static_cast<unsigned int>(target_arch::gfx1030),
55 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
56 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
57 && (sizeof(value_type) > 4))>>
59 kernel_config<1024, 1>,
61 block_radix_rank_algorithm::match>
65 template<
class key_type,
class value_type>
67 static_cast<unsigned int>(target_arch::gfx1030),
70 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
71 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
72 && (sizeof(value_type) > 2))>>
74 kernel_config<1024, 4>,
76 block_radix_rank_algorithm::match>
80 template<
class key_type,
class value_type>
82 static_cast<unsigned int>(target_arch::gfx1030),
85 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
86 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
87 && (sizeof(value_type) > 1))>>
89 kernel_config<1024, 4>,
91 block_radix_rank_algorithm::match>
95 template<
class key_type,
class value_type>
97 static_cast<unsigned int>(target_arch::gfx1030),
100 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
101 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
102 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
104 kernel_config<1024, 4>,
106 block_radix_rank_algorithm::match>
110 template<
class key_type,
class value_type>
112 static_cast<unsigned int>(target_arch::gfx1030),
115 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
116 && (sizeof(key_type) > 4)
117 && (std::is_same<value_type, rocprim::empty_type>::value))>>
119 kernel_config<1024, 4>,
121 block_radix_rank_algorithm::match>
125 template<
class key_type,
class value_type>
127 static_cast<unsigned int>(target_arch::gfx1030),
130 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
131 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
132 && (sizeof(value_type) > 4))>>
134 kernel_config<1024, 4>,
136 block_radix_rank_algorithm::match>
140 template<
class key_type,
class value_type>
142 static_cast<unsigned int>(target_arch::gfx1030),
145 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
146 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
147 && (sizeof(value_type) > 2))>>
149 kernel_config<1024, 8>,
151 block_radix_rank_algorithm::match>
155 template<
class key_type,
class value_type>
157 static_cast<unsigned int>(target_arch::gfx1030),
160 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
161 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
162 && (sizeof(value_type) > 1))>>
164 kernel_config<1024, 4>,
166 block_radix_rank_algorithm::match>
170 template<
class key_type,
class value_type>
172 static_cast<unsigned int>(target_arch::gfx1030),
175 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
176 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
177 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
179 kernel_config<512, 16>,
181 block_radix_rank_algorithm::match>
185 template<
class key_type,
class value_type>
187 static_cast<unsigned int>(target_arch::gfx1030),
190 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
191 && (sizeof(key_type) > 2)
192 && (std::is_same<value_type, rocprim::empty_type>::value))>>
194 kernel_config<1024, 6>,
196 block_radix_rank_algorithm::match>
200 template<
class key_type,
class value_type>
202 static_cast<unsigned int>(target_arch::gfx1030),
205 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
206 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
208 kernel_config<512, 12>,
210 block_radix_rank_algorithm::match>
214 template<
class key_type,
class value_type>
216 static_cast<unsigned int>(target_arch::gfx1030),
219 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
220 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
222 kernel_config<512, 16>,
224 block_radix_rank_algorithm::match>
228 template<
class key_type,
class value_type>
230 static_cast<unsigned int>(target_arch::gfx1030),
233 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
234 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
236 kernel_config<512, 16>,
238 block_radix_rank_algorithm::match>
242 template<
class key_type,
class value_type>
244 static_cast<unsigned int>(target_arch::gfx1030),
247 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
248 && (sizeof(value_type) <= 1)
249 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
250 : radix_sort_onesweep_config<kernel_config<256, 18>,
251 kernel_config<256, 18>,
253 block_radix_rank_algorithm::match>
257 template<class key_type, class value_type>
258 struct default_radix_sort_onesweep_config<
259 static_cast<unsigned int>(target_arch::gfx1030),
262 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
263 && (std::is_same<value_type, rocprim::empty_type>::value))>>
264 : radix_sort_onesweep_config<kernel_config<512, 12>,
265 kernel_config<512, 12>,
267 block_radix_rank_algorithm::match>
271 template<class key_type, class value_type>
272 struct default_radix_sort_onesweep_config<
273 static_cast<unsigned int>(target_arch::gfx1030),
276 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
277 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
278 && (sizeof(value_type) > 4))>>
279 : radix_sort_onesweep_config<kernel_config<1024, 1>,
280 kernel_config<1024, 1>,
282 block_radix_rank_algorithm::match>
286 template<class key_type, class value_type>
287 struct default_radix_sort_onesweep_config<
288 static_cast<unsigned int>(target_arch::gfx1030),
291 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
292 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
293 && (sizeof(value_type) > 2))>>
294 : radix_sort_onesweep_config<kernel_config<1024, 1>,
295 kernel_config<1024, 1>,
297 block_radix_rank_algorithm::match>
301 template<class key_type, class value_type>
302 struct default_radix_sort_onesweep_config<
303 static_cast<unsigned int>(target_arch::gfx1030),
306 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
307 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
308 && (sizeof(value_type) > 1))>>
309 : radix_sort_onesweep_config<kernel_config<1024, 4>,
310 kernel_config<1024, 4>,
312 block_radix_rank_algorithm::match>
316 template<class key_type, class value_type>
317 struct default_radix_sort_onesweep_config<
318 static_cast<unsigned int>(target_arch::gfx1030),
321 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
322 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
323 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
324 : radix_sort_onesweep_config<kernel_config<1024, 4>,
325 kernel_config<1024, 4>,
327 block_radix_rank_algorithm::match>
331 template<class key_type, class value_type>
332 struct default_radix_sort_onesweep_config<
333 static_cast<unsigned int>(target_arch::gfx1030),
336 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
337 && (sizeof(key_type) > 4)
338 && (std::is_same<value_type, rocprim::empty_type>::value))>>
339 : radix_sort_onesweep_config<kernel_config<1024, 4>,
340 kernel_config<1024, 4>,
342 block_radix_rank_algorithm::match>
346 template<class key_type, class value_type>
347 struct default_radix_sort_onesweep_config<
348 static_cast<unsigned int>(target_arch::gfx1030),
351 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
352 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
353 && (sizeof(value_type) > 4))>>
354 : radix_sort_onesweep_config<kernel_config<1024, 1>,
355 kernel_config<1024, 1>,
357 block_radix_rank_algorithm::match>
361 template<class key_type, class value_type>
362 struct default_radix_sort_onesweep_config<
363 static_cast<unsigned int>(target_arch::gfx1030),
366 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
367 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
368 && (sizeof(value_type) > 2))>>
369 : radix_sort_onesweep_config<kernel_config<1024, 4>,
370 kernel_config<1024, 4>,
372 block_radix_rank_algorithm::match>
376 template<class key_type, class value_type>
377 struct default_radix_sort_onesweep_config<
378 static_cast<unsigned int>(target_arch::gfx1030),
381 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
382 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
383 && (sizeof(value_type) > 1))>>
384 : radix_sort_onesweep_config<kernel_config<1024, 4>,
385 kernel_config<1024, 4>,
387 block_radix_rank_algorithm::match>
391 template<class key_type, class value_type>
392 struct default_radix_sort_onesweep_config<
393 static_cast<unsigned int>(target_arch::gfx1030),
396 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
397 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
398 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
399 : radix_sort_onesweep_config<kernel_config<1024, 4>,
400 kernel_config<1024, 4>,
402 block_radix_rank_algorithm::match>
406 template<class key_type, class value_type>
407 struct default_radix_sort_onesweep_config<
408 static_cast<unsigned int>(target_arch::gfx1030),
411 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
412 && (sizeof(key_type) > 2)
413 && (std::is_same<value_type, rocprim::empty_type>::value))>>
414 : radix_sort_onesweep_config<kernel_config<1024, 4>,
415 kernel_config<1024, 4>,
417 block_radix_rank_algorithm::match>
421 template<class key_type, class value_type>
422 struct default_radix_sort_onesweep_config<
423 static_cast<unsigned int>(target_arch::gfx1030),
426 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
427 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
428 && (sizeof(value_type) > 4))>>
429 : radix_sort_onesweep_config<kernel_config<1024, 4>,
430 kernel_config<1024, 4>,
432 block_radix_rank_algorithm::match>
436 template<class key_type, class value_type>
437 struct default_radix_sort_onesweep_config<
438 static_cast<unsigned int>(target_arch::gfx1030),
441 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
442 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
443 && (sizeof(value_type) > 2))>>
444 : radix_sort_onesweep_config<kernel_config<1024, 8>,
445 kernel_config<1024, 8>,
447 block_radix_rank_algorithm::match>
451 template<class key_type, class value_type>
452 struct default_radix_sort_onesweep_config<
453 static_cast<unsigned int>(target_arch::gfx1030),
456 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
457 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
458 && (sizeof(value_type) > 1))>>
459 : radix_sort_onesweep_config<kernel_config<1024, 4>,
460 kernel_config<1024, 4>,
462 block_radix_rank_algorithm::match>
466 template<class key_type, class value_type>
467 struct default_radix_sort_onesweep_config<
468 static_cast<unsigned int>(target_arch::gfx1030),
471 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
472 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1)
473 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
474 : radix_sort_onesweep_config<kernel_config<512, 16>,
475 kernel_config<512, 16>,
477 block_radix_rank_algorithm::match>
481 template<class key_type, class value_type>
482 struct default_radix_sort_onesweep_config<
483 static_cast<unsigned int>(target_arch::gfx1030),
486 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
487 && (sizeof(key_type) > 1)
488 && (std::is_same<value_type, rocprim::empty_type>::value))>>
489 : radix_sort_onesweep_config<kernel_config<512, 22>,
490 kernel_config<512, 22>,
492 block_radix_rank_algorithm::match>
496 template<class key_type, class value_type>
497 struct default_radix_sort_onesweep_config<
498 static_cast<unsigned int>(target_arch::gfx1030),
501 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
502 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
503 : radix_sort_onesweep_config<kernel_config<512, 12>,
504 kernel_config<512, 12>,
506 block_radix_rank_algorithm::match>
510 template<class key_type, class value_type>
511 struct default_radix_sort_onesweep_config<
512 static_cast<unsigned int>(target_arch::gfx1030),
515 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
516 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
517 : radix_sort_onesweep_config<kernel_config<1024, 12>,
518 kernel_config<1024, 12>,
520 block_radix_rank_algorithm::match>
524 template<class key_type, class value_type>
525 struct default_radix_sort_onesweep_config<
526 static_cast<unsigned int>(target_arch::gfx1030),
529 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
530 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
531 : radix_sort_onesweep_config<kernel_config<1024, 12>,
532 kernel_config<1024, 12>,
534 block_radix_rank_algorithm::match>
538 template<class key_type, class value_type>
539 struct default_radix_sort_onesweep_config<
540 static_cast<unsigned int>(target_arch::gfx1030),
543 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
544 && (sizeof(value_type) <= 1)
545 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
546 : radix_sort_onesweep_config<kernel_config<256, 22>,
547 kernel_config<256, 22>,
549 block_radix_rank_algorithm::match>
553 template<class key_type, class value_type>
554 struct default_radix_sort_onesweep_config<
555 static_cast<unsigned int>(target_arch::gfx1030),
558 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
559 && (std::is_same<value_type, rocprim::empty_type>::value))>>
560 : radix_sort_onesweep_config<kernel_config<256, 18>,
561 kernel_config<256, 18>,
563 block_radix_rank_algorithm::match>
567 template<class key_type, class value_type>
568 struct default_radix_sort_onesweep_config<
569 static_cast<unsigned int>(target_arch::gfx900),
572 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
573 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
574 && (sizeof(value_type) > 4))>>
575 : radix_sort_onesweep_config<kernel_config<512, 8>,
576 kernel_config<512, 8>,
578 block_radix_rank_algorithm::match>
582 template<class key_type, class value_type>
583 struct default_radix_sort_onesweep_config<
584 static_cast<unsigned int>(target_arch::gfx900),
587 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
588 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
589 && (sizeof(value_type) > 2))>>
590 : radix_sort_onesweep_config<kernel_config<512, 4>,
591 kernel_config<512, 4>,
593 block_radix_rank_algorithm::match>
597 template<class key_type, class value_type>
598 struct default_radix_sort_onesweep_config<
599 static_cast<unsigned int>(target_arch::gfx900),
602 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
603 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
604 && (sizeof(value_type) > 1))>>
605 : radix_sort_onesweep_config<kernel_config<512, 12>,
606 kernel_config<512, 12>,
608 block_radix_rank_algorithm::match>
612 template<class key_type, class value_type>
613 struct default_radix_sort_onesweep_config<
614 static_cast<unsigned int>(target_arch::gfx900),
617 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
618 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
619 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
620 : radix_sort_onesweep_config<kernel_config<512, 6>,
621 kernel_config<512, 6>,
623 block_radix_rank_algorithm::match>
627 template<class key_type, class value_type>
628 struct default_radix_sort_onesweep_config<
629 static_cast<unsigned int>(target_arch::gfx900),
632 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
633 && (sizeof(key_type) > 4)
634 && (std::is_same<value_type, rocprim::empty_type>::value))>>
635 : radix_sort_onesweep_config<kernel_config<512, 12>,
636 kernel_config<512, 12>,
638 block_radix_rank_algorithm::match>
642 template<class key_type, class value_type>
643 struct default_radix_sort_onesweep_config<
644 static_cast<unsigned int>(target_arch::gfx900),
647 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
648 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
649 && (sizeof(value_type) > 4))>>
650 : radix_sort_onesweep_config<kernel_config<512, 8>,
651 kernel_config<512, 8>,
653 block_radix_rank_algorithm::match>
657 template<class key_type, class value_type>
658 struct default_radix_sort_onesweep_config<
659 static_cast<unsigned int>(target_arch::gfx900),
662 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
663 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
664 && (sizeof(value_type) > 2))>>
665 : radix_sort_onesweep_config<kernel_config<512, 16>,
666 kernel_config<512, 16>,
668 block_radix_rank_algorithm::match>
672 template<class key_type, class value_type>
673 struct default_radix_sort_onesweep_config<
674 static_cast<unsigned int>(target_arch::gfx900),
677 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
678 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
679 && (sizeof(value_type) > 1))>>
680 : radix_sort_onesweep_config<kernel_config<512, 6>,
681 kernel_config<512, 6>,
683 block_radix_rank_algorithm::match>
687 template<class key_type, class value_type>
688 struct default_radix_sort_onesweep_config<
689 static_cast<unsigned int>(target_arch::gfx900),
692 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
693 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
694 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
695 : radix_sort_onesweep_config<kernel_config<512, 8>,
696 kernel_config<512, 8>,
698 block_radix_rank_algorithm::match>
702 template<class key_type, class value_type>
703 struct default_radix_sort_onesweep_config<
704 static_cast<unsigned int>(target_arch::gfx900),
707 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
708 && (sizeof(key_type) > 2)
709 && (std::is_same<value_type, rocprim::empty_type>::value))>>
710 : radix_sort_onesweep_config<kernel_config<512, 8>,
711 kernel_config<512, 8>,
713 block_radix_rank_algorithm::match>
717 template<class key_type, class value_type>
718 struct default_radix_sort_onesweep_config<
719 static_cast<unsigned int>(target_arch::gfx900),
722 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
723 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
724 : radix_sort_onesweep_config<kernel_config<512, 6>,
725 kernel_config<512, 6>,
727 block_radix_rank_algorithm::match>
731 template<class key_type, class value_type>
732 struct default_radix_sort_onesweep_config<
733 static_cast<unsigned int>(target_arch::gfx900),
736 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
737 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
738 : radix_sort_onesweep_config<kernel_config<256, 16>,
739 kernel_config<256, 16>,
741 block_radix_rank_algorithm::match>
745 template<class key_type, class value_type>
746 struct default_radix_sort_onesweep_config<
747 static_cast<unsigned int>(target_arch::gfx900),
750 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
751 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
752 : radix_sort_onesweep_config<kernel_config<256, 16>,
753 kernel_config<256, 16>,
755 block_radix_rank_algorithm::match>
759 template<class key_type, class value_type>
760 struct default_radix_sort_onesweep_config<
761 static_cast<unsigned int>(target_arch::gfx900),
764 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
765 && (sizeof(value_type) <= 1)
766 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
767 : radix_sort_onesweep_config<kernel_config<256, 16>,
768 kernel_config<256, 16>,
770 block_radix_rank_algorithm::match>
774 template<class key_type, class value_type>
775 struct default_radix_sort_onesweep_config<
776 static_cast<unsigned int>(target_arch::gfx900),
779 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
780 && (std::is_same<value_type, rocprim::empty_type>::value))>>
781 : radix_sort_onesweep_config<kernel_config<256, 16>,
782 kernel_config<256, 16>,
784 block_radix_rank_algorithm::match>
788 template<class key_type, class value_type>
789 struct default_radix_sort_onesweep_config<
790 static_cast<unsigned int>(target_arch::gfx900),
793 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
794 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
795 && (sizeof(value_type) > 4))>>
796 : radix_sort_onesweep_config<kernel_config<256, 22>,
797 kernel_config<256, 22>,
799 block_radix_rank_algorithm::match>
803 template<class key_type, class value_type>
804 struct default_radix_sort_onesweep_config<
805 static_cast<unsigned int>(target_arch::gfx900),
808 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
809 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
810 && (sizeof(value_type) > 2))>>
811 : radix_sort_onesweep_config<kernel_config<512, 8>,
812 kernel_config<512, 8>,
814 block_radix_rank_algorithm::match>
818 template<class key_type, class value_type>
819 struct default_radix_sort_onesweep_config<
820 static_cast<unsigned int>(target_arch::gfx900),
823 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
824 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
825 && (sizeof(value_type) > 1))>>
826 : radix_sort_onesweep_config<kernel_config<512, 12>,
827 kernel_config<512, 12>,
829 block_radix_rank_algorithm::match>
833 template<class key_type, class value_type>
834 struct default_radix_sort_onesweep_config<
835 static_cast<unsigned int>(target_arch::gfx900),
838 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
839 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
840 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
841 : radix_sort_onesweep_config<kernel_config<256, 18>,
842 kernel_config<256, 18>,
844 block_radix_rank_algorithm::match>
848 template<class key_type, class value_type>
849 struct default_radix_sort_onesweep_config<
850 static_cast<unsigned int>(target_arch::gfx900),
853 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
854 && (sizeof(key_type) > 4)
855 && (std::is_same<value_type, rocprim::empty_type>::value))>>
856 : radix_sort_onesweep_config<kernel_config<1024, 4>,
857 kernel_config<1024, 4>,
859 block_radix_rank_algorithm::match>
863 template<class key_type, class value_type>
864 struct default_radix_sort_onesweep_config<
865 static_cast<unsigned int>(target_arch::gfx900),
868 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
869 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
870 && (sizeof(value_type) > 4))>>
871 : radix_sort_onesweep_config<kernel_config<256, 16>,
872 kernel_config<256, 16>,
874 block_radix_rank_algorithm::match>
878 template<class key_type, class value_type>
879 struct default_radix_sort_onesweep_config<
880 static_cast<unsigned int>(target_arch::gfx900),
883 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
884 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
885 && (sizeof(value_type) > 2))>>
886 : radix_sort_onesweep_config<kernel_config<1024, 12>,
887 kernel_config<1024, 12>,
889 block_radix_rank_algorithm::basic>
893 template<class key_type, class value_type>
894 struct default_radix_sort_onesweep_config<
895 static_cast<unsigned int>(target_arch::gfx900),
898 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
899 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
900 && (sizeof(value_type) > 1))>>
901 : radix_sort_onesweep_config<kernel_config<512, 16>,
902 kernel_config<512, 16>,
904 block_radix_rank_algorithm::match>
908 template<class key_type, class value_type>
909 struct default_radix_sort_onesweep_config<
910 static_cast<unsigned int>(target_arch::gfx900),
913 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
914 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
915 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
916 : radix_sort_onesweep_config<kernel_config<512, 22>,
917 kernel_config<512, 22>,
919 block_radix_rank_algorithm::match>
923 template<class key_type, class value_type>
924 struct default_radix_sort_onesweep_config<
925 static_cast<unsigned int>(target_arch::gfx900),
928 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
929 && (sizeof(key_type) > 2)
930 && (std::is_same<value_type, rocprim::empty_type>::value))>>
931 : radix_sort_onesweep_config<kernel_config<256, 18>,
932 kernel_config<256, 18>,
934 block_radix_rank_algorithm::match>
938 template<class key_type, class value_type>
939 struct default_radix_sort_onesweep_config<
940 static_cast<unsigned int>(target_arch::gfx900),
943 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
944 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
945 && (sizeof(value_type) > 4))>>
946 : radix_sort_onesweep_config<kernel_config<256, 12>,
947 kernel_config<256, 12>,
949 block_radix_rank_algorithm::match>
953 template<class key_type, class value_type>
954 struct default_radix_sort_onesweep_config<
955 static_cast<unsigned int>(target_arch::gfx900),
958 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
959 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
960 && (sizeof(value_type) > 2))>>
961 : radix_sort_onesweep_config<kernel_config<256, 8>,
962 kernel_config<256, 8>,
964 block_radix_rank_algorithm::match>
968 template<class key_type, class value_type>
969 struct default_radix_sort_onesweep_config<
970 static_cast<unsigned int>(target_arch::gfx900),
973 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
974 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
975 && (sizeof(value_type) > 1))>>
976 : radix_sort_onesweep_config<kernel_config<256, 18>,
977 kernel_config<256, 18>,
979 block_radix_rank_algorithm::match>
983 template<class key_type, class value_type>
984 struct default_radix_sort_onesweep_config<
985 static_cast<unsigned int>(target_arch::gfx900),
988 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
989 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1)
990 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
991 : radix_sort_onesweep_config<kernel_config<512, 8>,
992 kernel_config<512, 8>,
994 block_radix_rank_algorithm::match>
998 template<class key_type, class value_type>
999 struct default_radix_sort_onesweep_config<
1000 static_cast<unsigned int>(target_arch::gfx900),
1003 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1004 && (sizeof(key_type) > 1)
1005 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1006 : radix_sort_onesweep_config<kernel_config<512, 12>,
1007 kernel_config<512, 12>,
1009 block_radix_rank_algorithm::match>
1013 template<class key_type, class value_type>
1014 struct default_radix_sort_onesweep_config<
1015 static_cast<unsigned int>(target_arch::gfx900),
1018 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1019 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1020 : radix_sort_onesweep_config<kernel_config<256, 22>,
1021 kernel_config<256, 22>,
1023 block_radix_rank_algorithm::match>
1027 template<class key_type, class value_type>
1028 struct default_radix_sort_onesweep_config<
1029 static_cast<unsigned int>(target_arch::gfx900),
1032 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1033 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1034 : radix_sort_onesweep_config<kernel_config<512, 22>,
1035 kernel_config<512, 22>,
1037 block_radix_rank_algorithm::match>
1041 template<class key_type, class value_type>
1042 struct default_radix_sort_onesweep_config<
1043 static_cast<unsigned int>(target_arch::gfx900),
1046 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1047 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1048 : radix_sort_onesweep_config<kernel_config<256, 18>,
1049 kernel_config<256, 18>,
1051 block_radix_rank_algorithm::match>
1055 template<class key_type, class value_type>
1056 struct default_radix_sort_onesweep_config<
1057 static_cast<unsigned int>(target_arch::gfx900),
1060 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1061 && (sizeof(value_type) <= 1)
1062 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1063 : radix_sort_onesweep_config<kernel_config<256, 22>,
1064 kernel_config<256, 22>,
1066 block_radix_rank_algorithm::match>
1070 template<class key_type, class value_type>
1071 struct default_radix_sort_onesweep_config<
1072 static_cast<unsigned int>(target_arch::gfx900),
1075 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1076 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1077 : radix_sort_onesweep_config<kernel_config<256, 16>,
1078 kernel_config<256, 16>,
1080 block_radix_rank_algorithm::match>
1084 template<class key_type, class value_type>
1085 struct default_radix_sort_onesweep_config<
1086 static_cast<unsigned int>(target_arch::gfx908),
1089 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1090 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1091 && (sizeof(value_type) > 4))>>
1092 : radix_sort_onesweep_config<kernel_config<1024, 6>,
1093 kernel_config<1024, 6>,
1095 block_radix_rank_algorithm::match>
1099 template<class key_type, class value_type>
1100 struct default_radix_sort_onesweep_config<
1101 static_cast<unsigned int>(target_arch::gfx908),
1104 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1105 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1106 && (sizeof(value_type) > 2))>>
1107 : radix_sort_onesweep_config<kernel_config<256, 12>,
1108 kernel_config<256, 12>,
1110 block_radix_rank_algorithm::match>
1114 template<class key_type, class value_type>
1115 struct default_radix_sort_onesweep_config<
1116 static_cast<unsigned int>(target_arch::gfx908),
1119 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1120 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1121 && (sizeof(value_type) > 1))>>
1122 : radix_sort_onesweep_config<kernel_config<256, 12>,
1123 kernel_config<256, 12>,
1125 block_radix_rank_algorithm::match>
1129 template<class key_type, class value_type>
1130 struct default_radix_sort_onesweep_config<
1131 static_cast<unsigned int>(target_arch::gfx908),
1134 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1135 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
1136 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1137 : radix_sort_onesweep_config<kernel_config<512, 6>,
1138 kernel_config<512, 6>,
1140 block_radix_rank_algorithm::match>
1144 template<class key_type, class value_type>
1145 struct default_radix_sort_onesweep_config<
1146 static_cast<unsigned int>(target_arch::gfx908),
1149 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1150 && (sizeof(key_type) > 4)
1151 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1152 : radix_sort_onesweep_config<kernel_config<512, 6>,
1153 kernel_config<512, 6>,
1155 block_radix_rank_algorithm::match>
1159 template<class key_type, class value_type>
1160 struct default_radix_sort_onesweep_config<
1161 static_cast<unsigned int>(target_arch::gfx908),
1164 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1165 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1166 && (sizeof(value_type) > 4))>>
1167 : radix_sort_onesweep_config<kernel_config<1024, 6>,
1168 kernel_config<1024, 6>,
1170 block_radix_rank_algorithm::match>
1174 template<class key_type, class value_type>
1175 struct default_radix_sort_onesweep_config<
1176 static_cast<unsigned int>(target_arch::gfx908),
1179 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1180 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1181 && (sizeof(value_type) > 2))>>
1182 : radix_sort_onesweep_config<kernel_config<256, 22>,
1183 kernel_config<256, 22>,
1185 block_radix_rank_algorithm::match>
1189 template<class key_type, class value_type>
1190 struct default_radix_sort_onesweep_config<
1191 static_cast<unsigned int>(target_arch::gfx908),
1194 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1195 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1196 && (sizeof(value_type) > 1))>>
1197 : radix_sort_onesweep_config<kernel_config<256, 22>,
1198 kernel_config<256, 22>,
1200 block_radix_rank_algorithm::match>
1204 template<class key_type, class value_type>
1205 struct default_radix_sort_onesweep_config<
1206 static_cast<unsigned int>(target_arch::gfx908),
1209 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1210 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
1211 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1212 : radix_sort_onesweep_config<kernel_config<256, 22>,
1213 kernel_config<256, 22>,
1215 block_radix_rank_algorithm::match>
1219 template<class key_type, class value_type>
1220 struct default_radix_sort_onesweep_config<
1221 static_cast<unsigned int>(target_arch::gfx908),
1224 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1225 && (sizeof(key_type) > 2)
1226 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1227 : radix_sort_onesweep_config<kernel_config<256, 22>,
1228 kernel_config<256, 22>,
1230 block_radix_rank_algorithm::match>
1234 template<class key_type, class value_type>
1235 struct default_radix_sort_onesweep_config<
1236 static_cast<unsigned int>(target_arch::gfx908),
1239 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1240 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1241 : radix_sort_onesweep_config<kernel_config<256, 12>,
1242 kernel_config<256, 12>,
1244 block_radix_rank_algorithm::match>
1248 template<class key_type, class value_type>
1249 struct default_radix_sort_onesweep_config<
1250 static_cast<unsigned int>(target_arch::gfx908),
1253 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1254 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1255 : radix_sort_onesweep_config<kernel_config<256, 16>,
1256 kernel_config<256, 16>,
1258 block_radix_rank_algorithm::match>
1262 template<class key_type, class value_type>
1263 struct default_radix_sort_onesweep_config<
1264 static_cast<unsigned int>(target_arch::gfx908),
1267 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1268 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1269 : radix_sort_onesweep_config<kernel_config<256, 16>,
1270 kernel_config<256, 16>,
1272 block_radix_rank_algorithm::match>
1276 template<class key_type, class value_type>
1277 struct default_radix_sort_onesweep_config<
1278 static_cast<unsigned int>(target_arch::gfx908),
1281 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1282 && (sizeof(value_type) <= 1)
1283 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1284 : radix_sort_onesweep_config<kernel_config<256, 16>,
1285 kernel_config<256, 16>,
1287 block_radix_rank_algorithm::match>
1291 template<class key_type, class value_type>
1292 struct default_radix_sort_onesweep_config<
1293 static_cast<unsigned int>(target_arch::gfx908),
1296 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1297 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1298 : radix_sort_onesweep_config<kernel_config<256, 16>,
1299 kernel_config<256, 16>,
1301 block_radix_rank_algorithm::match>
1305 template<class key_type, class value_type>
1306 struct default_radix_sort_onesweep_config<
1307 static_cast<unsigned int>(target_arch::gfx908),
1310 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1311 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1312 && (sizeof(value_type) > 4))>>
1313 : radix_sort_onesweep_config<kernel_config<1024, 6>,
1314 kernel_config<1024, 6>,
1316 block_radix_rank_algorithm::match>
1320 template<class key_type, class value_type>
1321 struct default_radix_sort_onesweep_config<
1322 static_cast<unsigned int>(target_arch::gfx908),
1325 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1326 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1327 && (sizeof(value_type) > 2))>>
1328 : radix_sort_onesweep_config<kernel_config<256, 12>,
1329 kernel_config<256, 12>,
1331 block_radix_rank_algorithm::match>
1335 template<class key_type, class value_type>
1336 struct default_radix_sort_onesweep_config<
1337 static_cast<unsigned int>(target_arch::gfx908),
1340 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1341 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1342 && (sizeof(value_type) > 1))>>
1343 : radix_sort_onesweep_config<kernel_config<256, 12>,
1344 kernel_config<256, 12>,
1346 block_radix_rank_algorithm::match>
1350 template<class key_type, class value_type>
1351 struct default_radix_sort_onesweep_config<
1352 static_cast<unsigned int>(target_arch::gfx908),
1355 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1356 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
1357 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1358 : radix_sort_onesweep_config<kernel_config<512, 6>,
1359 kernel_config<512, 6>,
1361 block_radix_rank_algorithm::match>
1365 template<class key_type, class value_type>
1366 struct default_radix_sort_onesweep_config<
1367 static_cast<unsigned int>(target_arch::gfx908),
1370 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1371 && (sizeof(key_type) > 4)
1372 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1373 : radix_sort_onesweep_config<kernel_config<256, 12>,
1374 kernel_config<256, 12>,
1376 block_radix_rank_algorithm::match>
1380 template<class key_type, class value_type>
1381 struct default_radix_sort_onesweep_config<
1382 static_cast<unsigned int>(target_arch::gfx908),
1385 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1386 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1387 && (sizeof(value_type) > 4))>>
1388 : radix_sort_onesweep_config<kernel_config<256, 12>,
1389 kernel_config<256, 12>,
1391 block_radix_rank_algorithm::match>
1395 template<class key_type, class value_type>
1396 struct default_radix_sort_onesweep_config<
1397 static_cast<unsigned int>(target_arch::gfx908),
1400 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1401 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1402 && (sizeof(value_type) > 2))>>
1403 : radix_sort_onesweep_config<kernel_config<512, 12>,
1404 kernel_config<512, 12>,
1406 block_radix_rank_algorithm::match>
1410 template<class key_type, class value_type>
1411 struct default_radix_sort_onesweep_config<
1412 static_cast<unsigned int>(target_arch::gfx908),
1415 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1416 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1417 && (sizeof(value_type) > 1))>>
1418 : radix_sort_onesweep_config<kernel_config<256, 16>,
1419 kernel_config<256, 16>,
1421 block_radix_rank_algorithm::match>
1425 template<class key_type, class value_type>
1426 struct default_radix_sort_onesweep_config<
1427 static_cast<unsigned int>(target_arch::gfx908),
1430 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1431 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
1432 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1433 : radix_sort_onesweep_config<kernel_config<256, 22>,
1434 kernel_config<256, 22>,
1436 block_radix_rank_algorithm::match>
1440 template<class key_type, class value_type>
1441 struct default_radix_sort_onesweep_config<
1442 static_cast<unsigned int>(target_arch::gfx908),
1445 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1446 && (sizeof(key_type) > 2)
1447 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1448 : radix_sort_onesweep_config<kernel_config<256, 22>,
1449 kernel_config<256, 22>,
1451 block_radix_rank_algorithm::match>
1455 template<class key_type, class value_type>
1456 struct default_radix_sort_onesweep_config<
1457 static_cast<unsigned int>(target_arch::gfx908),
1460 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1461 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
1462 && (sizeof(value_type) > 4))>>
1463 : radix_sort_onesweep_config<kernel_config<256, 18>,
1464 kernel_config<256, 18>,
1466 block_radix_rank_algorithm::match>
1470 template<class key_type, class value_type>
1471 struct default_radix_sort_onesweep_config<
1472 static_cast<unsigned int>(target_arch::gfx908),
1475 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1476 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
1477 && (sizeof(value_type) > 2))>>
1478 : radix_sort_onesweep_config<kernel_config<256, 18>,
1479 kernel_config<256, 18>,
1481 block_radix_rank_algorithm::match>
1485 template<class key_type, class value_type>
1486 struct default_radix_sort_onesweep_config<
1487 static_cast<unsigned int>(target_arch::gfx908),
1490 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1491 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
1492 && (sizeof(value_type) > 1))>>
1493 : radix_sort_onesweep_config<kernel_config<1024, 22>,
1494 kernel_config<1024, 22>,
1496 block_radix_rank_algorithm::match>
1500 template<class key_type, class value_type>
1501 struct default_radix_sort_onesweep_config<
1502 static_cast<unsigned int>(target_arch::gfx908),
1505 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1506 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1)
1507 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1508 : radix_sort_onesweep_config<kernel_config<256, 18>,
1509 kernel_config<256, 18>,
1511 block_radix_rank_algorithm::match>
1515 template<class key_type, class value_type>
1516 struct default_radix_sort_onesweep_config<
1517 static_cast<unsigned int>(target_arch::gfx908),
1520 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1521 && (sizeof(key_type) > 1)
1522 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1523 : radix_sort_onesweep_config<kernel_config<256, 22>,
1524 kernel_config<256, 22>,
1526 block_radix_rank_algorithm::match>
1530 template<class key_type, class value_type>
1531 struct default_radix_sort_onesweep_config<
1532 static_cast<unsigned int>(target_arch::gfx908),
1535 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1536 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1537 : radix_sort_onesweep_config<kernel_config<512, 6>,
1538 kernel_config<512, 6>,
1540 block_radix_rank_algorithm::match>
1544 template<class key_type, class value_type>
1545 struct default_radix_sort_onesweep_config<
1546 static_cast<unsigned int>(target_arch::gfx908),
1549 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1550 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1551 : radix_sort_onesweep_config<kernel_config<256, 22>,
1552 kernel_config<256, 22>,
1554 block_radix_rank_algorithm::match>
1558 template<class key_type, class value_type>
1559 struct default_radix_sort_onesweep_config<
1560 static_cast<unsigned int>(target_arch::gfx908),
1563 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1564 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1565 : radix_sort_onesweep_config<kernel_config<256, 16>,
1566 kernel_config<256, 16>,
1568 block_radix_rank_algorithm::match>
1572 template<class key_type, class value_type>
1573 struct default_radix_sort_onesweep_config<
1574 static_cast<unsigned int>(target_arch::gfx908),
1577 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1578 && (sizeof(value_type) <= 1)
1579 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1580 : radix_sort_onesweep_config<kernel_config<1024, 22>,
1581 kernel_config<1024, 22>,
1583 block_radix_rank_algorithm::basic>
1587 template<class key_type, class value_type>
1588 struct default_radix_sort_onesweep_config<
1589 static_cast<unsigned int>(target_arch::gfx908),
1592 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1593 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1594 : radix_sort_onesweep_config<kernel_config<256, 16>,
1595 kernel_config<256, 16>,
1597 block_radix_rank_algorithm::match>
1601 template<class key_type, class value_type>
1602 struct default_radix_sort_onesweep_config<
1603 static_cast<unsigned int>(target_arch::unknown),
1606 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1607 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1608 && (sizeof(value_type) > 4))>>
1609 : radix_sort_onesweep_config<kernel_config<1024, 6>,
1610 kernel_config<1024, 6>,
1612 block_radix_rank_algorithm::match>
1616 template<class key_type, class value_type>
1617 struct default_radix_sort_onesweep_config<
1618 static_cast<unsigned int>(target_arch::unknown),
1621 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1622 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1623 && (sizeof(value_type) > 2))>>
1624 : radix_sort_onesweep_config<kernel_config<256, 12>,
1625 kernel_config<256, 12>,
1627 block_radix_rank_algorithm::match>
1631 template<class key_type, class value_type>
1632 struct default_radix_sort_onesweep_config<
1633 static_cast<unsigned int>(target_arch::unknown),
1636 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1637 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1638 && (sizeof(value_type) > 1))>>
1639 : radix_sort_onesweep_config<kernel_config<256, 12>,
1640 kernel_config<256, 12>,
1642 block_radix_rank_algorithm::match>
1646 template<class key_type, class value_type>
1647 struct default_radix_sort_onesweep_config<
1648 static_cast<unsigned int>(target_arch::unknown),
1651 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1652 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
1653 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1654 : radix_sort_onesweep_config<kernel_config<512, 6>,
1655 kernel_config<512, 6>,
1657 block_radix_rank_algorithm::match>
1661 template<class key_type, class value_type>
1662 struct default_radix_sort_onesweep_config<
1663 static_cast<unsigned int>(target_arch::unknown),
1666 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1667 && (sizeof(key_type) > 4)
1668 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1669 : radix_sort_onesweep_config<kernel_config<512, 6>,
1670 kernel_config<512, 6>,
1672 block_radix_rank_algorithm::match>
1676 template<class key_type, class value_type>
1677 struct default_radix_sort_onesweep_config<
1678 static_cast<unsigned int>(target_arch::unknown),
1681 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1682 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1683 && (sizeof(value_type) > 4))>>
1684 : radix_sort_onesweep_config<kernel_config<1024, 6>,
1685 kernel_config<1024, 6>,
1687 block_radix_rank_algorithm::match>
1691 template<class key_type, class value_type>
1692 struct default_radix_sort_onesweep_config<
1693 static_cast<unsigned int>(target_arch::unknown),
1696 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1697 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1698 && (sizeof(value_type) > 2))>>
1699 : radix_sort_onesweep_config<kernel_config<256, 22>,
1700 kernel_config<256, 22>,
1702 block_radix_rank_algorithm::match>
1706 template<class key_type, class value_type>
1707 struct default_radix_sort_onesweep_config<
1708 static_cast<unsigned int>(target_arch::unknown),
1711 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1712 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1713 && (sizeof(value_type) > 1))>>
1714 : radix_sort_onesweep_config<kernel_config<256, 22>,
1715 kernel_config<256, 22>,
1717 block_radix_rank_algorithm::match>
1721 template<class key_type, class value_type>
1722 struct default_radix_sort_onesweep_config<
1723 static_cast<unsigned int>(target_arch::unknown),
1726 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1727 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
1728 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1729 : radix_sort_onesweep_config<kernel_config<256, 22>,
1730 kernel_config<256, 22>,
1732 block_radix_rank_algorithm::match>
1736 template<class key_type, class value_type>
1737 struct default_radix_sort_onesweep_config<
1738 static_cast<unsigned int>(target_arch::unknown),
1741 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1742 && (sizeof(key_type) > 2)
1743 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1744 : radix_sort_onesweep_config<kernel_config<256, 22>,
1745 kernel_config<256, 22>,
1747 block_radix_rank_algorithm::match>
1751 template<class key_type, class value_type>
1752 struct default_radix_sort_onesweep_config<
1753 static_cast<unsigned int>(target_arch::unknown),
1756 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1757 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1758 : radix_sort_onesweep_config<kernel_config<256, 12>,
1759 kernel_config<256, 12>,
1761 block_radix_rank_algorithm::match>
1765 template<class key_type, class value_type>
1766 struct default_radix_sort_onesweep_config<
1767 static_cast<unsigned int>(target_arch::unknown),
1770 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1771 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1772 : radix_sort_onesweep_config<kernel_config<256, 16>,
1773 kernel_config<256, 16>,
1775 block_radix_rank_algorithm::match>
1779 template<class key_type, class value_type>
1780 struct default_radix_sort_onesweep_config<
1781 static_cast<unsigned int>(target_arch::unknown),
1784 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1785 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1786 : radix_sort_onesweep_config<kernel_config<256, 16>,
1787 kernel_config<256, 16>,
1789 block_radix_rank_algorithm::match>
1793 template<class key_type, class value_type>
1794 struct default_radix_sort_onesweep_config<
1795 static_cast<unsigned int>(target_arch::unknown),
1798 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1799 && (sizeof(value_type) <= 1)
1800 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1801 : radix_sort_onesweep_config<kernel_config<256, 16>,
1802 kernel_config<256, 16>,
1804 block_radix_rank_algorithm::match>
1808 template<class key_type, class value_type>
1809 struct default_radix_sort_onesweep_config<
1810 static_cast<unsigned int>(target_arch::unknown),
1813 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1814 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1815 : radix_sort_onesweep_config<kernel_config<256, 16>,
1816 kernel_config<256, 16>,
1818 block_radix_rank_algorithm::match>
1822 template<class key_type, class value_type>
1823 struct default_radix_sort_onesweep_config<
1824 static_cast<unsigned int>(target_arch::unknown),
1827 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1828 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1829 && (sizeof(value_type) > 4))>>
1830 : radix_sort_onesweep_config<kernel_config<1024, 6>,
1831 kernel_config<1024, 6>,
1833 block_radix_rank_algorithm::match>
1837 template<class key_type, class value_type>
1838 struct default_radix_sort_onesweep_config<
1839 static_cast<unsigned int>(target_arch::unknown),
1842 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1843 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1844 && (sizeof(value_type) > 2))>>
1845 : radix_sort_onesweep_config<kernel_config<256, 12>,
1846 kernel_config<256, 12>,
1848 block_radix_rank_algorithm::match>
1852 template<class key_type, class value_type>
1853 struct default_radix_sort_onesweep_config<
1854 static_cast<unsigned int>(target_arch::unknown),
1857 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1858 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1859 && (sizeof(value_type) > 1))>>
1860 : radix_sort_onesweep_config<kernel_config<256, 12>,
1861 kernel_config<256, 12>,
1863 block_radix_rank_algorithm::match>
1867 template<class key_type, class value_type>
1868 struct default_radix_sort_onesweep_config<
1869 static_cast<unsigned int>(target_arch::unknown),
1872 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1873 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
1874 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1875 : radix_sort_onesweep_config<kernel_config<512, 6>,
1876 kernel_config<512, 6>,
1878 block_radix_rank_algorithm::match>
1882 template<class key_type, class value_type>
1883 struct default_radix_sort_onesweep_config<
1884 static_cast<unsigned int>(target_arch::unknown),
1887 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1888 && (sizeof(key_type) > 4)
1889 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1890 : radix_sort_onesweep_config<kernel_config<256, 12>,
1891 kernel_config<256, 12>,
1893 block_radix_rank_algorithm::match>
1897 template<class key_type, class value_type>
1898 struct default_radix_sort_onesweep_config<
1899 static_cast<unsigned int>(target_arch::unknown),
1902 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1903 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1904 && (sizeof(value_type) > 4))>>
1905 : radix_sort_onesweep_config<kernel_config<256, 12>,
1906 kernel_config<256, 12>,
1908 block_radix_rank_algorithm::match>
1912 template<class key_type, class value_type>
1913 struct default_radix_sort_onesweep_config<
1914 static_cast<unsigned int>(target_arch::unknown),
1917 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1918 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1919 && (sizeof(value_type) > 2))>>
1920 : radix_sort_onesweep_config<kernel_config<512, 12>,
1921 kernel_config<512, 12>,
1923 block_radix_rank_algorithm::match>
1927 template<class key_type, class value_type>
1928 struct default_radix_sort_onesweep_config<
1929 static_cast<unsigned int>(target_arch::unknown),
1932 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1933 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1934 && (sizeof(value_type) > 1))>>
1935 : radix_sort_onesweep_config<kernel_config<256, 16>,
1936 kernel_config<256, 16>,
1938 block_radix_rank_algorithm::match>
1942 template<class key_type, class value_type>
1943 struct default_radix_sort_onesweep_config<
1944 static_cast<unsigned int>(target_arch::unknown),
1947 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1948 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
1949 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
1950 : radix_sort_onesweep_config<kernel_config<256, 22>,
1951 kernel_config<256, 22>,
1953 block_radix_rank_algorithm::match>
1957 template<class key_type, class value_type>
1958 struct default_radix_sort_onesweep_config<
1959 static_cast<unsigned int>(target_arch::unknown),
1962 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1963 && (sizeof(key_type) > 2)
1964 && (std::is_same<value_type, rocprim::empty_type>::value))>>
1965 : radix_sort_onesweep_config<kernel_config<256, 22>,
1966 kernel_config<256, 22>,
1968 block_radix_rank_algorithm::match>
1972 template<class key_type, class value_type>
1973 struct default_radix_sort_onesweep_config<
1974 static_cast<unsigned int>(target_arch::unknown),
1977 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1978 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
1979 && (sizeof(value_type) > 4))>>
1980 : radix_sort_onesweep_config<kernel_config<256, 18>,
1981 kernel_config<256, 18>,
1983 block_radix_rank_algorithm::match>
1987 template<class key_type, class value_type>
1988 struct default_radix_sort_onesweep_config<
1989 static_cast<unsigned int>(target_arch::unknown),
1992 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1993 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
1994 && (sizeof(value_type) > 2))>>
1995 : radix_sort_onesweep_config<kernel_config<256, 18>,
1996 kernel_config<256, 18>,
1998 block_radix_rank_algorithm::match>
2002 template<class key_type, class value_type>
2003 struct default_radix_sort_onesweep_config<
2004 static_cast<unsigned int>(target_arch::unknown),
2007 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2008 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
2009 && (sizeof(value_type) > 1))>>
2010 : radix_sort_onesweep_config<kernel_config<1024, 22>,
2011 kernel_config<1024, 22>,
2013 block_radix_rank_algorithm::match>
2017 template<class key_type, class value_type>
2018 struct default_radix_sort_onesweep_config<
2019 static_cast<unsigned int>(target_arch::unknown),
2022 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2023 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1)
2024 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2025 : radix_sort_onesweep_config<kernel_config<256, 18>,
2026 kernel_config<256, 18>,
2028 block_radix_rank_algorithm::match>
2032 template<class key_type, class value_type>
2033 struct default_radix_sort_onesweep_config<
2034 static_cast<unsigned int>(target_arch::unknown),
2037 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2038 && (sizeof(key_type) > 1)
2039 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2040 : radix_sort_onesweep_config<kernel_config<256, 22>,
2041 kernel_config<256, 22>,
2043 block_radix_rank_algorithm::match>
2047 template<class key_type, class value_type>
2048 struct default_radix_sort_onesweep_config<
2049 static_cast<unsigned int>(target_arch::unknown),
2052 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2053 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2054 : radix_sort_onesweep_config<kernel_config<512, 6>,
2055 kernel_config<512, 6>,
2057 block_radix_rank_algorithm::match>
2061 template<class key_type, class value_type>
2062 struct default_radix_sort_onesweep_config<
2063 static_cast<unsigned int>(target_arch::unknown),
2066 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2067 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2068 : radix_sort_onesweep_config<kernel_config<256, 22>,
2069 kernel_config<256, 22>,
2071 block_radix_rank_algorithm::match>
2075 template<class key_type, class value_type>
2076 struct default_radix_sort_onesweep_config<
2077 static_cast<unsigned int>(target_arch::unknown),
2080 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2081 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2082 : radix_sort_onesweep_config<kernel_config<256, 16>,
2083 kernel_config<256, 16>,
2085 block_radix_rank_algorithm::match>
2089 template<class key_type, class value_type>
2090 struct default_radix_sort_onesweep_config<
2091 static_cast<unsigned int>(target_arch::unknown),
2094 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2095 && (sizeof(value_type) <= 1)
2096 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2097 : radix_sort_onesweep_config<kernel_config<1024, 22>,
2098 kernel_config<1024, 22>,
2100 block_radix_rank_algorithm::basic>
2104 template<class key_type, class value_type>
2105 struct default_radix_sort_onesweep_config<
2106 static_cast<unsigned int>(target_arch::unknown),
2109 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2110 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2111 : radix_sort_onesweep_config<kernel_config<256, 16>,
2112 kernel_config<256, 16>,
2114 block_radix_rank_algorithm::match>
2118 template<class key_type, class value_type>
2119 struct default_radix_sort_onesweep_config<
2120 static_cast<unsigned int>(target_arch::gfx90a),
2123 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2124 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
2125 && (sizeof(value_type) > 4))>>
2126 : radix_sort_onesweep_config<kernel_config<1024, 6>,
2127 kernel_config<1024, 6>,
2129 block_radix_rank_algorithm::match>
2133 template<class key_type, class value_type>
2134 struct default_radix_sort_onesweep_config<
2135 static_cast<unsigned int>(target_arch::gfx90a),
2138 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2139 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
2140 && (sizeof(value_type) > 2))>>
2141 : radix_sort_onesweep_config<kernel_config<256, 12>,
2142 kernel_config<256, 12>,
2144 block_radix_rank_algorithm::match>
2148 template<class key_type, class value_type>
2149 struct default_radix_sort_onesweep_config<
2150 static_cast<unsigned int>(target_arch::gfx90a),
2153 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2154 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2155 && (sizeof(value_type) > 1))>>
2156 : radix_sort_onesweep_config<kernel_config<256, 12>,
2157 kernel_config<256, 12>,
2159 block_radix_rank_algorithm::match>
2163 template<class key_type, class value_type>
2164 struct default_radix_sort_onesweep_config<
2165 static_cast<unsigned int>(target_arch::gfx90a),
2168 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2169 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
2170 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2171 : radix_sort_onesweep_config<kernel_config<512, 6>,
2172 kernel_config<512, 6>,
2174 block_radix_rank_algorithm::match>
2178 template<class key_type, class value_type>
2179 struct default_radix_sort_onesweep_config<
2180 static_cast<unsigned int>(target_arch::gfx90a),
2183 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2184 && (sizeof(key_type) > 4)
2185 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2186 : radix_sort_onesweep_config<kernel_config<512, 6>,
2187 kernel_config<512, 6>,
2189 block_radix_rank_algorithm::match>
2193 template<class key_type, class value_type>
2194 struct default_radix_sort_onesweep_config<
2195 static_cast<unsigned int>(target_arch::gfx90a),
2198 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2199 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2200 && (sizeof(value_type) > 4))>>
2201 : radix_sort_onesweep_config<kernel_config<1024, 6>,
2202 kernel_config<1024, 6>,
2204 block_radix_rank_algorithm::match>
2208 template<class key_type, class value_type>
2209 struct default_radix_sort_onesweep_config<
2210 static_cast<unsigned int>(target_arch::gfx90a),
2213 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2214 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2215 && (sizeof(value_type) > 2))>>
2216 : radix_sort_onesweep_config<kernel_config<256, 22>,
2217 kernel_config<256, 22>,
2219 block_radix_rank_algorithm::match>
2223 template<class key_type, class value_type>
2224 struct default_radix_sort_onesweep_config<
2225 static_cast<unsigned int>(target_arch::gfx90a),
2228 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2229 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2230 && (sizeof(value_type) > 1))>>
2231 : radix_sort_onesweep_config<kernel_config<256, 22>,
2232 kernel_config<256, 22>,
2234 block_radix_rank_algorithm::match>
2238 template<class key_type, class value_type>
2239 struct default_radix_sort_onesweep_config<
2240 static_cast<unsigned int>(target_arch::gfx90a),
2243 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2244 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
2245 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2246 : radix_sort_onesweep_config<kernel_config<256, 22>,
2247 kernel_config<256, 22>,
2249 block_radix_rank_algorithm::match>
2253 template<class key_type, class value_type>
2254 struct default_radix_sort_onesweep_config<
2255 static_cast<unsigned int>(target_arch::gfx90a),
2258 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2259 && (sizeof(key_type) > 2)
2260 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2261 : radix_sort_onesweep_config<kernel_config<256, 22>,
2262 kernel_config<256, 22>,
2264 block_radix_rank_algorithm::match>
2268 template<class key_type, class value_type>
2269 struct default_radix_sort_onesweep_config<
2270 static_cast<unsigned int>(target_arch::gfx90a),
2273 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2274 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2275 : radix_sort_onesweep_config<kernel_config<256, 12>,
2276 kernel_config<256, 12>,
2278 block_radix_rank_algorithm::match>
2282 template<class key_type, class value_type>
2283 struct default_radix_sort_onesweep_config<
2284 static_cast<unsigned int>(target_arch::gfx90a),
2287 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2288 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2289 : radix_sort_onesweep_config<kernel_config<256, 16>,
2290 kernel_config<256, 16>,
2292 block_radix_rank_algorithm::match>
2296 template<class key_type, class value_type>
2297 struct default_radix_sort_onesweep_config<
2298 static_cast<unsigned int>(target_arch::gfx90a),
2301 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2302 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2303 : radix_sort_onesweep_config<kernel_config<256, 16>,
2304 kernel_config<256, 16>,
2306 block_radix_rank_algorithm::match>
2310 template<class key_type, class value_type>
2311 struct default_radix_sort_onesweep_config<
2312 static_cast<unsigned int>(target_arch::gfx90a),
2315 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2316 && (sizeof(value_type) <= 1)
2317 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2318 : radix_sort_onesweep_config<kernel_config<256, 16>,
2319 kernel_config<256, 16>,
2321 block_radix_rank_algorithm::match>
2325 template<class key_type, class value_type>
2326 struct default_radix_sort_onesweep_config<
2327 static_cast<unsigned int>(target_arch::gfx90a),
2330 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2331 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2332 : radix_sort_onesweep_config<kernel_config<256, 16>,
2333 kernel_config<256, 16>,
2335 block_radix_rank_algorithm::match>
2339 template<class key_type, class value_type>
2340 struct default_radix_sort_onesweep_config<
2341 static_cast<unsigned int>(target_arch::gfx90a),
2344 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2345 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
2346 && (sizeof(value_type) > 4))>>
2347 : radix_sort_onesweep_config<kernel_config<1024, 6>,
2348 kernel_config<1024, 6>,
2350 block_radix_rank_algorithm::match>
2354 template<class key_type, class value_type>
2355 struct default_radix_sort_onesweep_config<
2356 static_cast<unsigned int>(target_arch::gfx90a),
2359 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2360 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
2361 && (sizeof(value_type) > 2))>>
2362 : radix_sort_onesweep_config<kernel_config<256, 12>,
2363 kernel_config<256, 12>,
2365 block_radix_rank_algorithm::match>
2369 template<class key_type, class value_type>
2370 struct default_radix_sort_onesweep_config<
2371 static_cast<unsigned int>(target_arch::gfx90a),
2374 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2375 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2376 && (sizeof(value_type) > 1))>>
2377 : radix_sort_onesweep_config<kernel_config<256, 12>,
2378 kernel_config<256, 12>,
2380 block_radix_rank_algorithm::match>
2384 template<class key_type, class value_type>
2385 struct default_radix_sort_onesweep_config<
2386 static_cast<unsigned int>(target_arch::gfx90a),
2389 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2390 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
2391 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2392 : radix_sort_onesweep_config<kernel_config<512, 6>,
2393 kernel_config<512, 6>,
2395 block_radix_rank_algorithm::match>
2399 template<class key_type, class value_type>
2400 struct default_radix_sort_onesweep_config<
2401 static_cast<unsigned int>(target_arch::gfx90a),
2404 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2405 && (sizeof(key_type) > 4)
2406 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2407 : radix_sort_onesweep_config<kernel_config<256, 12>,
2408 kernel_config<256, 12>,
2410 block_radix_rank_algorithm::match>
2414 template<class key_type, class value_type>
2415 struct default_radix_sort_onesweep_config<
2416 static_cast<unsigned int>(target_arch::gfx90a),
2419 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2420 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2421 && (sizeof(value_type) > 4))>>
2422 : radix_sort_onesweep_config<kernel_config<256, 12>,
2423 kernel_config<256, 12>,
2425 block_radix_rank_algorithm::match>
2429 template<class key_type, class value_type>
2430 struct default_radix_sort_onesweep_config<
2431 static_cast<unsigned int>(target_arch::gfx90a),
2434 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2435 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2436 && (sizeof(value_type) > 2))>>
2437 : radix_sort_onesweep_config<kernel_config<512, 12>,
2438 kernel_config<512, 12>,
2440 block_radix_rank_algorithm::match>
2444 template<class key_type, class value_type>
2445 struct default_radix_sort_onesweep_config<
2446 static_cast<unsigned int>(target_arch::gfx90a),
2449 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2450 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2451 && (sizeof(value_type) > 1))>>
2452 : radix_sort_onesweep_config<kernel_config<256, 16>,
2453 kernel_config<256, 16>,
2455 block_radix_rank_algorithm::match>
2459 template<class key_type, class value_type>
2460 struct default_radix_sort_onesweep_config<
2461 static_cast<unsigned int>(target_arch::gfx90a),
2464 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2465 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
2466 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2467 : radix_sort_onesweep_config<kernel_config<256, 22>,
2468 kernel_config<256, 22>,
2470 block_radix_rank_algorithm::match>
2474 template<class key_type, class value_type>
2475 struct default_radix_sort_onesweep_config<
2476 static_cast<unsigned int>(target_arch::gfx90a),
2479 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2480 && (sizeof(key_type) > 2)
2481 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2482 : radix_sort_onesweep_config<kernel_config<256, 22>,
2483 kernel_config<256, 22>,
2485 block_radix_rank_algorithm::match>
2489 template<class key_type, class value_type>
2490 struct default_radix_sort_onesweep_config<
2491 static_cast<unsigned int>(target_arch::gfx90a),
2494 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2495 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
2496 && (sizeof(value_type) > 4))>>
2497 : radix_sort_onesweep_config<kernel_config<256, 18>,
2498 kernel_config<256, 18>,
2500 block_radix_rank_algorithm::match>
2504 template<class key_type, class value_type>
2505 struct default_radix_sort_onesweep_config<
2506 static_cast<unsigned int>(target_arch::gfx90a),
2509 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2510 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
2511 && (sizeof(value_type) > 2))>>
2512 : radix_sort_onesweep_config<kernel_config<256, 18>,
2513 kernel_config<256, 18>,
2515 block_radix_rank_algorithm::match>
2519 template<class key_type, class value_type>
2520 struct default_radix_sort_onesweep_config<
2521 static_cast<unsigned int>(target_arch::gfx90a),
2524 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2525 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
2526 && (sizeof(value_type) > 1))>>
2527 : radix_sort_onesweep_config<kernel_config<1024, 22>,
2528 kernel_config<1024, 22>,
2530 block_radix_rank_algorithm::match>
2534 template<class key_type, class value_type>
2535 struct default_radix_sort_onesweep_config<
2536 static_cast<unsigned int>(target_arch::gfx90a),
2539 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2540 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1)
2541 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2542 : radix_sort_onesweep_config<kernel_config<256, 18>,
2543 kernel_config<256, 18>,
2545 block_radix_rank_algorithm::match>
2549 template<class key_type, class value_type>
2550 struct default_radix_sort_onesweep_config<
2551 static_cast<unsigned int>(target_arch::gfx90a),
2554 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2555 && (sizeof(key_type) > 1)
2556 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2557 : radix_sort_onesweep_config<kernel_config<256, 22>,
2558 kernel_config<256, 22>,
2560 block_radix_rank_algorithm::match>
2564 template<class key_type, class value_type>
2565 struct default_radix_sort_onesweep_config<
2566 static_cast<unsigned int>(target_arch::gfx90a),
2569 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2570 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2571 : radix_sort_onesweep_config<kernel_config<512, 6>,
2572 kernel_config<512, 6>,
2574 block_radix_rank_algorithm::match>
2578 template<class key_type, class value_type>
2579 struct default_radix_sort_onesweep_config<
2580 static_cast<unsigned int>(target_arch::gfx90a),
2583 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2584 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2585 : radix_sort_onesweep_config<kernel_config<256, 22>,
2586 kernel_config<256, 22>,
2588 block_radix_rank_algorithm::match>
2592 template<class key_type, class value_type>
2593 struct default_radix_sort_onesweep_config<
2594 static_cast<unsigned int>(target_arch::gfx90a),
2597 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2598 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2599 : radix_sort_onesweep_config<kernel_config<256, 16>,
2600 kernel_config<256, 16>,
2602 block_radix_rank_algorithm::match>
2606 template<class key_type, class value_type>
2607 struct default_radix_sort_onesweep_config<
2608 static_cast<unsigned int>(target_arch::gfx90a),
2611 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2612 && (sizeof(value_type) <= 1)
2613 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2614 : radix_sort_onesweep_config<kernel_config<1024, 22>,
2615 kernel_config<1024, 22>,
2617 block_radix_rank_algorithm::basic>
2621 template<class key_type, class value_type>
2622 struct default_radix_sort_onesweep_config<
2623 static_cast<unsigned int>(target_arch::gfx90a),
2626 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2627 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2628 : radix_sort_onesweep_config<kernel_config<256, 16>,
2629 kernel_config<256, 16>,
2631 block_radix_rank_algorithm::match>
2635 template<class key_type, class value_type>
2636 struct default_radix_sort_onesweep_config<
2637 static_cast<unsigned int>(target_arch::gfx906),
2640 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2641 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
2642 && (sizeof(value_type) > 4))>>
2643 : radix_sort_onesweep_config<kernel_config<256, 12>,
2644 kernel_config<256, 12>,
2646 block_radix_rank_algorithm::match>
2650 template<class key_type, class value_type>
2651 struct default_radix_sort_onesweep_config<
2652 static_cast<unsigned int>(target_arch::gfx906),
2655 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2656 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
2657 && (sizeof(value_type) > 2))>>
2658 : radix_sort_onesweep_config<kernel_config<256, 12>,
2659 kernel_config<256, 12>,
2661 block_radix_rank_algorithm::match>
2665 template<class key_type, class value_type>
2666 struct default_radix_sort_onesweep_config<
2667 static_cast<unsigned int>(target_arch::gfx906),
2670 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2671 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2672 && (sizeof(value_type) > 1))>>
2673 : radix_sort_onesweep_config<kernel_config<512, 6>,
2674 kernel_config<512, 6>,
2676 block_radix_rank_algorithm::match>
2680 template<class key_type, class value_type>
2681 struct default_radix_sort_onesweep_config<
2682 static_cast<unsigned int>(target_arch::gfx906),
2685 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2686 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
2687 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2688 : radix_sort_onesweep_config<kernel_config<512, 6>,
2689 kernel_config<512, 6>,
2691 block_radix_rank_algorithm::match>
2695 template<class key_type, class value_type>
2696 struct default_radix_sort_onesweep_config<
2697 static_cast<unsigned int>(target_arch::gfx906),
2700 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2701 && (sizeof(key_type) > 4)
2702 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2703 : radix_sort_onesweep_config<kernel_config<256, 12>,
2704 kernel_config<256, 12>,
2706 block_radix_rank_algorithm::match>
2710 template<class key_type, class value_type>
2711 struct default_radix_sort_onesweep_config<
2712 static_cast<unsigned int>(target_arch::gfx906),
2715 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2716 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2717 && (sizeof(value_type) > 4))>>
2718 : radix_sort_onesweep_config<kernel_config<256, 12>,
2719 kernel_config<256, 12>,
2721 block_radix_rank_algorithm::match>
2725 template<class key_type, class value_type>
2726 struct default_radix_sort_onesweep_config<
2727 static_cast<unsigned int>(target_arch::gfx906),
2730 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2731 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2732 && (sizeof(value_type) > 2))>>
2733 : radix_sort_onesweep_config<kernel_config<256, 22>,
2734 kernel_config<256, 22>,
2736 block_radix_rank_algorithm::match>
2740 template<class key_type, class value_type>
2741 struct default_radix_sort_onesweep_config<
2742 static_cast<unsigned int>(target_arch::gfx906),
2745 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2746 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2747 && (sizeof(value_type) > 1))>>
2748 : radix_sort_onesweep_config<kernel_config<256, 16>,
2749 kernel_config<256, 16>,
2751 block_radix_rank_algorithm::match>
2755 template<class key_type, class value_type>
2756 struct default_radix_sort_onesweep_config<
2757 static_cast<unsigned int>(target_arch::gfx906),
2760 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2761 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
2762 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2763 : radix_sort_onesweep_config<kernel_config<512, 12>,
2764 kernel_config<512, 12>,
2766 block_radix_rank_algorithm::match>
2770 template<class key_type, class value_type>
2771 struct default_radix_sort_onesweep_config<
2772 static_cast<unsigned int>(target_arch::gfx906),
2775 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2776 && (sizeof(key_type) > 2)
2777 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2778 : radix_sort_onesweep_config<kernel_config<512, 12>,
2779 kernel_config<512, 12>,
2781 block_radix_rank_algorithm::match>
2785 template<class key_type, class value_type>
2786 struct default_radix_sort_onesweep_config<
2787 static_cast<unsigned int>(target_arch::gfx906),
2790 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2791 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2792 : radix_sort_onesweep_config<kernel_config<512, 6>,
2793 kernel_config<512, 6>,
2795 block_radix_rank_algorithm::match>
2799 template<class key_type, class value_type>
2800 struct default_radix_sort_onesweep_config<
2801 static_cast<unsigned int>(target_arch::gfx906),
2804 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2805 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2806 : radix_sort_onesweep_config<kernel_config<256, 16>,
2807 kernel_config<256, 16>,
2809 block_radix_rank_algorithm::match>
2813 template<class key_type, class value_type>
2814 struct default_radix_sort_onesweep_config<
2815 static_cast<unsigned int>(target_arch::gfx906),
2818 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2819 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2820 : radix_sort_onesweep_config<kernel_config<256, 16>,
2821 kernel_config<256, 16>,
2823 block_radix_rank_algorithm::match>
2827 template<class key_type, class value_type>
2828 struct default_radix_sort_onesweep_config<
2829 static_cast<unsigned int>(target_arch::gfx906),
2832 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2833 && (sizeof(value_type) <= 1)
2834 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2835 : radix_sort_onesweep_config<kernel_config<512, 12>,
2836 kernel_config<512, 12>,
2838 block_radix_rank_algorithm::match>
2842 template<class key_type, class value_type>
2843 struct default_radix_sort_onesweep_config<
2844 static_cast<unsigned int>(target_arch::gfx906),
2847 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2848 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2849 : radix_sort_onesweep_config<kernel_config<512, 12>,
2850 kernel_config<512, 12>,
2852 block_radix_rank_algorithm::match>
2856 template<class key_type, class value_type>
2857 struct default_radix_sort_onesweep_config<
2858 static_cast<unsigned int>(target_arch::gfx906),
2861 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2862 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
2863 && (sizeof(value_type) > 4))>>
2864 : radix_sort_onesweep_config<kernel_config<512, 6>,
2865 kernel_config<512, 6>,
2867 block_radix_rank_algorithm::match>
2871 template<class key_type, class value_type>
2872 struct default_radix_sort_onesweep_config<
2873 static_cast<unsigned int>(target_arch::gfx906),
2876 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2877 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
2878 && (sizeof(value_type) > 2))>>
2879 : radix_sort_onesweep_config<kernel_config<256, 12>,
2880 kernel_config<256, 12>,
2882 block_radix_rank_algorithm::match>
2886 template<class key_type, class value_type>
2887 struct default_radix_sort_onesweep_config<
2888 static_cast<unsigned int>(target_arch::gfx906),
2891 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2892 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2893 && (sizeof(value_type) > 1))>>
2894 : radix_sort_onesweep_config<kernel_config<512, 6>,
2895 kernel_config<512, 6>,
2897 block_radix_rank_algorithm::match>
2901 template<class key_type, class value_type>
2902 struct default_radix_sort_onesweep_config<
2903 static_cast<unsigned int>(target_arch::gfx906),
2906 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2907 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1)
2908 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2909 : radix_sort_onesweep_config<kernel_config<512, 6>,
2910 kernel_config<512, 6>,
2912 block_radix_rank_algorithm::match>
2916 template<class key_type, class value_type>
2917 struct default_radix_sort_onesweep_config<
2918 static_cast<unsigned int>(target_arch::gfx906),
2921 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2922 && (sizeof(key_type) > 4)
2923 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2924 : radix_sort_onesweep_config<kernel_config<256, 12>,
2925 kernel_config<256, 12>,
2927 block_radix_rank_algorithm::match>
2931 template<class key_type, class value_type>
2932 struct default_radix_sort_onesweep_config<
2933 static_cast<unsigned int>(target_arch::gfx906),
2936 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2937 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2938 && (sizeof(value_type) > 4))>>
2939 : radix_sort_onesweep_config<kernel_config<256, 12>,
2940 kernel_config<256, 12>,
2942 block_radix_rank_algorithm::match>
2946 template<class key_type, class value_type>
2947 struct default_radix_sort_onesweep_config<
2948 static_cast<unsigned int>(target_arch::gfx906),
2951 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2952 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2953 && (sizeof(value_type) > 2))>>
2954 : radix_sort_onesweep_config<kernel_config<512, 12>,
2955 kernel_config<512, 12>,
2957 block_radix_rank_algorithm::match>
2961 template<class key_type, class value_type>
2962 struct default_radix_sort_onesweep_config<
2963 static_cast<unsigned int>(target_arch::gfx906),
2966 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2967 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2968 && (sizeof(value_type) > 1))>>
2969 : radix_sort_onesweep_config<kernel_config<256, 18>,
2970 kernel_config<256, 18>,
2972 block_radix_rank_algorithm::match>
2976 template<class key_type, class value_type>
2977 struct default_radix_sort_onesweep_config<
2978 static_cast<unsigned int>(target_arch::gfx906),
2981 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2982 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1)
2983 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
2984 : radix_sort_onesweep_config<kernel_config<256, 18>,
2985 kernel_config<256, 18>,
2987 block_radix_rank_algorithm::match>
2991 template<class key_type, class value_type>
2992 struct default_radix_sort_onesweep_config<
2993 static_cast<unsigned int>(target_arch::gfx906),
2996 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2997 && (sizeof(key_type) > 2)
2998 && (std::is_same<value_type, rocprim::empty_type>::value))>>
2999 : radix_sort_onesweep_config<kernel_config<256, 22>,
3000 kernel_config<256, 22>,
3002 block_radix_rank_algorithm::match>
3006 template<class key_type, class value_type>
3007 struct default_radix_sort_onesweep_config<
3008 static_cast<unsigned int>(target_arch::gfx906),
3011 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
3012 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
3013 && (sizeof(value_type) > 4))>>
3014 : radix_sort_onesweep_config<kernel_config<256, 12>,
3015 kernel_config<256, 12>,
3017 block_radix_rank_algorithm::match>
3021 template<class key_type, class value_type>
3022 struct default_radix_sort_onesweep_config<
3023 static_cast<unsigned int>(target_arch::gfx906),
3026 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
3027 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
3028 && (sizeof(value_type) > 2))>>
3029 : radix_sort_onesweep_config<kernel_config<512, 22>,
3030 kernel_config<512, 22>,
3032 block_radix_rank_algorithm::match>
3036 template<class key_type, class value_type>
3037 struct default_radix_sort_onesweep_config<
3038 static_cast<unsigned int>(target_arch::gfx906),
3041 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
3042 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
3043 && (sizeof(value_type) > 1))>>
3044 : radix_sort_onesweep_config<kernel_config<512, 12>,
3045 kernel_config<512, 12>,
3047 block_radix_rank_algorithm::match>
3051 template<class key_type, class value_type>
3052 struct default_radix_sort_onesweep_config<
3053 static_cast<unsigned int>(target_arch::gfx906),
3056 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
3057 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1)
3058 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
3059 : radix_sort_onesweep_config<kernel_config<512, 12>,
3060 kernel_config<512, 12>,
3062 block_radix_rank_algorithm::match>
3066 template<class key_type, class value_type>
3067 struct default_radix_sort_onesweep_config<
3068 static_cast<unsigned int>(target_arch::gfx906),
3071 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
3072 && (sizeof(key_type) > 1)
3073 && (std::is_same<value_type, rocprim::empty_type>::value))>>
3074 : radix_sort_onesweep_config<kernel_config<512, 12>,
3075 kernel_config<512, 12>,
3077 block_radix_rank_algorithm::match>
3081 template<class key_type, class value_type>
3082 struct default_radix_sort_onesweep_config<
3083 static_cast<unsigned int>(target_arch::gfx906),
3086 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
3087 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
3088 : radix_sort_onesweep_config<kernel_config<512, 6>,
3089 kernel_config<512, 6>,
3091 block_radix_rank_algorithm::match>
3095 template<class key_type, class value_type>
3096 struct default_radix_sort_onesweep_config<
3097 static_cast<unsigned int>(target_arch::gfx906),
3100 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
3101 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
3102 : radix_sort_onesweep_config<kernel_config<256, 16>,
3103 kernel_config<256, 16>,
3105 block_radix_rank_algorithm::match>
3109 template<class key_type, class value_type>
3110 struct default_radix_sort_onesweep_config<
3111 static_cast<unsigned int>(target_arch::gfx906),
3114 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
3115 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
3116 : radix_sort_onesweep_config<kernel_config<512, 8>,
3117 kernel_config<512, 8>,
3119 block_radix_rank_algorithm::match>
3123 template<class key_type, class value_type>
3124 struct default_radix_sort_onesweep_config<
3125 static_cast<unsigned int>(target_arch::gfx906),
3128 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
3129 && (sizeof(value_type) <= 1)
3130 && (!std::is_same<value_type, rocprim::empty_type>::value))>>
3131 : radix_sort_onesweep_config<kernel_config<512, 16>,
3132 kernel_config<512, 16>,
3134 block_radix_rank_algorithm::basic>
3138 template<class key_type, class value_type>
3139 struct default_radix_sort_onesweep_config<
3140 static_cast<unsigned int>(target_arch::gfx906),
3143 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
3144 && (std::is_same<value_type, rocprim::empty_type>::value))>>
3145 : radix_sort_onesweep_config<kernel_config<512, 12>,
3146 kernel_config<512, 12>,
3148 block_radix_rank_algorithm::match>
3153 END_ROCPRIM_NAMESPACE
Definition: device_radix_sort_onesweep.hpp:45
Deprecated: Configuration of device-level scan primitives.
Definition: block_histogram.hpp:62
Configuration of subalgorithm Onesweep.
Definition: device_config_helper.hpp:188
Definition: device_config_helper.hpp:211