From 349b2febc82c253a27a79e937dff9edf9a627b64 Mon Sep 17 00:00:00 2001 From: John Shumway Date: Thu, 4 Sep 2025 14:46:04 +0000 Subject: [PATCH] Add two more instances to tests. We now have four instances, next we need to add the block GEMM pipeline version. --- .../builder/test/test_conv_instances.cpp | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/experimental/builder/test/test_conv_instances.cpp b/experimental/builder/test/test_conv_instances.cpp index e02a7034df..50c04184c8 100644 --- a/experimental/builder/test/test_conv_instances.cpp +++ b/experimental/builder/test/test_conv_instances.cpp @@ -74,7 +74,40 @@ constexpr std::array TEST_CASES = { .expected_type = "DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle_V3<256, 256, 256, 32, Default, 32, 32, " "4, 4, 8, 8, 8, 1, 1, BlkGemmPipelineScheduler: Intrawave, BlkGemmPipelineVersion: v4>", - }}; + }, + TestCase{ + .name = "GroupedConvFwdXdlBf16CompInstance1", + .algorithm = {.thread_block{.block_size = 256, .sub_matrix = {.m = 128, .n = 128, .k = 64}}, + .tuning_params{.ak1 = 8, .bk1 = 8, .m_xdl_per_wave = 2, .n_xdl_per_wave = 2}, + .block_transfer{ + .thread_cluster_lengths_a = {.k0 = 8, .m = 32, .k1 = 1}, + .thread_cluster_lengths_b = {.k0 = 8, .n = 32, .k1 = 1}, + .thread_cluster_lengths_c = {.m_block = 1, + .m_wave_per_xdl = 32, + .n_block = 1, + .n_wave_per_xdl = 8}, + }}, + .expected_type = + "DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle_V3<256, 128, 128, 64, Default, 32, 32, " + "2, 2, 8, 8, 8, 1, 1, BlkGemmPipelineScheduler: Intrawave, BlkGemmPipelineVersion: v4>", + }, + TestCase{ + .name = "GroupedConvFwdXdlBf16CompInstance1", + .algorithm = {.thread_block{.block_size = 256, .sub_matrix = {.m = 128, .n = 128, .k = 32}}, + .tuning_params{.ak1 = 8, .bk1 = 8, .m_xdl_per_wave = 2, .n_xdl_per_wave = 2}, + .block_transfer{ + .thread_cluster_lengths_a = {.k0 = 4, .m = 64, .k1 = 1}, + .thread_cluster_lengths_b = {.k0 = 4, .n = 64, .k1 = 1}, + .thread_cluster_lengths_c = {.m_block = 1, + .m_wave_per_xdl = 32, + .n_block = 1, + .n_wave_per_xdl = 8}, + }}, + .expected_type = + "DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle_V3<256, 128, 128, 32, Default, 32, 32, " + "2, 2, 8, 8, 8, 1, 1, BlkGemmPipelineScheduler: Intrawave, BlkGemmPipelineVersion: v4>", + }, +}; static constexpr int NUM_TEST_CASES = std::tuple_size_v; @@ -116,12 +149,15 @@ struct TestNameGenerator } }; -TYPED_TEST_SUITE(ConvBuilderInstancesTest, TestingIndices::Types, TestNameGenerator); +TYPED_TEST_SUITE(ConvBuilderInstancesTest, + TestingIndices::Types, + TestNameGenerator); // General test case, instantiated for each test case. TYPED_TEST(ConvBuilderInstancesTest, KernelParamsConfigured) { - static constexpr const FwdConvAlgorithm& ALGORITHM = ConvBuilderInstancesTest::ALGORITHM; + static constexpr const FwdConvAlgorithm& ALGORITHM = + ConvBuilderInstancesTest::ALGORITHM; using Builder = ckb::ConvBuilder; EXPECT_EQ(Builder::Instance::TypeString(), ConvBuilderInstancesTest::EXPECTED_TYPE); const auto& tp = ALGORITHM.tuning_params; @@ -142,4 +178,16 @@ TYPED_TEST(ConvBuilderInstancesTest, KernelParamsConfigured) EXPECT_EQ(Builder::factory::C_BLOCK_TRANSFER.thread_cluster_lengths[3], tclc.n_wave_per_xdl); } +TEST(ConvBuilderInstancesTest, TypeStringsAreUnique) +{ + std::set strings; + for(int i = 0; i < NUM_TEST_CASES; ++i) + { + const auto& [iter, inserted] = strings.insert(std::string(TEST_CASES[i].expected_type)); + EXPECT_TRUE(inserted) << "Duplicate expected_string " << *iter; + } + EXPECT_EQ(strings.size(), NUM_TEST_CASES) + << "Found fewer unique expected_strings than test cases"; +} + } // namespace