rocPRIM
device_scan_config.hpp
1 // Copyright (c) 2023 Advanced Micro Devices, Inc. All rights reserved.
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and associated documentation files (the "Software"), to deal
5 // in the Software without restriction, including without limitation the rights
6 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 // copies of the Software, and to permit persons to whom the Software is
8 // furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Software.
12 //
13 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 // THE SOFTWARE.
20 
21 #ifndef ROCPRIM_DEVICE_DEVICE_SCAN_CONFIG_HPP_
22 #define ROCPRIM_DEVICE_DEVICE_SCAN_CONFIG_HPP_
23 
24 #include "config_types.hpp"
25 #include "detail/config/device_scan.hpp"
26 
29 
30 BEGIN_ROCPRIM_NAMESPACE
31 
32 namespace detail
33 {
34 
35 template<typename ScanConfig>
36 constexpr scan_config_params wrap_scan_config()
37 {
38  return scan_config_params{
39  {ScanConfig::block_size, ScanConfig::items_per_thread, ScanConfig::size_limit},
42  ScanConfig::block_scan_method
43  };
44 }
45 
46 template<typename ScanConfig, typename>
48 {
49  template<target_arch Arch>
51  {
52  static constexpr scan_config_params params = wrap_scan_config<ScanConfig>();
53  };
54 };
55 
56 template<typename Value>
58 {
59  template<target_arch Arch>
60  struct architecture_config
61  {
62  static constexpr scan_config_params params
63  = wrap_scan_config<default_scan_config<static_cast<unsigned int>(Arch), Value>>();
64  };
65 };
66 
67 #ifndef DOXYGEN_SHOULD_SKIP_THIS
68 template<typename ScanConfig, typename Value>
69 template<target_arch Arch>
70 constexpr scan_config_params
72 
73 template<typename Value>
74 template<target_arch Arch>
75 constexpr scan_config_params
77 #endif // DOXYGEN_SHOULD_SKIP_THIS
78 
79 } // namespace detail
80 
81 END_ROCPRIM_NAMESPACE
82 
84 // end of group primitivesmodule_deviceconfigs
85 
86 #endif // ROCPRIM_DEVICE_DEVICE_SCAN_CONFIG_HPP_
block_store_method
block_store_method enumerates the methods available to store a striped arrangement of items into a bl...
Definition: block_store.hpp:41
Definition: device_scan_config.hpp:47
Special type used to show that the given device-level operation will be executed with optimal configu...
Definition: config_types.hpp:45
Deprecated: Configuration of device-level scan primitives.
Definition: block_histogram.hpp:62
block_load_method
block_load_method enumerates the methods available to load data from continuous memory into a blocked...
Definition: block_load.hpp:41
Definition: device_scan_config.hpp:50
Provides the kernel parameters for exclusive_scan and inclusive_scan based on autotuned configuration...
Definition: device_config_helper.hpp:270
Definition: test_device_binary_search.cpp:37