Use Space Filling Curve in Threadwise Copy (#118)

* fixed a corner case in GetCoordinateResetStep

* clean

* rename num_accesses to num_access

Co-authored-by: Chao Liu <chao.liu2@amd.com>

[ROCm/composable_kernel commit: 9e33fe70c3]
This commit is contained in:
Jianfeng Yan
2022-03-11 00:08:47 -06:00
committed by GitHub
parent bc3b1d6fe7
commit e018a779fd
5 changed files with 179 additions and 913 deletions

View File

@@ -95,13 +95,13 @@ void traverse_using_space_filling_curve()
make_tuple(12, 2, 6),
make_tuple(12, 0, 6));
constexpr index_t num_accesses = SpaceFillingCurve::GetNumOfAccess();
constexpr index_t num_access = SpaceFillingCurve::GetNumOfAccess();
static_assert(num_accesses == reduce_on_sequence(TensorLengths{} / ScalarsPerAccess{},
math::multiplies{},
Number<1>{}));
static_assert(num_access == reduce_on_sequence(TensorLengths{} / ScalarsPerAccess{},
math::multiplies{},
Number<1>{}));
static_for<1, num_accesses, 1>{}([&](auto i) {
static_for<1, num_access, 1>{}([&](auto i) {
constexpr auto idx_curr = SpaceFillingCurve::GetIndex(i);
static_assert(idx_curr[I0] == expected[i][I0]);
@@ -115,7 +115,7 @@ void traverse_using_space_filling_curve()
static_assert(backward_step[I2] == expected_step[I2]);
});
static_for<0, num_accesses - 1, 1>{}([&](auto i) {
static_for<0, num_access - 1, 1>{}([&](auto i) {
constexpr auto idx_curr = SpaceFillingCurve::GetIndex(i);
static_assert(idx_curr[I0] == expected[i][I0]);