21 #ifndef ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_SCAN_HPP_    22 #define ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_SCAN_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 value_type, 
class enable = 
void>
    46 template<
class value_type>
    48     static_cast<unsigned int>(target_arch::gfx908),
    50     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
    51                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
    54                      ::rocprim::block_load_method::block_load_transpose,
    55                      ::rocprim::block_store_method::block_store_transpose,
    56                      block_scan_algorithm::reduce_then_scan>
    60 template<
class value_type>
    62     static_cast<unsigned int>(target_arch::gfx908),
    64     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
    65                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
    68                      ::rocprim::block_load_method::block_load_transpose,
    69                      ::rocprim::block_store_method::block_store_transpose,
    70                      block_scan_algorithm::reduce_then_scan>
    74 template<
class value_type>
    77                            std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
    78                                              && (sizeof(value_type) <= 2))>>
    81                      ::rocprim::block_load_method::block_load_transpose,
    82                      ::rocprim::block_store_method::block_store_transpose,
    83                      block_scan_algorithm::reduce_then_scan>
    87 template<
class value_type>
    89     static_cast<unsigned int>(target_arch::gfx908),
    91     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
    92                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
    95                      ::rocprim::block_load_method::block_load_transpose,
    96                      ::rocprim::block_store_method::block_store_transpose,
    97                      block_scan_algorithm::using_warp_scan>
   101 template<
class value_type>
   103     static_cast<unsigned int>(target_arch::gfx908),
   105     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   106                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   109                      ::rocprim::block_load_method::block_load_transpose,
   110                      ::rocprim::block_store_method::block_store_transpose,
   111                      block_scan_algorithm::using_warp_scan>
   115 template<
class value_type>
   117     static_cast<unsigned int>(target_arch::gfx908),
   119     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   120                       && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
   123                      ::rocprim::block_load_method::block_load_transpose,
   124                      ::rocprim::block_store_method::block_store_transpose,
   125                      block_scan_algorithm::using_warp_scan>
   129 template<
class value_type>
   132                            std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   133                                              && (sizeof(value_type) <= 1))>>
   136                      ::rocprim::block_load_method::block_load_transpose,
   137                      ::rocprim::block_store_method::block_store_transpose,
   138                      block_scan_algorithm::using_warp_scan>
   142 template<
class value_type>
   144     static_cast<unsigned int>(target_arch::gfx900),
   146     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   147                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   150                      ::rocprim::block_load_method::block_load_transpose,
   151                      ::rocprim::block_store_method::block_store_transpose,
   152                      block_scan_algorithm::reduce_then_scan>
   156 template<
class value_type>
   158     static_cast<unsigned int>(target_arch::gfx900),
   160     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   161                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   164                      ::rocprim::block_load_method::block_load_transpose,
   165                      ::rocprim::block_store_method::block_store_transpose,
   166                      block_scan_algorithm::using_warp_scan>
   170 template<
class value_type>
   173                            std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   174                                              && (sizeof(value_type) <= 2))>>
   177                      ::rocprim::block_load_method::block_load_transpose,
   178                      ::rocprim::block_store_method::block_store_transpose,
   179                      block_scan_algorithm::using_warp_scan>
   183 template<
class value_type>
   185     static_cast<unsigned int>(target_arch::gfx900),
   187     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   188                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   191                      ::rocprim::block_load_method::block_load_transpose,
   192                      ::rocprim::block_store_method::block_store_transpose,
   193                      block_scan_algorithm::using_warp_scan>
   197 template<
class value_type>
   199     static_cast<unsigned int>(target_arch::gfx900),
   201     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   202                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   205                      ::rocprim::block_load_method::block_load_transpose,
   206                      ::rocprim::block_store_method::block_store_transpose,
   207                      block_scan_algorithm::using_warp_scan>
   211 template<
class value_type>
   213     static_cast<unsigned int>(target_arch::gfx900),
   215     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   216                       && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
   219                      ::rocprim::block_load_method::block_load_transpose,
   220                      ::rocprim::block_store_method::block_store_transpose,
   221                      block_scan_algorithm::using_warp_scan>
   225 template<
class value_type>
   228                            std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   229                                              && (sizeof(value_type) <= 1))>>
   232                      ::rocprim::block_load_method::block_load_transpose,
   233                      ::rocprim::block_store_method::block_store_transpose,
   234                      block_scan_algorithm::using_warp_scan>
   238 template<
class value_type>
   240     static_cast<unsigned int>(target_arch::gfx906),
   242     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   243                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   246                      ::rocprim::block_load_method::block_load_transpose,
   247                      ::rocprim::block_store_method::block_store_transpose,
   248                      block_scan_algorithm::reduce_then_scan>
   252 template<
