Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
gaoqiong
composable_kernel_ROCM
Commits
9de63596
Unverified
Commit
9de63596
authored
Mar 11, 2024
by
Illia Silin
Committed by
GitHub
Mar 11, 2024
Browse files
Merge pull request #48 from ROCm/merge_from_public
Merge from public
parents
e60c5aea
6ac1d6a2
Changes
303
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
23 additions
and
12 deletions
+23
-12
test/wrapper/test_wrapper_layout.cpp
test/wrapper/test_wrapper_layout.cpp
+1
-1
test/wrapper/test_wrapper_partition.cpp
test/wrapper/test_wrapper_partition.cpp
+22
-11
test/wrapper/test_wrapper_tensor.cpp
test/wrapper/test_wrapper_tensor.cpp
+0
-0
No files found.
test/wrapper/test_layout.cpp
→
test/wrapper/test_
wrapper_
layout.cpp
View file @
9de63596
// SPDX-License-Identifier: MIT
// SPDX-License-Identifier: MIT
// Copyright (c) 2023, Advanced Micro Devices, Inc. All rights reserved.
// Copyright (c) 2023
-2024
, Advanced Micro Devices, Inc. All rights reserved.
#include <cstdlib>
#include <cstdlib>
#include <iostream>
#include <iostream>
...
...
test/wrapper/test_partition.cpp
→
test/wrapper/test_
wrapper_
partition.cpp
View file @
9de63596
...
@@ -29,8 +29,11 @@ TEST(TestPartition, LocalPartition)
...
@@ -29,8 +29,11 @@ TEST(TestPartition, LocalPartition)
const
auto
tensor
=
const
auto
tensor
=
ck
::
wrapper
::
make_tensor
<
ck
::
wrapper
::
MemoryTypeEnum
::
Generic
>
(
data
.
data
(),
layout
);
ck
::
wrapper
::
make_tensor
<
ck
::
wrapper
::
MemoryTypeEnum
::
Generic
>
(
data
.
data
(),
layout
);
const
auto
thread_steps
=
ck
::
make_tuple
(
ck
::
Number
<
1
>
{},
ck
::
Number
<
8
>
{},
ck
::
Number
<
1
>
{});
const
auto
thread_steps
=
ck
::
make_tuple
(
ck
::
Number
<
1
>
{},
ck
::
Number
<
8
>
{},
ck
::
Number
<
1
>
{});
const
auto
thread_layout
=
ck
::
make_tuple
(
ck
::
Number
<
4
>
{},
ck
::
Number
<
8
>
{},
ck
::
Number
<
1
>
{});
// row-major thread layout
const
auto
thread_layout
=
ck
::
wrapper
::
make_layout
(
ck
::
make_tuple
(
ck
::
Number
<
4
>
{},
ck
::
Number
<
8
>
{},
ck
::
Number
<
1
>
{}),
ck
::
make_tuple
(
ck
::
Number
<
8
>
{},
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{}));
// 3d partition on 2d shape (calculate partition on 3d thread layout, and then skip first dim)
// 3d partition on 2d shape (calculate partition on 3d thread layout, and then skip first dim)
const
auto
thread_projection
=
const
auto
thread_projection
=
ck
::
make_tuple
(
ck
::
wrapper
::
slice
(
4
),
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{});
ck
::
make_tuple
(
ck
::
wrapper
::
slice
(
4
),
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{});
...
@@ -70,29 +73,37 @@ TEST(TestPartition, LocalTile)
...
@@ -70,29 +73,37 @@ TEST(TestPartition, LocalTile)
ck
::
make_tuple
(
ck
::
Number
<
2
>
{},
ck
::
Number
<
4
>
{},
ck
::
Number
<
2
>
{},
ck
::
Number
<
2
>
{});
ck
::
make_tuple
(
ck
::
Number
<
2
>
{},
ck
::
Number
<
4
>
{},
ck
::
Number
<
2
>
{},
ck
::
Number
<
2
>
{});
const
auto
block_projection
=
const
auto
block_projection
=
ck
::
make_tuple
(
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{},
ck
::
wrapper
::
slice
(
2
));
ck
::
make_tuple
(
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{},
ck
::
Number
<
1
>
{},
ck
::
wrapper
::
slice
(
2
));
constexpr
ck
::
index_t
projection_block_dim
=
ck
::
Number
<
2
>
{};
const
auto
num_blocks
=
const
auto
grid_shape
=
ck
::
make_tuple
(
ck
::
wrapper
::
size
<
0
>
(
shape
)
/
ck
::
wrapper
::
size
<
0
>
(
block_shape
),
ck
::
make_tuple
(
ck
::
wrapper
::
size
<
0
>
(
shape
)
/
ck
::
wrapper
::
size
<
0
>
(
block_shape
),
ck
::
wrapper
::
size
<
1
>
(
shape
)
/
ck
::
wrapper
::
size
<
1
>
(
block_shape
),
ck
::
wrapper
::
size
<
1
>
(
shape
)
/
ck
::
wrapper
::
size
<
1
>
(
block_shape
),
ck
::
wrapper
::
size
<
2
>
(
shape
)
/
ck
::
wrapper
::
size
<
2
>
(
block_shape
));
ck
::
wrapper
::
size
<
2
>
(
shape
)
/
ck
::
wrapper
::
size
<
2
>
(
block_shape
));
std
::
vector
<
ck
::
index_t
>
block_idxs
(
ck
::
wrapper
::
size
(
num_blocks
));
std
::
vector
<
ck
::
Tuple
<
ck
::
index_t
,
ck
::
index_t
,
ck
::
index_t
,
ck
::
index_t
>>
block_idxs
;
std
::
iota
(
block_idxs
.
begin
(),
block_idxs
.
end
(),
0
);
for
(
int
i
=
0
;
i
<
ck
::
wrapper
::
size
<
0
>
(
grid_shape
);
i
++
)
{
for
(
int
j
=
0
;
j
<
ck
::
wrapper
::
size
<
1
>
(
grid_shape
);
j
++
)
{
for
(
int
k
=
0
;
k
<
ck
::
wrapper
::
size
<
2
>
(
grid_shape
);
k
++
)
{
block_idxs
.
emplace_back
(
i
,
j
,
k
,
0
);
}
}
}
for
(
auto
block_idx
:
block_idxs
)
for
(
auto
block_idx
:
block_idxs
)
{
{
constexpr
ck
::
index_t
projection_block_dim
=
ck
::
Number
<
2
>
{};
const
auto
packed_tile
=
const
auto
packed_tile
=
ck
::
wrapper
::
make_local_tile
(
tensor
,
block_shape
,
block_idx
,
block_projection
);
ck
::
wrapper
::
make_local_tile
(
tensor
,
block_shape
,
block_idx
,
block_projection
);
const
auto
expected_tile_size
=
ck
::
wrapper
::
size
(
block_shape
)
/
projection_block_dim
;
const
auto
expected_tile_size
=
ck
::
wrapper
::
size
(
block_shape
)
/
projection_block_dim
;
auto
expected_tile_first_val
=
(
block_idx
%
ck
::
wrapper
::
size
<
2
>
(
num_
block
s
)
)
*
auto
expected_tile_first_val
=
ck
::
wrapper
::
size
<
2
>
(
block
_idx
)
*
ck
::
wrapper
::
size
<
2
>
(
block_shape
)
*
ck
::
wrapper
::
size
<
2
>
(
block_shape
)
*
ck
::
wrapper
::
size
<
2
>
(
strides
);
ck
::
wrapper
::
size
<
2
>
(
strides
);
block_idx
/=
ck
::
wrapper
::
size
<
2
>
(
num_blocks
);
expected_tile_first_val
+=
ck
::
wrapper
::
size
<
1
>
(
block_idx
)
*
expected_tile_first_val
+=
(
block_idx
%
ck
::
wrapper
::
size
<
1
>
(
num_blocks
))
*
ck
::
wrapper
::
size
<
1
>
(
block_shape
)
*
ck
::
wrapper
::
size
<
1
>
(
block_shape
)
*
ck
::
wrapper
::
size
<
1
>
(
strides
);
ck
::
wrapper
::
size
<
1
>
(
strides
);
block_idx
/=
ck
::
wrapper
::
size
<
1
>
(
num_blocks
);
expected_tile_first_val
+=
ck
::
wrapper
::
size
<
0
>
(
block_idx
)
*
expected_tile_first_val
+=
(
block_idx
%
ck
::
wrapper
::
size
<
0
>
(
num_blocks
))
*
ck
::
wrapper
::
size
<
0
>
(
block_shape
)
*
ck
::
wrapper
::
size
<
0
>
(
block_shape
)
*
ck
::
wrapper
::
size
<
0
>
(
strides
);
ck
::
wrapper
::
size
<
0
>
(
strides
);
...
...
test/wrapper/test_tensor.cpp
→
test/wrapper/test_
wrapper_
tensor.cpp
View file @
9de63596
File moved
Prev
1
…
12
13
14
15
16
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment