// Copyright (c) 2022-2025 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. #ifndef {{ get_header_guard() }} #define {{ get_header_guard() }} #include "../../../config.hpp" #include "../../../type_traits.hpp" #include "../../config_types.hpp" #include "../device_config_helper.hpp" #include /* DO NOT EDIT THIS FILE * This file is automatically generated by `/scripts/autotune/create_optimization.py`. * so most likely you want to edit rocprim/device/device_(algo)_config.hpp */ /// \addtogroup primitivesmodule_deviceconfigs /// @{ BEGIN_ROCPRIM_NAMESPACE namespace detail { {% set ns = namespace(algorithm_name='') %} {% for benchmark_of_target in all_targets %} {% set ns.algorithm_name = benchmark_of_target.algorithm_name_short %} {{ config_picker() }} -> {{ enable_if(benchmark_of_target) }} { {% for based_on_type, fallback_selection_criteria, measurement in benchmark_of_target.fallback_types %} // Based on {{ based_on_type }} {{ fallback_selection_criteria }} { return {{ kernel_configuration(measurement) }}; } {% endfor %} // Default case if none of the conditions match {{ default_case() }} } {% endfor %} {{ config_picker() }} -> {{ enable_if(unknown_target) }} { {{fallback_config(fallback_target)}} } // All existing configs using {{ns.algorithm_name}}_targets = comp_targets< {% for benchmark_of_target in all_targets %} comp_target<{{benchmark_of_target.target.as_str()}}>, {% endfor %} comp_target<{{unknown_target.target.as_str()}}>>; } // end namespace detail END_ROCPRIM_NAMESPACE /// @} // end of group primitivesmodule_deviceconfigs #endif // {{ get_header_guard() }}