Skip to content

Commit 208d063

Browse files
ecamartinsarai713
authored andcommitted
[CK_TILE] Add the GEMM Memory pipeline to Stream-K tests (#5242)
## Motivation We want to extend our Stream-K coverage to include other GEMM pipeline since our current tests only test the CompV3 pipeline. ## Technical Details All Stream-K unit tests currently only tests one pipeline: CompV3. These changes extend the test support to also test the Memory pipeline. Future work will add support for additional GEMM pipelines. The major changes are as follows: - **Remove of fp8 and bf8 extended tests for gfx90a**: gfx90a does not have native support for fp8 and bf8 and emulate the behavior with fp32 mfma instruction sizes. We've observed extremely long compile times for fp8 and bf8 on gfx90a (exceeding 15 minutes), hence we've opted to disable these tests. - **Add the memory pipeline to the Stream-K tile engine tests**: Now our smoke tests covers compv3 and memory pipelines. - **Add the memory pipeline to the Stream-K extended tests**: These changes modify the test kernel types to include the appropriate pipeline. Each pipeline is contained within a separate kernel type to help avoid large increases in build time. ## Test Plan - Ran existing and added tests on all architectures. ## Test Result - All local tests pass. ## Submission Checklist - [x] Look over the contributing guidelines at https://github.com/ROCm/ROCm/blob/develop/CONTRIBUTING.md#pull-requests.
1 parent 52bc433 commit 208d063

22 files changed

+350
-127
lines changed

projects/composablekernel/test/ck_tile/gemm_streamk/CMakeLists.txt

Lines changed: 25 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,31 @@ if(GPU_TARGETS MATCHES "gfx90a|gfx942|gfx950")
2323
#TODO: support all arches
2424
#TODO: current c-shuffle only supports C layout as R
2525
add_gtest_executable(test_ck_tile_streamk_tile_partitioner test_streamk_tile_partitioner.cpp)
26-
add_gtest_executable(test_ck_tile_streamk_extended
27-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp16_persistent.cpp
28-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf16_persistent.cpp
29-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp8_persistent.cpp
30-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf8_persistent.cpp
31-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp16_nonpersistent.cpp
32-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf16_nonpersistent.cpp
33-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp8_nonpersistent.cpp
34-
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf8_nonpersistent.cpp
35-
test_gemm_streamk_util.cpp)
26+
set(STREAMK_EXTENDED_SOURCES
27+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp16_persistent_compv3.cpp
28+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp16_persistent_mem.cpp
29+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf16_persistent_compv3.cpp
30+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf16_persistent_mem.cpp
31+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp16_nonpersistent_compv3.cpp
32+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp16_nonpersistent_mem.cpp
33+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf16_nonpersistent_compv3.cpp
34+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf16_nonpersistent_mem.cpp
35+
test_gemm_streamk_util.cpp)
36+
37+
# We only test fp8 and bf8 on gfx942 and gfx950 since these types are not natively supported on gfx90a
38+
if(GPU_TARGETS MATCHES "gfx942|gfx950")
39+
list(APPEND STREAMK_EXTENDED_SOURCES
40+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp8_persistent_compv3.cpp
41+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp8_persistent_mem.cpp
42+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf8_persistent_compv3.cpp
43+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf8_persistent_mem.cpp
44+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp8_nonpersistent_compv3.cpp
45+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_fp8_nonpersistent_mem.cpp
46+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf8_nonpersistent_compv3.cpp
47+
${CMAKE_CURRENT_SOURCE_DIR}/extended_tests/test_gemm_streamk_bf8_nonpersistent_mem.cpp)
48+
endif()
49+
50+
add_gtest_executable(test_ck_tile_streamk_extended ${STREAMK_EXTENDED_SOURCES})
3651
target_compile_options(test_ck_tile_streamk_extended PRIVATE ${EXAMPLE_GEMM_COMPILE_OPTIONS})
3752

3853
# Collect all test targets for umbrella label
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
2+
// SPDX-License-Identifier: MIT
3+
4+
#include "test_gemm_streamk_common_includes.hpp"
5+
6+
template <typename Tuple>
7+
class TestCkTileStreamKBf16NonPersistentCompV3 : public TestCkTileStreamK<Tuple>
8+
{
9+
};
10+
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf16NonPersistentCompV3
12+
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf16NonPersistentCompV3,
14+
KernelTypesStreamKBf16NonPersistentCompV3);
15+
16+
#include "test_gemm_streamk_extended_cases.inc"
17+
18+
#undef TEST_SUITE_NAME
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
2+
// SPDX-License-Identifier: MIT
3+
4+
#include "test_gemm_streamk_common_includes.hpp"
5+
6+
template <typename Tuple>
7+
class TestCkTileStreamKBf16NonPersistentMem : public TestCkTileStreamK<Tuple>
8+
{
9+
};
10+
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf16NonPersistentMem
12+
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf16NonPersistentMem, KernelTypesStreamKBf16NonPersistentMem);
14+
15+
#include "test_gemm_streamk_extended_cases.inc"
16+
17+
#undef TEST_SUITE_NAME
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
2+
// SPDX-License-Identifier: MIT
3+
4+
#include "test_gemm_streamk_common_includes.hpp"
5+
6+
template <typename Tuple>
7+
class TestCkTileStreamKBf16PersistentCompV3 : public TestCkTileStreamK<Tuple>
8+
{
9+
};
10+
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf16PersistentCompV3
12+
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf16PersistentCompV3, KernelTypesStreamKBf16PersistentCompV3);
14+
15+
#include "test_gemm_streamk_extended_cases.inc"
16+
17+
#undef TEST_SUITE_NAME

projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf16_nonpersistent.cpp renamed to projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf16_persistent_mem.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
#include "test_gemm_streamk_common_includes.hpp"
55

66
template <typename Tuple>
7-
class TestCkTileStreamKBf16NonPersistent : public TestCkTileStreamK<Tuple>
7+
class TestCkTileStreamKBf16PersistentMem : public TestCkTileStreamK<Tuple>
88
{
99
};
1010

11-
#define TEST_SUITE_NAME TestCkTileStreamKBf16NonPersistent
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf16PersistentMem
1212

13-
TYPED_TEST_SUITE(TestCkTileStreamKBf16NonPersistent, KernelTypesStreamKBf16NonPersistent);
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf16PersistentMem, KernelTypesStreamKBf16PersistentMem);
1414

1515
#include "test_gemm_streamk_extended_cases.inc"
1616

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
2+
// SPDX-License-Identifier: MIT
3+
4+
#include "test_gemm_streamk_common_includes.hpp"
5+
6+
template <typename Tuple>
7+
class TestCkTileStreamKBf8NonPersistentCompV3 : public TestCkTileStreamK<Tuple>
8+
{
9+
};
10+
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf8NonPersistentCompV3
12+
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf8NonPersistentCompV3, KernelTypesStreamKBf8NonPersistentCompV3);
14+
15+
#include "test_gemm_streamk_extended_cases.inc"
16+
17+
#undef TEST_SUITE_NAME

projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf16_persistent.cpp renamed to projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf8_nonpersistent_mem.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
#include "test_gemm_streamk_common_includes.hpp"
55

66
template <typename Tuple>
7-
class TestCkTileStreamKBf16Persistent : public TestCkTileStreamK<Tuple>
7+
class TestCkTileStreamKBf8NonPersistentMem : public TestCkTileStreamK<Tuple>
88
{
99
};
1010

11-
#define TEST_SUITE_NAME TestCkTileStreamKBf16Persistent
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf8NonPersistentMem
1212

13-
TYPED_TEST_SUITE(TestCkTileStreamKBf16Persistent, KernelTypesStreamKBf16Persistent);
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf8NonPersistentMem, KernelTypesStreamKBf8NonPersistentMem);
1414

1515
#include "test_gemm_streamk_extended_cases.inc"
1616

projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf8_persistent.cpp renamed to projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf8_persistent_compv3.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
#include "test_gemm_streamk_common_includes.hpp"
55

66
template <typename Tuple>
7-
class TestCkTileStreamKBf8Persistent : public TestCkTileStreamK<Tuple>
7+
class TestCkTileStreamKBf8PersistentCompV3 : public TestCkTileStreamK<Tuple>
88
{
99
};
1010

11-
#define TEST_SUITE_NAME TestCkTileStreamKBf8Persistent
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf8PersistentCompV3
1212

13-
TYPED_TEST_SUITE(TestCkTileStreamKBf8Persistent, KernelTypesStreamKBf8Persistent);
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf8PersistentCompV3, KernelTypesStreamKBf8PersistentCompV3);
1414

1515
#include "test_gemm_streamk_extended_cases.inc"
1616

projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_fp8_nonpersistent.cpp renamed to projects/composablekernel/test/ck_tile/gemm_streamk/extended_tests/test_gemm_streamk_bf8_persistent_mem.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44
#include "test_gemm_streamk_common_includes.hpp"
55

66
template <typename Tuple>
7-
class TestCkTileStreamKFp8NonPersistent : public TestCkTileStreamK<Tuple>
7+
class TestCkTileStreamKBf8PersistentMem : public TestCkTileStreamK<Tuple>
88
{
99
};
1010

11-
#define TEST_SUITE_NAME TestCkTileStreamKFp8NonPersistent
11+
#define TEST_SUITE_NAME TestCkTileStreamKBf8PersistentMem
1212

13-
TYPED_TEST_SUITE(TestCkTileStreamKFp8NonPersistent, KernelTypesStreamKFp8NonPersistent);
13+
TYPED_TEST_SUITE(TestCkTileStreamKBf8PersistentMem, KernelTypesStreamKBf8PersistentMem);
1414

1515
#include "test_gemm_streamk_extended_cases.inc"
1616

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
2+
// SPDX-License-Identifier: MIT
3+
4+
#include "test_gemm_streamk_common_includes.hpp"
5+
6+
template <typename Tuple>
7+
class TestCkTileStreamKFp16NonPersistentCompV3 : public TestCkTileStreamK<Tuple>
8+
{
9+
};
10+
11+
#define TEST_SUITE_NAME TestCkTileStreamKFp16NonPersistentCompV3
12+
13+
TYPED_TEST_SUITE(TestCkTileStreamKFp16NonPersistentCompV3,
14+
KernelTypesStreamKFp16NonPersistentCompV3);
15+
16+
#include "test_gemm_streamk_extended_cases.inc"
17+
18+
#undef TEST_SUITE_NAME

0 commit comments

Comments
 (0)