21 #ifndef ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_SCAN_BY_KEY_HPP_ 22 #define ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_SCAN_BY_KEY_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,
class key_type,
class value_type,
class enable =
void>
46 template<
class key_type,
class value_type>
48 static_cast<unsigned int>(target_arch::gfx908),
51 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
52 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
53 && (sizeof(value_type) > 4))>>
56 ::rocprim::block_load_method::block_load_transpose,
57 ::rocprim::block_store_method::block_store_transpose,
58 block_scan_algorithm::using_warp_scan>
62 template<
class key_type,
class value_type>
64 static_cast<unsigned int>(target_arch::gfx908),
67 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
68 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
69 && (sizeof(value_type) > 2))>>
72 ::rocprim::block_load_method::block_load_transpose,
73 ::rocprim::block_store_method::block_store_transpose,
74 block_scan_algorithm::reduce_then_scan>
78 template<
class key_type,
class value_type>
80 static_cast<unsigned int>(target_arch::gfx908),
83 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
84 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
85 && (sizeof(value_type) > 1))>>
88 ::rocprim::block_load_method::block_load_transpose,
89 ::rocprim::block_store_method::block_store_transpose,
90 block_scan_algorithm::using_warp_scan>
94 template<
class key_type,
class value_type>
96 static_cast<unsigned int>(target_arch::gfx908),
99 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
100 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
103 ::rocprim::block_load_method::block_load_transpose,
104 ::rocprim::block_store_method::block_store_transpose,
105 block_scan_algorithm::reduce_then_scan>
109 template<
class key_type,
class value_type>
111 static_cast<unsigned int>(target_arch::gfx908),
114 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
115 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
116 && (sizeof(value_type) > 4))>>
119 ::rocprim::block_load_method::block_load_transpose,
120 ::rocprim::block_store_method::block_store_transpose,
121 block_scan_algorithm::using_warp_scan>
125 template<
class key_type,
class value_type>
127 static_cast<unsigned int>(target_arch::gfx908),
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) <= 4)
132 && (sizeof(value_type) > 2))>>
135 ::rocprim::block_load_method::block_load_transpose,
136 ::rocprim::block_store_method::block_store_transpose,
137 block_scan_algorithm::reduce_then_scan>
141 template<
class key_type,
class value_type>
143 static_cast<unsigned int>(target_arch::gfx908),
146 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
147 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
148 && (sizeof(value_type) > 1))>>
151 ::rocprim::block_load_method::block_load_transpose,
152 ::rocprim::block_store_method::block_store_transpose,
153 block_scan_algorithm::reduce_then_scan>
157 template<
class key_type,
class value_type>
159 static_cast<unsigned int>(target_arch::gfx908),
162 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
163 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
166 ::rocprim::block_load_method::block_load_transpose,
167 ::rocprim::block_store_method::block_store_transpose,
168 block_scan_algorithm::using_warp_scan>
172 template<
class key_type,
class value_type>
174 static_cast<unsigned int>(target_arch::gfx908),
177 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
178 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
181 ::rocprim::block_load_method::block_load_transpose,
182 ::rocprim::block_store_method::block_store_transpose,
183 block_scan_algorithm::using_warp_scan>
187 template<
class key_type,
class value_type>
189 static_cast<unsigned int>(target_arch::gfx908),
192 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
193 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
196 ::rocprim::block_load_method::block_load_transpose,
197 ::rocprim::block_store_method::block_store_transpose,
198 block_scan_algorithm::using_warp_scan>
202 template<
class key_type,
class value_type>
204 static_cast<unsigned int>(target_arch::gfx908),
207 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
208 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
211 ::rocprim::block_load_method::block_load_transpose,
212 ::rocprim::block_store_method::block_store_transpose,
213 block_scan_algorithm::reduce_then_scan>
217 template<
class key_type,
class value_type>
219 static_cast<unsigned int>(target_arch::gfx908),
222 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
223 && (sizeof(value_type) <= 1))>>
224 : scan_by_key_config_v2<256,
226 ::rocprim::block_load_method::block_load_transpose,
227 ::rocprim::block_store_method::block_store_transpose,
228 block_scan_algorithm::using_warp_scan>
232 template<class key_type, class value_type>
233 struct default_scan_by_key_config<
234 static_cast<unsigned int>(target_arch::gfx908),
237 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
238 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
239 && (sizeof(value_type) > 4))>>
240 : scan_by_key_config_v2<256,
242 ::rocprim::block_load_method::block_load_transpose,
243 ::rocprim::block_store_method::block_store_transpose,
244 block_scan_algorithm::reduce_then_scan>
248 template<class key_type, class value_type>
249 struct default_scan_by_key_config<
250 static_cast<unsigned int>(target_arch::gfx908),
253 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
254 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
255 && (sizeof(value_type) > 2))>>
256 : scan_by_key_config_v2<256,
258 ::rocprim::block_load_method::block_load_transpose,
259 ::rocprim::block_store_method::block_store_transpose,
260 block_scan_algorithm::reduce_then_scan>
264 template<class key_type, class value_type>
265 struct default_scan_by_key_config<
266 static_cast<unsigned int>(target_arch::gfx908),
269 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
270 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
271 && (sizeof(value_type) > 1))>>
272 : scan_by_key_config_v2<64,
274 ::rocprim::block_load_method::block_load_transpose,
275 ::rocprim::block_store_method::block_store_transpose,
276 block_scan_algorithm::using_warp_scan>
280 template<class key_type, class value_type>
281 struct default_scan_by_key_config<
282 static_cast<unsigned int>(target_arch::gfx908),
285 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
286 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
287 : scan_by_key_config_v2<256,
289 ::rocprim::block_load_method::block_load_transpose,
290 ::rocprim::block_store_method::block_store_transpose,
291 block_scan_algorithm::using_warp_scan>
295 template<class key_type, class value_type>
296 struct default_scan_by_key_config<
297 static_cast<unsigned int>(target_arch::gfx908),
300 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
301 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
302 && (sizeof(value_type) > 4))>>
303 : scan_by_key_config_v2<128,
305 ::rocprim::block_load_method::block_load_transpose,
306 ::rocprim::block_store_method::block_store_transpose,
307 block_scan_algorithm::using_warp_scan>
311 template<class key_type, class value_type>
312 struct default_scan_by_key_config<
313 static_cast<unsigned int>(target_arch::gfx908),
316 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
317 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
318 && (sizeof(value_type) > 2))>>
319 : scan_by_key_config_v2<256,
321 ::rocprim::block_load_method::block_load_transpose,
322 ::rocprim::block_store_method::block_store_transpose,
323 block_scan_algorithm::reduce_then_scan>
327 template<class key_type, class value_type>
328 struct default_scan_by_key_config<
329 static_cast<unsigned int>(target_arch::gfx908),
332 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
333 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
334 && (sizeof(value_type) > 1))>>
335 : scan_by_key_config_v2<256,
337 ::rocprim::block_load_method::block_load_transpose,
338 ::rocprim::block_store_method::block_store_transpose,
339 block_scan_algorithm::reduce_then_scan>
343 template<class key_type, class value_type>
344 struct default_scan_by_key_config<
345 static_cast<unsigned int>(target_arch::gfx908),
348 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
349 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
350 : scan_by_key_config_v2<128,
352 ::rocprim::block_load_method::block_load_transpose,
353 ::rocprim::block_store_method::block_store_transpose,
354 block_scan_algorithm::using_warp_scan>
358 template<class key_type, class value_type>
359 struct default_scan_by_key_config<
360 static_cast<unsigned int>(target_arch::gfx908),
363 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
364 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
365 && (sizeof(value_type) > 4))>>
366 : scan_by_key_config_v2<64,
368 ::rocprim::block_load_method::block_load_transpose,
369 ::rocprim::block_store_method::block_store_transpose,
370 block_scan_algorithm::reduce_then_scan>
374 template<class key_type, class value_type>
375 struct default_scan_by_key_config<
376 static_cast<unsigned int>(target_arch::gfx908),
379 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
380 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
381 && (sizeof(value_type) > 2))>>
382 : scan_by_key_config_v2<256,
384 ::rocprim::block_load_method::block_load_transpose,
385 ::rocprim::block_store_method::block_store_transpose,
386 block_scan_algorithm::using_warp_scan>
390 template<class key_type, class value_type>
391 struct default_scan_by_key_config<
392 static_cast<unsigned int>(target_arch::gfx908),
395 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
396 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
397 && (sizeof(value_type) > 1))>>
398 : scan_by_key_config_v2<256,
400 ::rocprim::block_load_method::block_load_transpose,
401 ::rocprim::block_store_method::block_store_transpose,
402 block_scan_algorithm::reduce_then_scan>
406 template<class key_type, class value_type>
407 struct default_scan_by_key_config<
408 static_cast<unsigned int>(target_arch::gfx908),
411 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
412 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1))>>
413 : scan_by_key_config_v2<256,
415 ::rocprim::block_load_method::block_load_transpose,
416 ::rocprim::block_store_method::block_store_transpose,
417 block_scan_algorithm::using_warp_scan>
421 template<class key_type, class value_type>
422 struct default_scan_by_key_config<
423 static_cast<unsigned int>(target_arch::gfx908),
426 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
427 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
428 : scan_by_key_config_v2<64,
430 ::rocprim::block_load_method::block_load_transpose,
431 ::rocprim::block_store_method::block_store_transpose,
432 block_scan_algorithm::using_warp_scan>
436 template<class key_type, class value_type>
437 struct default_scan_by_key_config<
438 static_cast<unsigned int>(target_arch::gfx908),
441 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
442 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
443 : scan_by_key_config_v2<128,
445 ::rocprim::block_load_method::block_load_transpose,
446 ::rocprim::block_store_method::block_store_transpose,
447 block_scan_algorithm::using_warp_scan>
451 template<class key_type, class value_type>
452 struct default_scan_by_key_config<
453 static_cast<unsigned int>(target_arch::gfx908),
456 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
457 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
458 : scan_by_key_config_v2<256,
460 ::rocprim::block_load_method::block_load_transpose,
461 ::rocprim::block_store_method::block_store_transpose,
462 block_scan_algorithm::reduce_then_scan>
466 template<class key_type, class value_type>
467 struct default_scan_by_key_config<
468 static_cast<unsigned int>(target_arch::gfx908),
471 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
472 && (sizeof(value_type) <= 1))>>
473 : scan_by_key_config_v2<256,
475 ::rocprim::block_load_method::block_load_transpose,
476 ::rocprim::block_store_method::block_store_transpose,
477 block_scan_algorithm::reduce_then_scan>
481 template<class key_type, class value_type>
482 struct default_scan_by_key_config<
483 static_cast<unsigned int>(target_arch::gfx900),
486 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
487 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
488 && (sizeof(value_type) > 4))>>
489 : scan_by_key_config_v2<256,
491 ::rocprim::block_load_method::block_load_transpose,
492 ::rocprim::block_store_method::block_store_transpose,
493 block_scan_algorithm::reduce_then_scan>
497 template<class key_type, class value_type>
498 struct default_scan_by_key_config<
499 static_cast<unsigned int>(target_arch::gfx900),
502 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
503 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
504 && (sizeof(value_type) > 2))>>
505 : scan_by_key_config_v2<128,
507 ::rocprim::block_load_method::block_load_transpose,
508 ::rocprim::block_store_method::block_store_transpose,
509 block_scan_algorithm::reduce_then_scan>
513 template<class key_type, class value_type>
514 struct default_scan_by_key_config<
515 static_cast<unsigned int>(target_arch::gfx900),
518 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
519 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
520 && (sizeof(value_type) > 1))>>
521 : scan_by_key_config_v2<128,
523 ::rocprim::block_load_method::block_load_transpose,
524 ::rocprim::block_store_method::block_store_transpose,
525 block_scan_algorithm::reduce_then_scan>
529 template<class key_type, class value_type>
530 struct default_scan_by_key_config<
531 static_cast<unsigned int>(target_arch::gfx900),
534 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
535 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
536 : scan_by_key_config_v2<128,
538 ::rocprim::block_load_method::block_load_transpose,
539 ::rocprim::block_store_method::block_store_transpose,
540 block_scan_algorithm::using_warp_scan>
544 template<class key_type, class value_type>
545 struct default_scan_by_key_config<
546 static_cast<unsigned int>(target_arch::gfx900),
549 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
550 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
551 && (sizeof(value_type) > 4))>>
552 : scan_by_key_config_v2<256,
554 ::rocprim::block_load_method::block_load_transpose,
555 ::rocprim::block_store_method::block_store_transpose,
556 block_scan_algorithm::reduce_then_scan>
560 template<class key_type, class value_type>
561 struct default_scan_by_key_config<
562 static_cast<unsigned int>(target_arch::gfx900),
565 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
566 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
567 && (sizeof(value_type) > 2))>>
568 : scan_by_key_config_v2<256,
570 ::rocprim::block_load_method::block_load_transpose,
571 ::rocprim::block_store_method::block_store_transpose,
572 block_scan_algorithm::reduce_then_scan>
576 template<class key_type, class value_type>
577 struct default_scan_by_key_config<
578 static_cast<unsigned int>(target_arch::gfx900),
581 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
582 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
583 && (sizeof(value_type) > 1))>>
584 : scan_by_key_config_v2<256,
586 ::rocprim::block_load_method::block_load_transpose,
587 ::rocprim::block_store_method::block_store_transpose,
588 block_scan_algorithm::reduce_then_scan>
592 template<class key_type, class value_type>
593 struct default_scan_by_key_config<
594 static_cast<unsigned int>(target_arch::gfx900),
597 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
598 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
599 : scan_by_key_config_v2<256,
601 ::rocprim::block_load_method::block_load_transpose,
602 ::rocprim::block_store_method::block_store_transpose,
603 block_scan_algorithm::using_warp_scan>
607 template<class key_type, class value_type>
608 struct default_scan_by_key_config<
609 static_cast<unsigned int>(target_arch::gfx900),
612 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
613 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
614 : scan_by_key_config_v2<64,
616 ::rocprim::block_load_method::block_load_transpose,
617 ::rocprim::block_store_method::block_store_transpose,
618 block_scan_algorithm::reduce_then_scan>
622 template<class key_type, class value_type>
623 struct default_scan_by_key_config<
624 static_cast<unsigned int>(target_arch::gfx900),
627 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
628 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
629 : scan_by_key_config_v2<256,
631 ::rocprim::block_load_method::block_load_transpose,
632 ::rocprim::block_store_method::block_store_transpose,
633 block_scan_algorithm::using_warp_scan>
637 template<class key_type, class value_type>
638 struct default_scan_by_key_config<
639 static_cast<unsigned int>(target_arch::gfx900),
642 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
643 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
644 : scan_by_key_config_v2<256,
646 ::rocprim::block_load_method::block_load_transpose,
647 ::rocprim::block_store_method::block_store_transpose,
648 block_scan_algorithm::reduce_then_scan>
652 template<class key_type, class value_type>
653 struct default_scan_by_key_config<
654 static_cast<unsigned int>(target_arch::gfx900),
657 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
658 && (sizeof(value_type) <= 1))>>
659 : scan_by_key_config_v2<256,
661 ::rocprim::block_load_method::block_load_transpose,
662 ::rocprim::block_store_method::block_store_transpose,
663 block_scan_algorithm::using_warp_scan>
667 template<class key_type, class value_type>
668 struct default_scan_by_key_config<
669 static_cast<unsigned int>(target_arch::gfx900),
672 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
673 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
674 && (sizeof(value_type) > 4))>>
675 : scan_by_key_config_v2<256,
677 ::rocprim::block_load_method::block_load_transpose,
678 ::rocprim::block_store_method::block_store_transpose,
679 block_scan_algorithm::using_warp_scan>
683 template<class key_type, class value_type>
684 struct default_scan_by_key_config<
685 static_cast<unsigned int>(target_arch::gfx900),
688 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
689 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
690 && (sizeof(value_type) > 2))>>
691 : scan_by_key_config_v2<128,
693 ::rocprim::block_load_method::block_load_transpose,
694 ::rocprim::block_store_method::block_store_transpose,
695 block_scan_algorithm::reduce_then_scan>
699 template<class key_type, class value_type>
700 struct default_scan_by_key_config<
701 static_cast<unsigned int>(target_arch::gfx900),
704 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
705 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
706 && (sizeof(value_type) > 1))>>
707 : scan_by_key_config_v2<128,
709 ::rocprim::block_load_method::block_load_transpose,
710 ::rocprim::block_store_method::block_store_transpose,
711 block_scan_algorithm::reduce_then_scan>
715 template<class key_type, class value_type>
716 struct default_scan_by_key_config<
717 static_cast<unsigned int>(target_arch::gfx900),
720 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
721 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
722 : scan_by_key_config_v2<128,
724 ::rocprim::block_load_method::block_load_transpose,
725 ::rocprim::block_store_method::block_store_transpose,
726 block_scan_algorithm::using_warp_scan>
730 template<class key_type, class value_type>
731 struct default_scan_by_key_config<
732 static_cast<unsigned int>(target_arch::gfx900),
735 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
736 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
737 && (sizeof(value_type) > 4))>>
738 : scan_by_key_config_v2<256,
740 ::rocprim::block_load_method::block_load_transpose,
741 ::rocprim::block_store_method::block_store_transpose,
742 block_scan_algorithm::using_warp_scan>
746 template<class key_type, class value_type>
747 struct default_scan_by_key_config<
748 static_cast<unsigned int>(target_arch::gfx900),
751 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
752 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
753 && (sizeof(value_type) > 2))>>
754 : scan_by_key_config_v2<256,
756 ::rocprim::block_load_method::block_load_transpose,
757 ::rocprim::block_store_method::block_store_transpose,
758 block_scan_algorithm::reduce_then_scan>
762 template<class key_type, class value_type>
763 struct default_scan_by_key_config<
764 static_cast<unsigned int>(target_arch::gfx900),
767 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
768 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
769 && (sizeof(value_type) > 1))>>
770 : scan_by_key_config_v2<256,
772 ::rocprim::block_load_method::block_load_transpose,
773 ::rocprim::block_store_method::block_store_transpose,
774 block_scan_algorithm::reduce_then_scan>
778 template<class key_type, class value_type>
779 struct default_scan_by_key_config<
780 static_cast<unsigned int>(target_arch::gfx900),
783 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
784 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
785 : scan_by_key_config_v2<256,
787 ::rocprim::block_load_method::block_load_transpose,
788 ::rocprim::block_store_method::block_store_transpose,
789 block_scan_algorithm::using_warp_scan>
793 template<class key_type, class value_type>
794 struct default_scan_by_key_config<
795 static_cast<unsigned int>(target_arch::gfx900),
798 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
799 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
800 && (sizeof(value_type) > 4))>>
801 : scan_by_key_config_v2<64,
803 ::rocprim::block_load_method::block_load_transpose,
804 ::rocprim::block_store_method::block_store_transpose,
805 block_scan_algorithm::using_warp_scan>
809 template<class key_type, class value_type>
810 struct default_scan_by_key_config<
811 static_cast<unsigned int>(target_arch::gfx900),
814 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
815 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
816 && (sizeof(value_type) > 2))>>
817 : scan_by_key_config_v2<256,
819 ::rocprim::block_load_method::block_load_transpose,
820 ::rocprim::block_store_method::block_store_transpose,
821 block_scan_algorithm::using_warp_scan>
825 template<class key_type, class value_type>
826 struct default_scan_by_key_config<
827 static_cast<unsigned int>(target_arch::gfx900),
830 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
831 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
832 && (sizeof(value_type) > 1))>>
833 : scan_by_key_config_v2<256,
835 ::rocprim::block_load_method::block_load_transpose,
836 ::rocprim::block_store_method::block_store_transpose,
837 block_scan_algorithm::reduce_then_scan>
841 template<class key_type, class value_type>
842 struct default_scan_by_key_config<
843 static_cast<unsigned int>(target_arch::gfx900),
846 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
847 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1))>>
848 : scan_by_key_config_v2<256,
850 ::rocprim::block_load_method::block_load_transpose,
851 ::rocprim::block_store_method::block_store_transpose,
852 block_scan_algorithm::using_warp_scan>
856 template<class key_type, class value_type>
857 struct default_scan_by_key_config<
858 static_cast<unsigned int>(target_arch::gfx900),
861 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
862 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
863 : scan_by_key_config_v2<64,
865 ::rocprim::block_load_method::block_load_transpose,
866 ::rocprim::block_store_method::block_store_transpose,
867 block_scan_algorithm::using_warp_scan>
871 template<class key_type, class value_type>
872 struct default_scan_by_key_config<
873 static_cast<unsigned int>(target_arch::gfx900),
876 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
877 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
878 : scan_by_key_config_v2<256,
880 ::rocprim::block_load_method::block_load_transpose,
881 ::rocprim::block_store_method::block_store_transpose,
882 block_scan_algorithm::using_warp_scan>
886 template<class key_type, class value_type>
887 struct default_scan_by_key_config<
888 static_cast<unsigned int>(target_arch::gfx900),
891 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
892 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
893 : scan_by_key_config_v2<64,
895 ::rocprim::block_load_method::block_load_transpose,
896 ::rocprim::block_store_method::block_store_transpose,
897 block_scan_algorithm::reduce_then_scan>
901 template<class key_type, class value_type>
902 struct default_scan_by_key_config<
903 static_cast<unsigned int>(target_arch::gfx900),
906 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
907 && (sizeof(value_type) <= 1))>>
908 : scan_by_key_config_v2<64,
910 ::rocprim::block_load_method::block_load_transpose,
911 ::rocprim::block_store_method::block_store_transpose,
912 block_scan_algorithm::using_warp_scan>
916 template<class key_type, class value_type>
917 struct default_scan_by_key_config<
918 static_cast<unsigned int>(target_arch::gfx906),
921 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
922 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
923 && (sizeof(value_type) > 4))>>
924 : scan_by_key_config_v2<256,
926 ::rocprim::block_load_method::block_load_transpose,
927 ::rocprim::block_store_method::block_store_transpose,
928 block_scan_algorithm::using_warp_scan>
932 template<class key_type, class value_type>
933 struct default_scan_by_key_config<
934 static_cast<unsigned int>(target_arch::gfx906),
937 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
938 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
939 && (sizeof(value_type) > 2))>>
940 : scan_by_key_config_v2<256,
942 ::rocprim::block_load_method::block_load_transpose,
943 ::rocprim::block_store_method::block_store_transpose,
944 block_scan_algorithm::using_warp_scan>
948 template<class key_type, class value_type>
949 struct default_scan_by_key_config<
950 static_cast<unsigned int>(target_arch::gfx906),
953 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
954 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
955 && (sizeof(value_type) > 1))>>
956 : scan_by_key_config_v2<64,
958 ::rocprim::block_load_method::block_load_transpose,
959 ::rocprim::block_store_method::block_store_transpose,
960 block_scan_algorithm::using_warp_scan>
964 template<class key_type, class value_type>
965 struct default_scan_by_key_config<
966 static_cast<unsigned int>(target_arch::gfx906),
969 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
970 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
971 : scan_by_key_config_v2<64,
973 ::rocprim::block_load_method::block_load_transpose,
974 ::rocprim::block_store_method::block_store_transpose,
975 block_scan_algorithm::using_warp_scan>
979 template<class key_type, class value_type>
980 struct default_scan_by_key_config<
981 static_cast<unsigned int>(target_arch::gfx906),
984 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
985 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
986 && (sizeof(value_type) > 4))>>
987 : scan_by_key_config_v2<64,
989 ::rocprim::block_load_method::block_load_transpose,
990 ::rocprim::block_store_method::block_store_transpose,
991 block_scan_algorithm::reduce_then_scan>
995 template<class key_type, class value_type>
996 struct default_scan_by_key_config<
997 static_cast<unsigned int>(target_arch::gfx906),
1000 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1001 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1002 && (sizeof(value_type) > 2))>>
1003 : scan_by_key_config_v2<256,
1005 ::rocprim::block_load_method::block_load_transpose,
1006 ::rocprim::block_store_method::block_store_transpose,
1007 block_scan_algorithm::reduce_then_scan>
1011 template<class key_type, class value_type>
1012 struct default_scan_by_key_config<
1013 static_cast<unsigned int>(target_arch::gfx906),
1016 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1017 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1018 && (sizeof(value_type) > 1))>>
1019 : scan_by_key_config_v2<256,
1021 ::rocprim::block_load_method::block_load_transpose,
1022 ::rocprim::block_store_method::block_store_transpose,
1023 block_scan_algorithm::using_warp_scan>
1027 template<class key_type, class value_type>
1028 struct default_scan_by_key_config<
1029 static_cast<unsigned int>(target_arch::gfx906),
1032 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1033 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
1034 : scan_by_key_config_v2<64,
1036 ::rocprim::block_load_method::block_load_transpose,
1037 ::rocprim::block_store_method::block_store_transpose,
1038 block_scan_algorithm::reduce_then_scan>
1042 template<class key_type, class value_type>
1043 struct default_scan_by_key_config<
1044 static_cast<unsigned int>(target_arch::gfx906),
1047 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1048 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1049 : scan_by_key_config_v2<64,
1051 ::rocprim::block_load_method::block_load_transpose,
1052 ::rocprim::block_store_method::block_store_transpose,
1053 block_scan_algorithm::reduce_then_scan>
1057 template<class key_type, class value_type>
1058 struct default_scan_by_key_config<
1059 static_cast<unsigned int>(target_arch::gfx906),
1062 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1063 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1064 : scan_by_key_config_v2<256,
1066 ::rocprim::block_load_method::block_load_transpose,
1067 ::rocprim::block_store_method::block_store_transpose,
1068 block_scan_algorithm::using_warp_scan>
1072 template<class key_type, class value_type>
1073 struct default_scan_by_key_config<
1074 static_cast<unsigned int>(target_arch::gfx906),
1077 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1078 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1079 : scan_by_key_config_v2<64,
1081 ::rocprim::block_load_method::block_load_transpose,
1082 ::rocprim::block_store_method::block_store_transpose,
1083 block_scan_algorithm::reduce_then_scan>
1087 template<class key_type, class value_type>
1088 struct default_scan_by_key_config<
1089 static_cast<unsigned int>(target_arch::gfx906),
1092 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1093 && (sizeof(value_type) <= 1))>>
1094 : scan_by_key_config_v2<64,
1096 ::rocprim::block_load_method::block_load_transpose,
1097 ::rocprim::block_store_method::block_store_transpose,
1098 block_scan_algorithm::using_warp_scan>
1102 template<class key_type, class value_type>
1103 struct default_scan_by_key_config<
1104 static_cast<unsigned int>(target_arch::gfx906),
1107 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1108 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1109 && (sizeof(value_type) > 4))>>
1110 : scan_by_key_config_v2<256,
1112 ::rocprim::block_load_method::block_load_transpose,
1113 ::rocprim::block_store_method::block_store_transpose,
1114 block_scan_algorithm::using_warp_scan>
1118 template<class key_type, class value_type>
1119 struct default_scan_by_key_config<
1120 static_cast<unsigned int>(target_arch::gfx906),
1123 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1124 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1125 && (sizeof(value_type) > 2))>>
1126 : scan_by_key_config_v2<256,
1128 ::rocprim::block_load_method::block_load_transpose,
1129 ::rocprim::block_store_method::block_store_transpose,
1130 block_scan_algorithm::using_warp_scan>
1134 template<class key_type, class value_type>
1135 struct default_scan_by_key_config<
1136 static_cast<unsigned int>(target_arch::gfx906),
1139 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1140 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1141 && (sizeof(value_type) > 1))>>
1142 : scan_by_key_config_v2<64,
1144 ::rocprim::block_load_method::block_load_transpose,
1145 ::rocprim::block_store_method::block_store_transpose,
1146 block_scan_algorithm::reduce_then_scan>
1150 template<class key_type, class value_type>
1151 struct default_scan_by_key_config<
1152 static_cast<unsigned int>(target_arch::gfx906),
1155 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1156 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
1157 : scan_by_key_config_v2<64,
1159 ::rocprim::block_load_method::block_load_transpose,
1160 ::rocprim::block_store_method::block_store_transpose,
1161 block_scan_algorithm::using_warp_scan>
1165 template<class key_type, class value_type>
1166 struct default_scan_by_key_config<
1167 static_cast<unsigned int>(target_arch::gfx906),
1170 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1171 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1172 && (sizeof(value_type) > 4))>>
1173 : scan_by_key_config_v2<64,
1175 ::rocprim::block_load_method::block_load_transpose,
1176 ::rocprim::block_store_method::block_store_transpose,
1177 block_scan_algorithm::reduce_then_scan>
1181 template<class key_type, class value_type>
1182 struct default_scan_by_key_config<
1183 static_cast<unsigned int>(target_arch::gfx906),
1186 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1187 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1188 && (sizeof(value_type) > 2))>>
1189 : scan_by_key_config_v2<256,
1191 ::rocprim::block_load_method::block_load_transpose,
1192 ::rocprim::block_store_method::block_store_transpose,
1193 block_scan_algorithm::reduce_then_scan>
1197 template<class key_type, class value_type>
1198 struct default_scan_by_key_config<
1199 static_cast<unsigned int>(target_arch::gfx906),
1202 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1203 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1204 && (sizeof(value_type) > 1))>>
1205 : scan_by_key_config_v2<256,
1207 ::rocprim::block_load_method::block_load_transpose,
1208 ::rocprim::block_store_method::block_store_transpose,
1209 block_scan_algorithm::using_warp_scan>
1213 template<class key_type, class value_type>
1214 struct default_scan_by_key_config<
1215 static_cast<unsigned int>(target_arch::gfx906),
1218 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1219 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
1220 : scan_by_key_config_v2<64,
1222 ::rocprim::block_load_method::block_load_transpose,
1223 ::rocprim::block_store_method::block_store_transpose,
1224 block_scan_algorithm::using_warp_scan>
1228 template<class key_type, class value_type>
1229 struct default_scan_by_key_config<
1230 static_cast<unsigned int>(target_arch::gfx906),
1233 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1234 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
1235 && (sizeof(value_type) > 4))>>
1236 : scan_by_key_config_v2<64,
1238 ::rocprim::block_load_method::block_load_transpose,
1239 ::rocprim::block_store_method::block_store_transpose,
1240 block_scan_algorithm::using_warp_scan>
1244 template<class key_type, class value_type>
1245 struct default_scan_by_key_config<
1246 static_cast<unsigned int>(target_arch::gfx906),
1249 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1250 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
1251 && (sizeof(value_type) > 2))>>
1252 : scan_by_key_config_v2<256,
1254 ::rocprim::block_load_method::block_load_transpose,
1255 ::rocprim::block_store_method::block_store_transpose,
1256 block_scan_algorithm::using_warp_scan>
1260 template<class key_type, class value_type>
1261 struct default_scan_by_key_config<
1262 static_cast<unsigned int>(target_arch::gfx906),
1265 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1266 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
1267 && (sizeof(value_type) > 1))>>
1268 : scan_by_key_config_v2<64,
1270 ::rocprim::block_load_method::block_load_transpose,
1271 ::rocprim::block_store_method::block_store_transpose,
1272 block_scan_algorithm::using_warp_scan>
1276 template<class key_type, class value_type>
1277 struct default_scan_by_key_config<
1278 static_cast<unsigned int>(target_arch::gfx906),
1281 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1282 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1))>>
1283 : scan_by_key_config_v2<64,
1285 ::rocprim::block_load_method::block_load_transpose,
1286 ::rocprim::block_store_method::block_store_transpose,
1287 block_scan_algorithm::using_warp_scan>
1291 template<class key_type, class value_type>
1292 struct default_scan_by_key_config<
1293 static_cast<unsigned int>(target_arch::gfx906),
1296 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1297 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1298 : scan_by_key_config_v2<64,
1300 ::rocprim::block_load_method::block_load_transpose,
1301 ::rocprim::block_store_method::block_store_transpose,
1302 block_scan_algorithm::reduce_then_scan>
1306 template<class key_type, class value_type>
1307 struct default_scan_by_key_config<
1308 static_cast<unsigned int>(target_arch::gfx906),
1311 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1312 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1313 : scan_by_key_config_v2<256,
1315 ::rocprim::block_load_method::block_load_transpose,
1316 ::rocprim::block_store_method::block_store_transpose,
1317 block_scan_algorithm::using_warp_scan>
1321 template<class key_type, class value_type>
1322 struct default_scan_by_key_config<
1323 static_cast<unsigned int>(target_arch::gfx906),
1326 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1327 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1328 : scan_by_key_config_v2<64,
1330 ::rocprim::block_load_method::block_load_transpose,
1331 ::rocprim::block_store_method::block_store_transpose,
1332 block_scan_algorithm::using_warp_scan>
1336 template<class key_type, class value_type>
1337 struct default_scan_by_key_config<
1338 static_cast<unsigned int>(target_arch::gfx906),
1341 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1342 && (sizeof(value_type) <= 1))>>
1343 : scan_by_key_config_v2<64,
1345 ::rocprim::block_load_method::block_load_transpose,
1346 ::rocprim::block_store_method::block_store_transpose,
1347 block_scan_algorithm::reduce_then_scan>
1351 template<class key_type, class value_type>
1352 struct default_scan_by_key_config<
1353 static_cast<unsigned int>(target_arch::gfx1030),
1356 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1357 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1358 && (sizeof(value_type) > 4))>>
1359 : scan_by_key_config_v2<128,
1361 ::rocprim::block_load_method::block_load_transpose,
1362 ::rocprim::block_store_method::block_store_transpose,
1363 block_scan_algorithm::using_warp_scan>
1367 template<class key_type, class value_type>
1368 struct default_scan_by_key_config<
1369 static_cast<unsigned int>(target_arch::gfx1030),
1372 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1373 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1374 && (sizeof(value_type) > 2))>>
1375 : scan_by_key_config_v2<128,
1377 ::rocprim::block_load_method::block_load_transpose,
1378 ::rocprim::block_store_method::block_store_transpose,
1379 block_scan_algorithm::reduce_then_scan>
1383 template<class key_type, class value_type>
1384 struct default_scan_by_key_config<
1385 static_cast<unsigned int>(target_arch::gfx1030),
1388 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1389 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1390 && (sizeof(value_type) > 1))>>
1391 : scan_by_key_config_v2<64,
1393 ::rocprim::block_load_method::block_load_transpose,
1394 ::rocprim::block_store_method::block_store_transpose,
1395 block_scan_algorithm::using_warp_scan>
1399 template<class key_type, class value_type>
1400 struct default_scan_by_key_config<
1401 static_cast<unsigned int>(target_arch::gfx1030),
1404 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1405 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
1406 : scan_by_key_config_v2<64,
1408 ::rocprim::block_load_method::block_load_transpose,
1409 ::rocprim::block_store_method::block_store_transpose,
1410 block_scan_algorithm::using_warp_scan>
1414 template<class key_type, class value_type>
1415 struct default_scan_by_key_config<
1416 static_cast<unsigned int>(target_arch::gfx1030),
1419 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1420 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1421 && (sizeof(value_type) > 4))>>
1422 : scan_by_key_config_v2<256,
1424 ::rocprim::block_load_method::block_load_transpose,
1425 ::rocprim::block_store_method::block_store_transpose,
1426 block_scan_algorithm::using_warp_scan>
1430 template<class key_type, class value_type>
1431 struct default_scan_by_key_config<
1432 static_cast<unsigned int>(target_arch::gfx1030),
1435 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1436 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1437 && (sizeof(value_type) > 2))>>
1438 : scan_by_key_config_v2<256,
1440 ::rocprim::block_load_method::block_load_transpose,
1441 ::rocprim::block_store_method::block_store_transpose,
1442 block_scan_algorithm::using_warp_scan>
1446 template<class key_type, class value_type>
1447 struct default_scan_by_key_config<
1448 static_cast<unsigned int>(target_arch::gfx1030),
1451 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1452 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1453 && (sizeof(value_type) > 1))>>
1454 : scan_by_key_config_v2<64,
1456 ::rocprim::block_load_method::block_load_transpose,
1457 ::rocprim::block_store_method::block_store_transpose,
1458 block_scan_algorithm::reduce_then_scan>
1462 template<class key_type, class value_type>
1463 struct default_scan_by_key_config<
1464 static_cast<unsigned int>(target_arch::gfx1030),
1467 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1468 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
1469 : scan_by_key_config_v2<128,
1471 ::rocprim::block_load_method::block_load_transpose,
1472 ::rocprim::block_store_method::block_store_transpose,
1473 block_scan_algorithm::reduce_then_scan>
1477 template<class key_type, class value_type>
1478 struct default_scan_by_key_config<
1479 static_cast<unsigned int>(target_arch::gfx1030),
1482 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1483 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1484 : scan_by_key_config_v2<64,
1486 ::rocprim::block_load_method::block_load_transpose,
1487 ::rocprim::block_store_method::block_store_transpose,
1488 block_scan_algorithm::using_warp_scan>
1492 template<class key_type, class value_type>
1493 struct default_scan_by_key_config<
1494 static_cast<unsigned int>(target_arch::gfx1030),
1497 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1498 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1499 : scan_by_key_config_v2<128,
1501 ::rocprim::block_load_method::block_load_transpose,
1502 ::rocprim::block_store_method::block_store_transpose,
1503 block_scan_algorithm::using_warp_scan>
1507 template<class key_type, class value_type>
1508 struct default_scan_by_key_config<
1509 static_cast<unsigned int>(target_arch::gfx1030),
1512 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1513 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1514 : scan_by_key_config_v2<128,
1516 ::rocprim::block_load_method::block_load_transpose,
1517 ::rocprim::block_store_method::block_store_transpose,
1518 block_scan_algorithm::using_warp_scan>
1522 template<class key_type, class value_type>
1523 struct default_scan_by_key_config<
1524 static_cast<unsigned int>(target_arch::gfx1030),
1527 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1528 && (sizeof(value_type) <= 1))>>
1529 : scan_by_key_config_v2<256,
1531 ::rocprim::block_load_method::block_load_transpose,
1532 ::rocprim::block_store_method::block_store_transpose,
1533 block_scan_algorithm::using_warp_scan>
1537 template<class key_type, class value_type>
1538 struct default_scan_by_key_config<
1539 static_cast<unsigned int>(target_arch::gfx1030),
1542 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1543 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1544 && (sizeof(value_type) > 4))>>
1545 : scan_by_key_config_v2<256,
1547 ::rocprim::block_load_method::block_load_transpose,
1548 ::rocprim::block_store_method::block_store_transpose,
1549 block_scan_algorithm::using_warp_scan>
1553 template<class key_type, class value_type>
1554 struct default_scan_by_key_config<
1555 static_cast<unsigned int>(target_arch::gfx1030),
1558 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1559 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1560 && (sizeof(value_type) > 2))>>
1561 : scan_by_key_config_v2<128,
1563 ::rocprim::block_load_method::block_load_transpose,
1564 ::rocprim::block_store_method::block_store_transpose,
1565 block_scan_algorithm::using_warp_scan>
1569 template<class key_type, class value_type>
1570 struct default_scan_by_key_config<
1571 static_cast<unsigned int>(target_arch::gfx1030),
1574 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1575 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1576 && (sizeof(value_type) > 1))>>
1577 : scan_by_key_config_v2<64,
1579 ::rocprim::block_load_method::block_load_transpose,
1580 ::rocprim::block_store_method::block_store_transpose,
1581 block_scan_algorithm::using_warp_scan>
1585 template<class key_type, class value_type>
1586 struct default_scan_by_key_config<
1587 static_cast<unsigned int>(target_arch::gfx1030),
1590 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1591 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
1592 : scan_by_key_config_v2<64,
1594 ::rocprim::block_load_method::block_load_transpose,
1595 ::rocprim::block_store_method::block_store_transpose,
1596 block_scan_algorithm::reduce_then_scan>
1600 template<class key_type, class value_type>
1601 struct default_scan_by_key_config<
1602 static_cast<unsigned int>(target_arch::gfx1030),
1605 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1606 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1607 && (sizeof(value_type) > 4))>>
1608 : scan_by_key_config_v2<256,
1610 ::rocprim::block_load_method::block_load_transpose,
1611 ::rocprim::block_store_method::block_store_transpose,
1612 block_scan_algorithm::using_warp_scan>
1616 template<class key_type, class value_type>
1617 struct default_scan_by_key_config<
1618 static_cast<unsigned int>(target_arch::gfx1030),
1621 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1622 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1623 && (sizeof(value_type) > 2))>>
1624 : scan_by_key_config_v2<128,
1626 ::rocprim::block_load_method::block_load_transpose,
1627 ::rocprim::block_store_method::block_store_transpose,
1628 block_scan_algorithm::reduce_then_scan>
1632 template<class key_type, class value_type>
1633 struct default_scan_by_key_config<
1634 static_cast<unsigned int>(target_arch::gfx1030),
1637 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1638 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1639 && (sizeof(value_type) > 1))>>
1640 : scan_by_key_config_v2<64,
1642 ::rocprim::block_load_method::block_load_transpose,
1643 ::rocprim::block_store_method::block_store_transpose,
1644 block_scan_algorithm::reduce_then_scan>
1648 template<class key_type, class value_type>
1649 struct default_scan_by_key_config<
1650 static_cast<unsigned int>(target_arch::gfx1030),
1653 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1654 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
1655 : scan_by_key_config_v2<128,
1657 ::rocprim::block_load_method::block_load_transpose,
1658 ::rocprim::block_store_method::block_store_transpose,
1659 block_scan_algorithm::reduce_then_scan>
1663 template<class key_type, class value_type>
1664 struct default_scan_by_key_config<
1665 static_cast<unsigned int>(target_arch::gfx1030),
1668 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1669 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
1670 && (sizeof(value_type) > 4))>>
1671 : scan_by_key_config_v2<256,
1673 ::rocprim::block_load_method::block_load_transpose,
1674 ::rocprim::block_store_method::block_store_transpose,
1675 block_scan_algorithm::using_warp_scan>
1679 template<class key_type, class value_type>
1680 struct default_scan_by_key_config<
1681 static_cast<unsigned int>(target_arch::gfx1030),
1684 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1685 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
1686 && (sizeof(value_type) > 2))>>
1687 : scan_by_key_config_v2<128,
1689 ::rocprim::block_load_method::block_load_transpose,
1690 ::rocprim::block_store_method::block_store_transpose,
1691 block_scan_algorithm::using_warp_scan>
1695 template<class key_type, class value_type>
1696 struct default_scan_by_key_config<
1697 static_cast<unsigned int>(target_arch::gfx1030),
1700 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1701 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
1702 && (sizeof(value_type) > 1))>>
1703 : scan_by_key_config_v2<128,
1705 ::rocprim::block_load_method::block_load_transpose,
1706 ::rocprim::block_store_method::block_store_transpose,
1707 block_scan_algorithm::using_warp_scan>
1711 template<class key_type, class value_type>
1712 struct default_scan_by_key_config<
1713 static_cast<unsigned int>(target_arch::gfx1030),
1716 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
1717 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1))>>
1718 : scan_by_key_config_v2<256,
1720 ::rocprim::block_load_method::block_load_transpose,
1721 ::rocprim::block_store_method::block_store_transpose,
1722 block_scan_algorithm::using_warp_scan>
1726 template<class key_type, class value_type>
1727 struct default_scan_by_key_config<
1728 static_cast<unsigned int>(target_arch::gfx1030),
1731 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1732 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1733 : scan_by_key_config_v2<128,
1735 ::rocprim::block_load_method::block_load_transpose,
1736 ::rocprim::block_store_method::block_store_transpose,
1737 block_scan_algorithm::reduce_then_scan>
1741 template<class key_type, class value_type>
1742 struct default_scan_by_key_config<
1743 static_cast<unsigned int>(target_arch::gfx1030),
1746 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1747 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1748 : scan_by_key_config_v2<256,
1750 ::rocprim::block_load_method::block_load_transpose,
1751 ::rocprim::block_store_method::block_store_transpose,
1752 block_scan_algorithm::using_warp_scan>
1756 template<class key_type, class value_type>
1757 struct default_scan_by_key_config<
1758 static_cast<unsigned int>(target_arch::gfx1030),
1761 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1762 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1763 : scan_by_key_config_v2<128,
1765 ::rocprim::block_load_method::block_load_transpose,
1766 ::rocprim::block_store_method::block_store_transpose,
1767 block_scan_algorithm::using_warp_scan>
1771 template<class key_type, class value_type>
1772 struct default_scan_by_key_config<
1773 static_cast<unsigned int>(target_arch::gfx1030),
1776 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
1777 && (sizeof(value_type) <= 1))>>
1778 : scan_by_key_config_v2<256,
1780 ::rocprim::block_load_method::block_load_transpose,
1781 ::rocprim::block_store_method::block_store_transpose,
1782 block_scan_algorithm::using_warp_scan>
1786 template<class key_type, class value_type>
1787 struct default_scan_by_key_config<
1788 static_cast<unsigned int>(target_arch::unknown),
1791 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1792 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1793 && (sizeof(value_type) > 4))>>
1794 : scan_by_key_config_v2<256,
1796 ::rocprim::block_load_method::block_load_transpose,
1797 ::rocprim::block_store_method::block_store_transpose,
1798 block_scan_algorithm::using_warp_scan>
1802 template<class key_type, class value_type>
1803 struct default_scan_by_key_config<
1804 static_cast<unsigned int>(target_arch::unknown),
1807 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1808 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1809 && (sizeof(value_type) > 2))>>
1810 : scan_by_key_config_v2<256,
1812 ::rocprim::block_load_method::block_load_transpose,
1813 ::rocprim::block_store_method::block_store_transpose,
1814 block_scan_algorithm::reduce_then_scan>
1818 template<class key_type, class value_type>
1819 struct default_scan_by_key_config<
1820 static_cast<unsigned int>(target_arch::unknown),
1823 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1824 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
1825 && (sizeof(value_type) > 1))>>
1826 : scan_by_key_config_v2<64,
1828 ::rocprim::block_load_method::block_load_transpose,
1829 ::rocprim::block_store_method::block_store_transpose,
1830 block_scan_algorithm::using_warp_scan>
1834 template<class key_type, class value_type>
1835 struct default_scan_by_key_config<
1836 static_cast<unsigned int>(target_arch::unknown),
1839 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1840 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
1841 : scan_by_key_config_v2<64,
1843 ::rocprim::block_load_method::block_load_transpose,
1844 ::rocprim::block_store_method::block_store_transpose,
1845 block_scan_algorithm::reduce_then_scan>
1849 template<class key_type, class value_type>
1850 struct default_scan_by_key_config<
1851 static_cast<unsigned int>(target_arch::unknown),
1854 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1855 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
1856 && (sizeof(value_type) > 4))>>
1857 : scan_by_key_config_v2<128,
1859 ::rocprim::block_load_method::block_load_transpose,
1860 ::rocprim::block_store_method::block_store_transpose,
1861 block_scan_algorithm::using_warp_scan>
1865 template<class key_type, class value_type>
1866 struct default_scan_by_key_config<
1867 static_cast<unsigned int>(target_arch::unknown),
1870 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1871 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
1872 && (sizeof(value_type) > 2))>>
1873 : scan_by_key_config_v2<256,
1875 ::rocprim::block_load_method::block_load_transpose,
1876 ::rocprim::block_store_method::block_store_transpose,
1877 block_scan_algorithm::reduce_then_scan>
1881 template<class key_type, class value_type>
1882 struct default_scan_by_key_config<
1883 static_cast<unsigned int>(target_arch::unknown),
1886 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
1887 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
1888 && (sizeof(value_type) > 1))>>
1889 : scan_by_key_config_v2<256,
1891 ::rocprim::block_load_method::block_load_transpose,
1892 ::rocprim::block_store_method::block_store_transpose,
1893 block_scan_algorithm::reduce_then_scan>
1897 template<class key_type, class value_type>
1898 struct default_scan_by_key_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) <= 1))>>
1904 : scan_by_key_config_v2<128,
1906 ::rocprim::block_load_method::block_load_transpose,
1907 ::rocprim::block_store_method::block_store_transpose,
1908 block_scan_algorithm::using_warp_scan>
1912 template<class key_type, class value_type>
1913 struct default_scan_by_key_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) <= 2)
1918 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
1919 : scan_by_key_config_v2<64,
1921 ::rocprim::block_load_method::block_load_transpose,
1922 ::rocprim::block_store_method::block_store_transpose,
1923 block_scan_algorithm::using_warp_scan>
1927 template<class key_type, class value_type>
1928 struct default_scan_by_key_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) <= 2)
1933 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
1934 : scan_by_key_config_v2<256,
1936 ::rocprim::block_load_method::block_load_transpose,
1937 ::rocprim::block_store_method::block_store_transpose,
1938 block_scan_algorithm::using_warp_scan>
1942 template<class key_type, class value_type>
1943 struct default_scan_by_key_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) <= 2)
1948 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
1949 : scan_by_key_config_v2<256,
1951 ::rocprim::block_load_method::block_load_transpose,
1952 ::rocprim::block_store_method::block_store_transpose,
1953 block_scan_algorithm::reduce_then_scan>
1957 template<class key_type, class value_type>
1958 struct default_scan_by_key_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) <= 2)
1963 && (sizeof(value_type) <= 1))>>
1964 : scan_by_key_config_v2<256,
1966 ::rocprim::block_load_method::block_load_transpose,
1967 ::rocprim::block_store_method::block_store_transpose,
1968 block_scan_algorithm::using_warp_scan>
1972 template<class key_type, class value_type>
1973 struct default_scan_by_key_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) <= 8)
1978 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
1979 && (sizeof(value_type) > 4))>>
1980 : scan_by_key_config_v2<256,
1982 ::rocprim::block_load_method::block_load_transpose,
1983 ::rocprim::block_store_method::block_store_transpose,
1984 block_scan_algorithm::reduce_then_scan>
1988 template<class key_type, class value_type>
1989 struct default_scan_by_key_config<
1990 static_cast<unsigned int>(target_arch::unknown),
1993 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
1994 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
1995 && (sizeof(value_type) > 2))>>
1996 : scan_by_key_config_v2<256,
1998 ::rocprim::block_load_method::block_load_transpose,
1999 ::rocprim::block_store_method::block_store_transpose,
2000 block_scan_algorithm::reduce_then_scan>
2004 template<class key_type, class value_type>
2005 struct default_scan_by_key_config<
2006 static_cast<unsigned int>(target_arch::unknown),
2009 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2010 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2011 && (sizeof(value_type) > 1))>>
2012 : scan_by_key_config_v2<64,
2014 ::rocprim::block_load_method::block_load_transpose,
2015 ::rocprim::block_store_method::block_store_transpose,
2016 block_scan_algorithm::using_warp_scan>
2020 template<class key_type, class value_type>
2021 struct default_scan_by_key_config<
2022 static_cast<unsigned int>(target_arch::unknown),
2025 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2026 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
2027 : scan_by_key_config_v2<256,
2029 ::rocprim::block_load_method::block_load_transpose,
2030 ::rocprim::block_store_method::block_store_transpose,
2031 block_scan_algorithm::using_warp_scan>
2035 template<class key_type, class value_type>
2036 struct default_scan_by_key_config<
2037 static_cast<unsigned int>(target_arch::unknown),
2040 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2041 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2042 && (sizeof(value_type) > 4))>>
2043 : scan_by_key_config_v2<128,
2045 ::rocprim::block_load_method::block_load_transpose,
2046 ::rocprim::block_store_method::block_store_transpose,
2047 block_scan_algorithm::using_warp_scan>
2051 template<class key_type, class value_type>
2052 struct default_scan_by_key_config<
2053 static_cast<unsigned int>(target_arch::unknown),
2056 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2057 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2058 && (sizeof(value_type) > 2))>>
2059 : scan_by_key_config_v2<256,
2061 ::rocprim::block_load_method::block_load_transpose,
2062 ::rocprim::block_store_method::block_store_transpose,
2063 block_scan_algorithm::reduce_then_scan>
2067 template<class key_type, class value_type>
2068 struct default_scan_by_key_config<
2069 static_cast<unsigned int>(target_arch::unknown),
2072 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2073 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2074 && (sizeof(value_type) > 1))>>
2075 : scan_by_key_config_v2<256,
2077 ::rocprim::block_load_method::block_load_transpose,
2078 ::rocprim::block_store_method::block_store_transpose,
2079 block_scan_algorithm::reduce_then_scan>
2083 template<class key_type, class value_type>
2084 struct default_scan_by_key_config<
2085 static_cast<unsigned int>(target_arch::unknown),
2088 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2089 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
2090 : scan_by_key_config_v2<128,
2092 ::rocprim::block_load_method::block_load_transpose,
2093 ::rocprim::block_store_method::block_store_transpose,
2094 block_scan_algorithm::using_warp_scan>
2098 template<class key_type, class value_type>
2099 struct default_scan_by_key_config<
2100 static_cast<unsigned int>(target_arch::unknown),
2103 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2104 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
2105 && (sizeof(value_type) > 4))>>
2106 : scan_by_key_config_v2<64,
2108 ::rocprim::block_load_method::block_load_transpose,
2109 ::rocprim::block_store_method::block_store_transpose,
2110 block_scan_algorithm::reduce_then_scan>
2114 template<class key_type, class value_type>
2115 struct default_scan_by_key_config<
2116 static_cast<unsigned int>(target_arch::unknown),
2119 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2120 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 4)
2121 && (sizeof(value_type) > 2))>>
2122 : scan_by_key_config_v2<256,
2124 ::rocprim::block_load_method::block_load_transpose,
2125 ::rocprim::block_store_method::block_store_transpose,
2126 block_scan_algorithm::using_warp_scan>
2130 template<class key_type, class value_type>
2131 struct default_scan_by_key_config<
2132 static_cast<unsigned int>(target_arch::unknown),
2135 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2136 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
2137 && (sizeof(value_type) > 1))>>
2138 : scan_by_key_config_v2<256,
2140 ::rocprim::block_load_method::block_load_transpose,
2141 ::rocprim::block_store_method::block_store_transpose,
2142 block_scan_algorithm::reduce_then_scan>
2146 template<class key_type, class value_type>
2147 struct default_scan_by_key_config<
2148 static_cast<unsigned int>(target_arch::unknown),
2151 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2152 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1))>>
2153 : scan_by_key_config_v2<256,
2155 ::rocprim::block_load_method::block_load_transpose,
2156 ::rocprim::block_store_method::block_store_transpose,
2157 block_scan_algorithm::using_warp_scan>
2161 template<class key_type, class value_type>
2162 struct default_scan_by_key_config<
2163 static_cast<unsigned int>(target_arch::unknown),
2166 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2167 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2168 : scan_by_key_config_v2<64,
2170 ::rocprim::block_load_method::block_load_transpose,
2171 ::rocprim::block_store_method::block_store_transpose,
2172 block_scan_algorithm::using_warp_scan>
2176 template<class key_type, class value_type>
2177 struct default_scan_by_key_config<
2178 static_cast<unsigned int>(target_arch::unknown),
2181 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2182 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2183 : scan_by_key_config_v2<128,
2185 ::rocprim::block_load_method::block_load_transpose,
2186 ::rocprim::block_store_method::block_store_transpose,
2187 block_scan_algorithm::using_warp_scan>
2191 template<class key_type, class value_type>
2192 struct default_scan_by_key_config<
2193 static_cast<unsigned int>(target_arch::unknown),
2196 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2197 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2198 : scan_by_key_config_v2<256,
2200 ::rocprim::block_load_method::block_load_transpose,
2201 ::rocprim::block_store_method::block_store_transpose,
2202 block_scan_algorithm::reduce_then_scan>
2206 template<class key_type, class value_type>
2207 struct default_scan_by_key_config<
2208 static_cast<unsigned int>(target_arch::unknown),
2211 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2212 && (sizeof(value_type) <= 1))>>
2213 : scan_by_key_config_v2<256,
2215 ::rocprim::block_load_method::block_load_transpose,
2216 ::rocprim::block_store_method::block_store_transpose,
2217 block_scan_algorithm::reduce_then_scan>
2221 template<class key_type, class value_type>
2222 struct default_scan_by_key_config<
2223 static_cast<unsigned int>(target_arch::gfx90a),
2226 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2227 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
2228 && (sizeof(value_type) > 4))>>
2229 : scan_by_key_config_v2<256,
2231 ::rocprim::block_load_method::block_load_transpose,
2232 ::rocprim::block_store_method::block_store_transpose,
2233 block_scan_algorithm::using_warp_scan>
2237 template<class key_type, class value_type>
2238 struct default_scan_by_key_config<
2239 static_cast<unsigned int>(target_arch::gfx90a),
2242 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2243 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
2244 && (sizeof(value_type) > 2))>>
2245 : scan_by_key_config_v2<256,
2247 ::rocprim::block_load_method::block_load_transpose,
2248 ::rocprim::block_store_method::block_store_transpose,
2249 block_scan_algorithm::reduce_then_scan>
2253 template<class key_type, class value_type>
2254 struct default_scan_by_key_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) <= 8)
2259 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2260 && (sizeof(value_type) > 1))>>
2261 : scan_by_key_config_v2<64,
2263 ::rocprim::block_load_method::block_load_transpose,
2264 ::rocprim::block_store_method::block_store_transpose,
2265 block_scan_algorithm::using_warp_scan>
2269 template<class key_type, class value_type>
2270 struct default_scan_by_key_config<
2271 static_cast<unsigned int>(target_arch::gfx90a),
2274 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2275 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
2276 : scan_by_key_config_v2<64,
2278 ::rocprim::block_load_method::block_load_transpose,
2279 ::rocprim::block_store_method::block_store_transpose,
2280 block_scan_algorithm::reduce_then_scan>
2284 template<class key_type, class value_type>
2285 struct default_scan_by_key_config<
2286 static_cast<unsigned int>(target_arch::gfx90a),
2289 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2290 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2291 && (sizeof(value_type) > 4))>>
2292 : scan_by_key_config_v2<128,
2294 ::rocprim::block_load_method::block_load_transpose,
2295 ::rocprim::block_store_method::block_store_transpose,
2296 block_scan_algorithm::using_warp_scan>
2300 template<class key_type, class value_type>
2301 struct default_scan_by_key_config<
2302 static_cast<unsigned int>(target_arch::gfx90a),
2305 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2306 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2307 && (sizeof(value_type) > 2))>>
2308 : scan_by_key_config_v2<256,
2310 ::rocprim::block_load_method::block_load_transpose,
2311 ::rocprim::block_store_method::block_store_transpose,
2312 block_scan_algorithm::reduce_then_scan>
2316 template<class key_type, class value_type>
2317 struct default_scan_by_key_config<
2318 static_cast<unsigned int>(target_arch::gfx90a),
2321 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2322 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2323 && (sizeof(value_type) > 1))>>
2324 : scan_by_key_config_v2<256,
2326 ::rocprim::block_load_method::block_load_transpose,
2327 ::rocprim::block_store_method::block_store_transpose,
2328 block_scan_algorithm::reduce_then_scan>
2332 template<class key_type, class value_type>
2333 struct default_scan_by_key_config<
2334 static_cast<unsigned int>(target_arch::gfx90a),
2337 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2338 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
2339 : scan_by_key_config_v2<128,
2341 ::rocprim::block_load_method::block_load_transpose,
2342 ::rocprim::block_store_method::block_store_transpose,
2343 block_scan_algorithm::using_warp_scan>
2347 template<class key_type, class value_type>
2348 struct default_scan_by_key_config<
2349 static_cast<unsigned int>(target_arch::gfx90a),
2352 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2353 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2354 : scan_by_key_config_v2<64,
2356 ::rocprim::block_load_method::block_load_transpose,
2357 ::rocprim::block_store_method::block_store_transpose,
2358 block_scan_algorithm::using_warp_scan>
2362 template<class key_type, class value_type>
2363 struct default_scan_by_key_config<
2364 static_cast<unsigned int>(target_arch::gfx90a),
2367 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2368 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2369 : scan_by_key_config_v2<256,
2371 ::rocprim::block_load_method::block_load_transpose,
2372 ::rocprim::block_store_method::block_store_transpose,
2373 block_scan_algorithm::using_warp_scan>
2377 template<class key_type, class value_type>
2378 struct default_scan_by_key_config<
2379 static_cast<unsigned int>(target_arch::gfx90a),
2382 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2383 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2384 : scan_by_key_config_v2<256,
2386 ::rocprim::block_load_method::block_load_transpose,
2387 ::rocprim::block_store_method::block_store_transpose,
2388 block_scan_algorithm::reduce_then_scan>
2392 template<class key_type, class value_type>
2393 struct default_scan_by_key_config<
2394 static_cast<unsigned int>(target_arch::gfx90a),
2397 std::enable_if_t<(bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2398 && (sizeof(value_type) <= 1))>>
2399 : scan_by_key_config_v2<256,
2401 ::rocprim::block_load_method::block_load_transpose,
2402 ::rocprim::block_store_method::block_store_transpose,
2403 block_scan_algorithm::using_warp_scan>
2407 template<class key_type, class value_type>
2408 struct default_scan_by_key_config<
2409 static_cast<unsigned int>(target_arch::gfx90a),
2412 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2413 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 8)
2414 && (sizeof(value_type) > 4))>>
2415 : scan_by_key_config_v2<256,
2417 ::rocprim::block_load_method::block_load_transpose,
2418 ::rocprim::block_store_method::block_store_transpose,
2419 block_scan_algorithm::reduce_then_scan>
2423 template<class key_type, class value_type>
2424 struct default_scan_by_key_config<
2425 static_cast<unsigned int>(target_arch::gfx90a),
2428 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2429 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 4)
2430 && (sizeof(value_type) > 2))>>
2431 : scan_by_key_config_v2<256,
2433 ::rocprim::block_load_method::block_load_transpose,
2434 ::rocprim::block_store_method::block_store_transpose,
2435 block_scan_algorithm::reduce_then_scan>
2439 template<class key_type, class value_type>
2440 struct default_scan_by_key_config<
2441 static_cast<unsigned int>(target_arch::gfx90a),
2444 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2445 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 2)
2446 && (sizeof(value_type) > 1))>>
2447 : scan_by_key_config_v2<64,
2449 ::rocprim::block_load_method::block_load_transpose,
2450 ::rocprim::block_store_method::block_store_transpose,
2451 block_scan_algorithm::using_warp_scan>
2455 template<class key_type, class value_type>
2456 struct default_scan_by_key_config<
2457 static_cast<unsigned int>(target_arch::gfx90a),
2460 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 8)
2461 && (sizeof(key_type) > 4) && (sizeof(value_type) <= 1))>>
2462 : scan_by_key_config_v2<256,
2464 ::rocprim::block_load_method::block_load_transpose,
2465 ::rocprim::block_store_method::block_store_transpose,
2466 block_scan_algorithm::using_warp_scan>
2470 template<class key_type, class value_type>
2471 struct default_scan_by_key_config<
2472 static_cast<unsigned int>(target_arch::gfx90a),
2475 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2476 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 8)
2477 && (sizeof(value_type) > 4))>>
2478 : scan_by_key_config_v2<128,
2480 ::rocprim::block_load_method::block_load_transpose,
2481 ::rocprim::block_store_method::block_store_transpose,
2482 block_scan_algorithm::using_warp_scan>
2486 template<class key_type, class value_type>
2487 struct default_scan_by_key_config<
2488 static_cast<unsigned int>(target_arch::gfx90a),
2491 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2492 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 4)
2493 && (sizeof(value_type) > 2))>>
2494 : scan_by_key_config_v2<256,
2496 ::rocprim::block_load_method::block_load_transpose,
2497 ::rocprim::block_store_method::block_store_transpose,
2498 block_scan_algorithm::reduce_then_scan>
2502 template<class key_type, class value_type>
2503 struct default_scan_by_key_config<
2504 static_cast<unsigned int>(target_arch::gfx90a),
2507 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2508 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 2)
2509 && (sizeof(value_type) > 1))>>
2510 : scan_by_key_config_v2<256,
2512 ::rocprim::block_load_method::block_load_transpose,
2513 ::rocprim::block_store_method::block_store_transpose,
2514 block_scan_algorithm::reduce_then_scan>
2518 template<class key_type, class value_type>
2519 struct default_scan_by_key_config<
2520 static_cast<unsigned int>(target_arch::gfx90a),
2523 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 4)
2524 && (sizeof(key_type) > 2) && (sizeof(value_type) <= 1))>>
2525 : scan_by_key_config_v2<128,
2527 ::rocprim::block_load_method::block_load_transpose,
2528 ::rocprim::block_store_method::block_store_transpose,
2529 block_scan_algorithm::using_warp_scan>
2533 template<class key_type, class value_type>
2534 struct default_scan_by_key_config<
2535 static_cast<unsigned int>(target_arch::gfx90a),
2538 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2539 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 8)
2540 && (sizeof(value_type) > 4))>>
2541 : scan_by_key_config_v2<64,
2543 ::rocprim::block_load_method::block_load_transpose,
2544 ::rocprim::block_store_method::block_store_transpose,
2545 block_scan_algorithm::reduce_then_scan>
2549 template<class key_type, class value_type>
2550 struct default_scan_by_key_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) && (sizeof(value_type) <= 4)
2556 && (sizeof(value_type) > 2))>>
2557 : scan_by_key_config_v2<256,
2559 ::rocprim::block_load_method::block_load_transpose,
2560 ::rocprim::block_store_method::block_store_transpose,
2561 block_scan_algorithm::using_warp_scan>
2565 template<class key_type, class value_type>
2566 struct default_scan_by_key_config<
2567 static_cast<unsigned int>(target_arch::gfx90a),
2570 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2571 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 2)
2572 && (sizeof(value_type) > 1))>>
2573 : scan_by_key_config_v2<256,
2575 ::rocprim::block_load_method::block_load_transpose,
2576 ::rocprim::block_store_method::block_store_transpose,
2577 block_scan_algorithm::reduce_then_scan>
2581 template<class key_type, class value_type>
2582 struct default_scan_by_key_config<
2583 static_cast<unsigned int>(target_arch::gfx90a),
2586 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 2)
2587 && (sizeof(key_type) > 1) && (sizeof(value_type) <= 1))>>
2588 : scan_by_key_config_v2<256,
2590 ::rocprim::block_load_method::block_load_transpose,
2591 ::rocprim::block_store_method::block_store_transpose,
2592 block_scan_algorithm::using_warp_scan>
2596 template<class key_type, class value_type>
2597 struct default_scan_by_key_config<
2598 static_cast<unsigned int>(target_arch::gfx90a),
2601 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2602 && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
2603 : scan_by_key_config_v2<64,
2605 ::rocprim::block_load_method::block_load_transpose,
2606 ::rocprim::block_store_method::block_store_transpose,
2607 block_scan_algorithm::using_warp_scan>
2611 template<class key_type, class value_type>
2612 struct default_scan_by_key_config<
2613 static_cast<unsigned int>(target_arch::gfx90a),
2616 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2617 && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
2618 : scan_by_key_config_v2<128,
2620 ::rocprim::block_load_method::block_load_transpose,
2621 ::rocprim::block_store_method::block_store_transpose,
2622 block_scan_algorithm::using_warp_scan>
2626 template<class key_type, class value_type>
2627 struct default_scan_by_key_config<
2628 static_cast<unsigned int>(target_arch::gfx90a),
2631 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2632 && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
2633 : scan_by_key_config_v2<256,
2635 ::rocprim::block_load_method::block_load_transpose,
2636 ::rocprim::block_store_method::block_store_transpose,
2637 block_scan_algorithm::reduce_then_scan>
2641 template<class key_type, class value_type>
2642 struct default_scan_by_key_config<
2643 static_cast<unsigned int>(target_arch::gfx90a),
2646 std::enable_if_t<(!bool(rocprim::is_floating_point<key_type>::value) && (sizeof(key_type) <= 1)
2647 && (sizeof(value_type) <= 1))>>
2648 : scan_by_key_config_v2<256,
2650 ::rocprim::block_load_method::block_load_transpose,
2651 ::rocprim::block_store_method::block_store_transpose,
2652 block_scan_algorithm::reduce_then_scan>
2657 END_ROCPRIM_NAMESPACE
Configuration of device-level scan-by-key operation.
Definition: device_config_helper.hpp:417
Definition: device_config_helper.hpp:513
Deprecated: Configuration of device-level scan primitives.
Definition: block_histogram.hpp:62
Definition: device_scan_by_key.hpp:42