class value_type>
   254     static_cast<unsigned int>(target_arch::gfx906),
   256     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   257                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   260                      ::rocprim::block_load_method::block_load_transpose,
   261                      ::rocprim::block_store_method::block_store_transpose,
   262                      block_scan_algorithm::using_warp_scan>
   266 template<
class value_type>
   269                            std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   270                                              && (sizeof(value_type) <= 2))>>
   273                      ::rocprim::block_load_method::block_load_transpose,
   274                      ::rocprim::block_store_method::block_store_transpose,
   275                      block_scan_algorithm::reduce_then_scan>
   279 template<
class value_type>
   281     static_cast<unsigned int>(target_arch::gfx906),
   283     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   284                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   287                      ::rocprim::block_load_method::block_load_transpose,
   288                      ::rocprim::block_store_method::block_store_transpose,
   289                      block_scan_algorithm::using_warp_scan>
   293 template<
class value_type>
   295     static_cast<unsigned int>(target_arch::gfx906),
   297     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   298                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   301                      ::rocprim::block_load_method::block_load_transpose,
   302                      ::rocprim::block_store_method::block_store_transpose,
   303                      block_scan_algorithm::reduce_then_scan>
   307 template<
class value_type>
   309     static_cast<unsigned int>(target_arch::gfx906),
   311     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   312                       && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
   315                      ::rocprim::block_load_method::block_load_transpose,
   316                      ::rocprim::block_store_method::block_store_transpose,
   317                      block_scan_algorithm::reduce_then_scan>
   321 template<
class value_type>
   324                            std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   325                                              && (sizeof(value_type) <= 1))>>
   328                      ::rocprim::block_load_method::block_load_transpose,
   329                      ::rocprim::block_store_method::block_store_transpose,
   330                      block_scan_algorithm::using_warp_scan>
   334 template<
class value_type>
   336     static_cast<unsigned int>(target_arch::gfx1030),
   338     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   339                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   342                      ::rocprim::block_load_method::block_load_transpose,
   343                      ::rocprim::block_store_method::block_store_transpose,
   344                      block_scan_algorithm::using_warp_scan>
   348 template<
class value_type>
   350     static_cast<unsigned int>(target_arch::gfx1030),
   352     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   353                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   356                      ::rocprim::block_load_method::block_load_transpose,
   357                      ::rocprim::block_store_method::block_store_transpose,
   358                      block_scan_algorithm::using_warp_scan>
   362 template<
class value_type>
   365                            std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   366                                              && (sizeof(value_type) <= 2))>>
   369                      ::rocprim::block_load_method::block_load_transpose,
   370                      ::rocprim::block_store_method::block_store_transpose,
   371                      block_scan_algorithm::using_warp_scan>
   375 template<
class value_type>
   377     static_cast<unsigned int>(target_arch::gfx1030),
   379     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   380                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   383                      ::rocprim::block_load_method::block_load_transpose,
   384                      ::rocprim::block_store_method::block_store_transpose,
   385                      block_scan_algorithm::using_warp_scan>
   389 template<
class value_type>
   391     static_cast<unsigned int>(target_arch::gfx1030),
   393     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   394                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   397                      ::rocprim::block_load_method::block_load_transpose,
   398                      ::rocprim::block_store_method::block_store_transpose,
   399                      block_scan_algorithm::using_warp_scan>
   403 template<
class value_type>
   405     static_cast<unsigned int>(target_arch::gfx1030),
   407     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   408                       && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
   411                      ::rocprim::block_load_method::block_load_transpose,
   412                      ::rocprim::block_store_method::block_store_transpose,
   413                      block_scan_algorithm::using_warp_scan>
   417 template<
class value_type>
   420                            std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   421                                              && (sizeof(value_type) <= 1))>>
   424                      ::rocprim::block_load_method::block_load_transpose,
   425                      ::rocprim::block_store_method::block_store_transpose,
   426                      block_scan_algorithm::using_warp_scan>
   430 template<
class value_type>
   432     static_cast<unsigned int>(target_arch::unknown),
   434     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   435                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   438                      ::rocprim::block_load_method::block_load_transpose,
   439                      ::rocprim::block_store_method::block_store_transpose,
   440                      block_scan_algorithm::reduce_then_scan>
   444 template<
class value_type>
   446     static_cast<unsigned int>(target_arch::unknown),
   448     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   449                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   452                      ::rocprim::block_load_method::block_load_transpose,
   453                      ::rocprim::block_store_method::block_store_transpose,
   454                      block_scan_algorithm::reduce_then_scan>
   458 template<
