Commit 0eff71a4 authored by Adam Osewski's avatar Adam Osewski
Browse files

Helper structures for padding decision.

parent 1faeddae
...@@ -125,22 +125,40 @@ struct GemmGemmPadder ...@@ -125,22 +125,40 @@ struct GemmGemmPadder
OPerTileType OPerTile_; OPerTileType OPerTile_;
}; };
// M/N/KPerTileType could be index_t or Number<> template <GemmSpecialization GemmSpec>
template <GemmSpecialization GemmSpec, struct GemmPadM
typename MPerTileType,
typename NPerTileType,
typename KPerTileType>
struct GemmPadder
{ {
static constexpr bool PadM = static constexpr bool PadM =
(GemmSpec == GemmSpecialization::MPadding || GemmSpec == GemmSpecialization::MNPadding || (GemmSpec == GemmSpecialization::MPadding || GemmSpec == GemmSpecialization::MNPadding ||
GemmSpec == GemmSpecialization::MKPadding || GemmSpec == GemmSpecialization::MNKPadding); GemmSpec == GemmSpecialization::MKPadding || GemmSpec == GemmSpecialization::MNKPadding);
};
template <GemmSpecialization GemmSpec>
struct GemmPadN
{
static constexpr bool PadN = static constexpr bool PadN =
(GemmSpec == GemmSpecialization::NPadding || GemmSpec == GemmSpecialization::MNPadding || (GemmSpec == GemmSpecialization::NPadding || GemmSpec == GemmSpecialization::MNPadding ||
GemmSpec == GemmSpecialization::NKPadding || GemmSpec == GemmSpecialization::MNKPadding); GemmSpec == GemmSpecialization::NKPadding || GemmSpec == GemmSpecialization::MNKPadding);
};
template <GemmSpecialization GemmSpec>
struct GemmPadK
{
static constexpr bool PadK = static constexpr bool PadK =
(GemmSpec == GemmSpecialization::KPadding || GemmSpec == GemmSpecialization::MKPadding || (GemmSpec == GemmSpecialization::KPadding || GemmSpec == GemmSpecialization::MKPadding ||
GemmSpec == GemmSpecialization::NKPadding || GemmSpec == GemmSpecialization::MNKPadding); GemmSpec == GemmSpecialization::NKPadding || GemmSpec == GemmSpecialization::MNKPadding);
};
// M/N/KPerTileType could be index_t or Number<>
template <GemmSpecialization GemmSpec,
typename MPerTileType,
typename NPerTileType,
typename KPerTileType>
struct GemmPadder
{
static constexpr bool PadM = GemmPadM<GemmSpec>::PadM;
static constexpr bool PadN = GemmPadN<GemmSpec>::PadN;
static constexpr bool PadK = GemmPadK<GemmSpec>::PadK;
template <typename ADesc_MRaw_KRaw> template <typename ADesc_MRaw_KRaw>
__host__ __device__ constexpr auto __host__ __device__ constexpr auto
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment