Conversation
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
format.py
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 114 to 116 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 121 to 123 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 128 to 130 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 133 to 135 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 138 to 140 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 154 to 156 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 159 to 161 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 164 to 166 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/iterator/iterator_traits.cpp
Lines 169 to 171 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/forward.cpp
Lines 33 to 35 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/forward.cpp
Lines 39 to 41 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/forward.cpp
Lines 140 to 142 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 32 to 34 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 37 to 39 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 42 to 44 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 47 to 49 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 58 to 60 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 63 to 65 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 76 to 78 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 83 to 85 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 90 to 92 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 95 to 97 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 126 to 128 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 131 to 133 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 136 to 138 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 145 to 147 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 150 to 152 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/integer_sequence.cpp
Lines 161 to 163 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/move.cpp
Lines 33 to 35 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/move.cpp
Lines 39 to 41 in 71e9d44
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/move.cpp
Lines 72 to 74 in 71e9d44
There was a problem hiding this comment.
Remaining comments which cannot be posted as a review comment to avoid GitHub Rate Limit
format.py
[format.py] reported by reviewdog 🐶
AMDMIGraphX/test/gpu/kernels/rocm/utility/move.cpp
Lines 72 to 74 in b3a907d
Check flagged results 🔆 * No develop baseline was found for this PR's branch point; compared against the latest available develop run instead. |
|
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR introduces a rocm::-namespaced, device-friendly subset of common C++ standard-library components (type traits, utility, iterators, functional, algorithms, limits, etc.) under the GPU kernel headers, and adds/expands GPU kernel tests to validate the new APIs. It also updates the GPU kernel test harness and build wiring to discover tests recursively and to propagate the originating source filename into HIP compilation for improved diagnostics.
Changes:
- Add new
src/targets/gpu/kernels/include/rocm/*headers providingrocm::equivalents of common std utilities (type traits, utility helpers, iterators, functional ops, algorithms, limits/stdint/stddef, etc.). - Add GPU kernel unit tests under
test/gpu/kernels/rocm/**for the newrocm::components. - Update GPU kernel test/build plumbing (recursive test discovery, suite naming, and
hip_compile_options::src_filepropagation).
Reviewed changes
Copilot reviewed 76 out of 76 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| test/gpu/kernels/rocm/utility/swap.cpp | New GPU kernel tests for rocm::swap. |
| test/gpu/kernels/rocm/utility/move.cpp | New GPU kernel tests for rocm::move. |
| test/gpu/kernels/rocm/utility/integer_sequence.cpp | New GPU kernel tests for rocm::integer_sequence and related aliases. |
| test/gpu/kernels/rocm/utility/forward.cpp | New GPU kernel tests for rocm::forward. |
| test/gpu/kernels/rocm/type_traits_relationships.cpp | New GPU kernel tests covering a variety of rocm::type_traits relationship traits. |
| test/gpu/kernels/rocm/stdint.cpp | New GPU kernel tests validating rocm::stdint type sizes. |
| test/gpu/kernels/rocm/std_numeric_limits.cpp | New GPU kernel tests comparing rocm::numeric_limits to std::numeric_limits (host path). |
| test/gpu/kernels/rocm/numeric_limits.cpp | New GPU kernel tests validating rocm::numeric_limits API surface and types. |
| test/gpu/kernels/rocm/iterator/reverse_iterator.cpp | New GPU kernel tests for rocm::reverse_iterator. |
| test/gpu/kernels/rocm/iterator/iterator_traits.cpp | New GPU kernel tests for rocm::iterator_traits and iterator tags. |
| test/gpu/kernels/rocm/integral_constant.cpp | New GPU kernel tests for rocm::integral_constant operators and conversions. |
| test/gpu/kernels/rocm/functional/operations.cpp | New GPU kernel tests for rocm::functional operation objects and transparency. |
| test/gpu/kernels/rocm/enable_if.cpp | New GPU kernel tests for rocm::enable_if / enable_if_t. |
| test/gpu/kernels/rocm/.clang-tidy | New clang-tidy overrides for the rocm kernel tests subtree. |
| test/gpu/kernels/main.cpp | Enhance kernel test discovery (templates/register macros) and suite naming; pass src_file into HIP compile options. |
| test/gpu/kernels/CMakeLists.txt | Switch to recursive discovery of kernel test sources. |
| src/targets/gpu/kernels/include/rocm/utility/swap.hpp | New rocm::swap implementation. |
| src/targets/gpu/kernels/include/rocm/utility/move.hpp | New rocm::move implementation. |
| src/targets/gpu/kernels/include/rocm/utility/integer_sequence.hpp | New rocm::integer_sequence and helpers (index_sequence, etc.). |
| src/targets/gpu/kernels/include/rocm/utility/forward.hpp | New rocm::forward implementation. |
| src/targets/gpu/kernels/include/rocm/utility/declval.hpp | New rocm::declval implementation. |
| src/targets/gpu/kernels/include/rocm/utility.hpp | Umbrella include for rocm utility headers. |
| src/targets/gpu/kernels/include/rocm/type_traits.hpp | New rocm-flavored type traits and helpers/macros for kernels. |
| src/targets/gpu/kernels/include/rocm/stdint.hpp | New rocm stdint typedefs (host vs RTC handling). |
| src/targets/gpu/kernels/include/rocm/stddef.hpp | New rocm stddef typedefs (size_t, ptrdiff_t, etc.). |
| src/targets/gpu/kernels/include/rocm/limits.hpp | New rocm::numeric_limits and related enums/helpers for kernels. |
| src/targets/gpu/kernels/include/rocm/iterator/reverse_iterator.hpp | New rocm::reverse_iterator implementation. |
| src/targets/gpu/kernels/include/rocm/iterator/iterator_traits.hpp | New rocm::iterator_traits plus iterator tag hierarchy. |
| src/targets/gpu/kernels/include/rocm/iterator.hpp | Umbrella include for rocm iterator headers. |
| src/targets/gpu/kernels/include/rocm/integral_constant.hpp | New rocm::integral_constant and boolean constants. |
| src/targets/gpu/kernels/include/rocm/functional/operations.hpp | New rocm functional operation objects (plus, less, etc.). |
| src/targets/gpu/kernels/include/rocm/functional.hpp | Umbrella include for rocm functional headers. |
| src/targets/gpu/kernels/include/rocm/config.hpp | New rocm config macros (inline namespace, host/device annotations, deduction guide workaround hook). |
| src/targets/gpu/kernels/include/rocm/bit.hpp | New rocm bit utilities (bit_cast, popcount, rotations, etc.). |
| src/targets/gpu/kernels/include/rocm/assert.hpp | New rocm assert/check helpers (host/device compatible printing + abort). |
| src/targets/gpu/kernels/include/rocm/array.hpp | New rocm::array and helpers (iterators, swap, to_array). |
| src/targets/gpu/kernels/include/rocm/algorithm/upper_bound.hpp | New rocm upper_bound algorithm. |
| src/targets/gpu/kernels/include/rocm/algorithm/transform.hpp | New rocm transform algorithms (unary/binary). |
| src/targets/gpu/kernels/include/rocm/algorithm/stable_sort.hpp | New rocm stable_sort implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/sort.hpp | New rocm sort implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/search.hpp | New rocm search implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/rotate.hpp | New rocm rotate implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/none_of.hpp | New rocm none_of implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/min_element.hpp | New rocm min_element implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/merge.hpp | New rocm merge implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/max_element.hpp | New rocm max_element implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/lower_bound.hpp | New rocm lower_bound implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/iter_swap.hpp | New rocm iter_swap implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/is_sorted.hpp | New rocm is_sorted implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/is_sorted_until.hpp | New rocm is_sorted_until implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/iota.hpp | New rocm iota implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/inner_product.hpp | New rocm inner_product implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/for_each.hpp | New rocm for_each implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/find.hpp | New rocm find implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/find_if.hpp | New rocm find_if implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/fill.hpp | New rocm fill implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/equal.hpp | New rocm equal implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/copy.hpp | New rocm copy implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/copy_if.hpp | New rocm copy_if implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/any_of.hpp | New rocm any_of implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/all_of.hpp | New rocm all_of implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm/accumulate.hpp | New rocm accumulate implementation. |
| src/targets/gpu/kernels/include/rocm/algorithm.hpp | Umbrella include for rocm algorithm headers. |
| src/targets/gpu/kernels/include/rocm/.clang-tidy | New clang-tidy overrides for rocm kernel headers subtree. |
| src/targets/gpu/kernels/include/migraphx/kernels/test.hpp | Add no-op template/register test macros for parsing/registration. |
| src/targets/gpu/include/migraphx/gpu/compile_hip_code_object.hpp | Add hip_compile_options::src_file for labeling the main compilation unit. |
| src/targets/gpu/compile_hip_code_object.cpp | Use options.src_file for the main source instead of hardcoding main.cpp. |
| src/targets/gpu/CMakeLists.txt | Broaden kernel header scanning, add deduction-guide capability check, and adjust clang-tidy file-check stubs. |
| src/compile_src.cpp | Pass full relative source paths to the compiler for better traceability/diagnostics. |
| CMakeLists.txt | Exclude rocm kernel header/test define-prefix regions from cppcheck definePrefix heuristics. |
| using intmax_t = int64_t; | ||
| using uintmax_t = uint64_t; | ||
| using intmax_t = int64_t; |
| constexpr pointer operator->() const | ||
| { | ||
| iterator_type tmp = current; | ||
| --tmp; | ||
| return tmp; | ||
| } |
|
|
||
| } // namespace ROCM_INLINE_NS | ||
| } // namespace rocm | ||
| #endif // MIGRAPHX_GUARD_FUNCTIONAL_OPERATIONS_HPP |
| file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/kernels/include/${KERNEL_DIR}/${KERNEL_BASE_FILE}.cpp "#include <${KERNEL_DIR}/${KERNEL_BASE_FILE}.hpp>\n") | ||
| target_sources(migraphx_gpu_kernel_file_check PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/kernels/include/${KERNEL_DIR}/${KERNEL_BASE_FILE}.cpp) |
Motivation
This adds std C++ components to rocm namespace using many of our existing implementations. In a followup PR, I will be removing the implementation from migraphx.
This will help reduce name collisions in the migraphx namespace with std named components.
Technical Details
Changelog Category
Add a
CHANGELOG.mdentry for any option other thanNot Applicable