class value_type>
   461                            std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   462                                              && (sizeof(value_type) <= 2))>>
   465                      ::rocprim::block_load_method::block_load_transpose,
   466                      ::rocprim::block_store_method::block_store_transpose,
   467                      block_scan_algorithm::reduce_then_scan>
   471 template<
class value_type>
   473     static_cast<unsigned int>(target_arch::unknown),
   475     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   476                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   479                      ::rocprim::block_load_method::block_load_transpose,
   480                      ::rocprim::block_store_method::block_store_transpose,
   481                      block_scan_algorithm::using_warp_scan>
   485 template<
class value_type>
   487     static_cast<unsigned int>(target_arch::unknown),
   489     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   490                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   493                      ::rocprim::block_load_method::block_load_transpose,
   494                      ::rocprim::block_store_method::block_store_transpose,
   495                      block_scan_algorithm::using_warp_scan>
   499 template<
class value_type>
   501     static_cast<unsigned int>(target_arch::unknown),
   503     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   504                       && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
   507                      ::rocprim::block_load_method::block_load_transpose,
   508                      ::rocprim::block_store_method::block_store_transpose,
   509                      block_scan_algorithm::using_warp_scan>
   513 template<
class value_type>
   516                            std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   517                                              && (sizeof(value_type) <= 1))>>
   520                      ::rocprim::block_load_method::block_load_transpose,
   521                      ::rocprim::block_store_method::block_store_transpose,
   522                      block_scan_algorithm::using_warp_scan>
   526 template<
class value_type>
   528     static_cast<unsigned int>(target_arch::gfx90a),
   530     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   531                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   534                      ::rocprim::block_load_method::block_load_transpose,
   535                      ::rocprim::block_store_method::block_store_transpose,
   536                      block_scan_algorithm::reduce_then_scan>
   540 template<
class value_type>
   542     static_cast<unsigned int>(target_arch::gfx90a),
   544     std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   545                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   548                      ::rocprim::block_load_method::block_load_transpose,
   549                      ::rocprim::block_store_method::block_store_transpose,
   550                      block_scan_algorithm::reduce_then_scan>
   554 template<
class value_type>
   557                            std::enable_if_t<(bool(rocprim::is_floating_point<value_type>::value)
   558                                              && (sizeof(value_type) <= 2))>>
   561                      ::rocprim::block_load_method::block_load_transpose,
   562                      ::rocprim::block_store_method::block_store_transpose,
   563                      block_scan_algorithm::reduce_then_scan>
   567 template<
class value_type>
   569     static_cast<unsigned int>(target_arch::gfx90a),
   571     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   572                       && (sizeof(value_type) <= 8) && (sizeof(value_type) > 4))>>
   575                      ::rocprim::block_load_method::block_load_transpose,
   576                      ::rocprim::block_store_method::block_store_transpose,
   577                      block_scan_algorithm::using_warp_scan>
   581 template<
class value_type>
   583     static_cast<unsigned int>(target_arch::gfx90a),
   585     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   586                       && (sizeof(value_type) <= 4) && (sizeof(value_type) > 2))>>
   589                      ::rocprim::block_load_method::block_load_transpose,
   590                      ::rocprim::block_store_method::block_store_transpose,
   591                      block_scan_algorithm::using_warp_scan>
   595 template<
class value_type>
   597     static_cast<unsigned int>(target_arch::gfx90a),
   599     std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   600                       && (sizeof(value_type) <= 2) && (sizeof(value_type) > 1))>>
   603                      ::rocprim::block_load_method::block_load_transpose,
   604                      ::rocprim::block_store_method::block_store_transpose,
   605                      block_scan_algorithm::using_warp_scan>
   609 template<
class value_type>
   612                            std::enable_if_t<(!bool(rocprim::is_floating_point<value_type>::value)
   613                                              && (sizeof(value_type) <= 1))>>
   616                      ::rocprim::block_load_method::block_load_transpose,
   617                      ::rocprim::block_store_method::block_store_transpose,
   618                      block_scan_algorithm::using_warp_scan>
   623 END_ROCPRIM_NAMESPACE
   628 #endif // ROCPRIM_DEVICE_DETAIL_CONFIG_DEVICE_SCAN_HPP_ Deprecated: Configuration of device-level scan primitives. 
Definition: block_histogram.hpp:62
Definition: device_config_helper.hpp:388
Definition: device_scan.hpp:42
Configuration of device-level scan primitives. 
Definition: device_config_helper.hpp:294