mirror of
https://github.com/ROCm/composable_kernel.git
synced 2026-07-16 08:44:55 +00:00
Making alorithm a non-type parameter
This simplifies the design by continuing to reduce the number of types and avoidng extra use of constexpr.
This commit is contained in:
@@ -15,68 +15,49 @@ struct FwdConvSignature
|
||||
};
|
||||
static_assert(ckb::ConvSignature<FwdConvSignature>);
|
||||
|
||||
struct FwdConvAlgorithm
|
||||
struct DefaultFwdConvAlgorithm
|
||||
{
|
||||
};
|
||||
static_assert(ckb::ConvAlgorithm<FwdConvAlgorithm>);
|
||||
static_assert(ckb::ConvAlgorithm<DefaultFwdConvAlgorithm>);
|
||||
|
||||
static constexpr char API_VERSION[] = "0.1.0";
|
||||
|
||||
TEST(ConvBuilderTest, TestDefaultInstance)
|
||||
{
|
||||
using Builder = ckb::ConvBuilder<FwdConvSignature, FwdConvAlgorithm, API_VERSION>;
|
||||
static constexpr DefaultFwdConvAlgorithm algorithm;
|
||||
using Builder = ckb::ConvBuilder<FwdConvSignature, algorithm, API_VERSION>;
|
||||
EXPECT_EQ(
|
||||
Builder::Instance::TypeString(),
|
||||
"DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle_V3<256, 256, 256, 32, Default, 32, 32, 4, 4, "
|
||||
"8, 8, 8, 1, 1, BlkGemmPipelineScheduler: Intrawave, BlkGemmPipelineVersion: v4>");
|
||||
}
|
||||
|
||||
[[maybe_unused]] static constexpr ckb::ThreadBlock THREAD_BLOCK_256_256_256_32{
|
||||
.block_size = 256,
|
||||
.sub_matrix = {.m = 256, .n = 256, .k = 32},
|
||||
};
|
||||
|
||||
struct ConvFwdXdlBf16CompInstances2xAlgorithm0
|
||||
struct FwdConvAlgorithm
|
||||
{
|
||||
static constexpr ckb::ThreadBlock THREAD_BLOCK{
|
||||
.block_size = 256,
|
||||
.sub_matrix = {.m = 256, .n = 128, .k = 64},
|
||||
};
|
||||
static constexpr ckb::ConvTuningParams TUNING_PARAMS{
|
||||
.ak1 = 16,
|
||||
.bk1 = 16,
|
||||
.m_xdl_per_wave = 2,
|
||||
.n_xdl_per_wave = 2,
|
||||
};
|
||||
ckb::ThreadBlock thread_block;
|
||||
ckb::ConvTuningParams tuning_params;
|
||||
};
|
||||
static_assert(ckb::ConvAlgorithm<FwdConvAlgorithm>);
|
||||
static_assert(ckb::HasThreadBlockInfo<FwdConvAlgorithm>);
|
||||
static_assert(ckb::HasConvTuningInfo<FwdConvAlgorithm>);
|
||||
|
||||
TEST(ConvBuilderTest, TestConvFwdXdlBf16CompInstances2xInstance0)
|
||||
{
|
||||
using Builder =
|
||||
ckb::ConvBuilder<FwdConvSignature, ConvFwdXdlBf16CompInstances2xAlgorithm0, API_VERSION>;
|
||||
static constexpr FwdConvAlgorithm algorithm{
|
||||
.thread_block{.block_size = 256, .sub_matrix = {.m = 256, .n = 128, .k = 64}},
|
||||
.tuning_params{.ak1 = 16, .bk1 = 16, .m_xdl_per_wave = 2, .n_xdl_per_wave = 2}};
|
||||
using Builder = ckb::ConvBuilder<FwdConvSignature, algorithm, API_VERSION>;
|
||||
EXPECT_EQ(
|
||||
Builder::Instance::TypeString(),
|
||||
"DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle_V3<256, 256, 128, 64, Default, 32, 32, 2, 2, "
|
||||
"8, 8, 8, 1, 1, BlkGemmPipelineScheduler: Intrawave, BlkGemmPipelineVersion: v4>");
|
||||
}
|
||||
|
||||
struct ConvFwdXdlBf16CompAlgorithm0
|
||||
{
|
||||
static constexpr ckb::ThreadBlock THREAD_BLOCK{
|
||||
.block_size = 256,
|
||||
.sub_matrix = {.m = 256, .n = 256, .k = 32},
|
||||
};
|
||||
static constexpr ckb::ConvTuningParams TUNING_PARAMS{
|
||||
.ak1 = 8,
|
||||
.bk1 = 8,
|
||||
.m_xdl_per_wave = 4,
|
||||
.n_xdl_per_wave = 4,
|
||||
};
|
||||
};
|
||||
|
||||
TEST(ConvBuilderTest, GroupedConvFwdXdlBf16CompInstance0)
|
||||
{
|
||||
using Builder = ckb::ConvBuilder<FwdConvSignature, ConvFwdXdlBf16CompAlgorithm0, API_VERSION>;
|
||||
static constexpr FwdConvAlgorithm algorithm{
|
||||
.thread_block{.block_size = 256, .sub_matrix = {.m = 256, .n = 256, .k = 32}},
|
||||
.tuning_params{.ak1 = 8, .bk1 = 8, .m_xdl_per_wave = 4, .n_xdl_per_wave = 4}};
|
||||
using Builder = ckb::ConvBuilder<FwdConvSignature, algorithm, API_VERSION>;
|
||||
EXPECT_EQ(
|
||||
Builder::Instance::TypeString(),
|
||||
"DeviceGroupedConvFwdMultipleABD_Xdl_CShuffle_V3<256, 256, 256, 32, Default, 32, 32, 4, 4, "
|
||||
|
||||
Reference in New Issue
Block a user