rocPRIM
device_scan_by_key_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_BY_KEY_CONFIG_HPP_
22 #define ROCPRIM_DEVICE_DEVICE_SCAN_BY_KEY_CONFIG_HPP_
23 
24 #include "config_types.hpp"
25 #include "detail/config/device_scan_by_key.hpp"
26 
29 
30 BEGIN_ROCPRIM_NAMESPACE
31 
32 namespace detail
33 {
34 
35 template<typename ScanByKeyConfig>
36 constexpr scan_by_key_config_params wrap_scan_by_key_config()
37 {
38  return scan_by_key_config_params{
39  {ScanByKeyConfig::block_size,
40  ScanByKeyConfig::items_per_thread,
41  ScanByKeyConfig::size_limit},
44  ScanByKeyConfig::block_scan_method
45  };
46 }
47 
48 template<typename ScanByKeyConfig, typename, typename>
50 {
51  template<target_arch Arch>
53  {
54  static constexpr scan_by_key_config_params params
55  = wrap_scan_by_key_config<ScanByKeyConfig>();
56  };
57 };
58 
59 template<typename Key, typename Value>
61 {
62  template<target_arch Arch>
63  struct architecture_config
64  {
65  static constexpr scan_by_key_config_params params = wrap_scan_by_key_config<
67  };
68 };
69 
70 #ifndef DOXYGEN_SHOULD_SKIP_THIS
71 template<typename ScanByKeyConfig, typename Key, typename Value>
72 template<target_arch Arch>
75 
76 template<typename Key, typename Value>
77 template<target_arch Arch>
80 #endif // DOXYGEN_SHOULD_SKIP_THIS
81 
82 } // namespace detail
83 
84 END_ROCPRIM_NAMESPACE
85 
87 // end of group primitivesmodule_deviceconfigs
88 
89 #endif // ROCPRIM_DEVICE_DEVICE_SCAN_BY_KEY_CONFIG_HPP_
Definition: device_scan_by_key_config.hpp:52
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
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_by_key.hpp:42
Definition: test_device_binary_search.cpp:37
Definition: device_scan_by_key_config.hpp:49
Provides the kernel parameters for exclusive_scan_by_key and inclusive_scan_by_key based on autotuned...
Definition: device_config_helper.hpp:393