Add static check verifying a/b transpose feature support

This commit is contained in:
Damien Lejeune
2025-09-04 08:29:39 +00:00
parent b0dd0b5234
commit 1fee5fd6e5
2 changed files with 24 additions and 7 deletions

View File

@@ -677,26 +677,43 @@ struct UniversalGemmPipelineAgBgCrPolicy
Problem::UseStructuredSparsity,
wg_attr_num_access>;
using BlockGemmPolicy = BlockGemmASmemBSmemCRegV1CustomPolicy<typename Problem::ADataType,
typename Problem::BDataType,
typename Problem::CDataType,
BlockWarps,
WarpGemm>;
if constexpr(Problem::SkipALds == false && Problem::SkipBLds == false)
{
using BlockGemmPolicy =
BlockGemmASmemBSmemCRegV1CustomPolicy<typename Problem::ADataType,
typename Problem::BDataType,
typename Problem::CDataType,
BlockWarps,
WarpGemm>;
return BlockUniversalGemmAsBsCr<Problem, BlockGemmPolicy>{};
}
else if constexpr(Problem::SkipALds == false && Problem::SkipBLds == true)
{
using BlockGemmPolicy =
BlockGemmASmemBRegCRegV1CustomPolicy<typename Problem::ADataType,
typename Problem::BDataType,
typename Problem::CDataType,
BlockWarps,
WarpGemm>;
return BlockUniversalGemmAsBrCr<Problem, BlockGemmPolicy>{};
}
else if constexpr(Problem::SkipALds == true && Problem::SkipBLds == false)
{
using BlockGemmPolicy =
BlockGemmARegBSmemCRegV1CustomPolicy<typename Problem::ADataType,
typename Problem::BDataType,
typename Problem::CDataType,
BlockWarps,
WarpGemm>;
return BlockUniversalGemmArBsCr<Problem, BlockGemmPolicy>{};
}
else
{
using BlockGemmPolicy = BlockGemmARegBRegCRegV1CustomPolicy<typename Problem::ADataType,
typename Problem::BDataType,
typename Problem::CDataType,
BlockWarps,
WarpGemm>;
return BlockUniversalGemmArBrCr<Problem, BlockGemmPolicy>{};
}
}

View File

@@ -57,7 +57,7 @@ using KernelTypesMem = ::testing::Types<
std::tuple< Col, Col, Row, F16, F16, F32, F16, I256, I256, I64, I32, I32, I16, Interwave, Mem, std::false_type, std::false_type>,
std::tuple< Col, Col, Row, F8, F8, F32, F16, I256, I256, I64, I32, I32, I16, Intrawave, Mem, std::false_type, std::false_type>,
std::tuple< Col, Col, Row, F8, F8, F32, F16, I256, I256, I64, I32, I32, I16, Interwave, Mem, std::false_type, std::false_type>,
// SkipALds/SkipBLds
// SkipALds/SkipBLds
std::tuple< Row, Col, Row, F16, F16, F32, F16, I256, I256, I64, I32, I32, I16, Interwave, Mem, std::false_type, std::true_type>,
std::tuple< Row, Col, Row, F16, F16, F32, F16, I256, I256, I64, I32, I32, I16, Interwave, Mem, std::true_type, std::false_type>,
std::tuple< Row, Col, Row, F16, F16, F32, F16, I256, I256, I64, I32, I32, I16, Interwave, Mem, std::true_type, std::true_type>,