50 static std::map<DataType, FunctionExecutorPtr> gemm_default_configs =
61 static std::map<DataType, FunctionExecutorPtr> gemm_g71_configs =
72 static std::map<DataType, FunctionExecutorPtr> gemm_g52_configs =
83 static std::map<DataType, FunctionExecutorPtr> gemm_g76_configs =
98 if(gemm_g71_configs.find(
data_type) != gemm_g71_configs.end())
104 if(gemm_g76_configs.find(
data_type) != gemm_g76_configs.end())
110 if(gemm_g52_configs.find(
data_type) != gemm_g52_configs.end())
116 if(gemm_default_configs.find(
data_type) != gemm_default_configs.end())
124 CLGEMMKernelType CLGEMMDefaultTypeBifrost::default_f32(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
132 if((
m > 1) && (
n < 16))
142 if((
k > 256) && (
m > 4))
144 constexpr
float alpha = 3.2f;
145 constexpr
float fact0 = 1.51f;
146 constexpr
float fact1 = 1.66f;
147 constexpr
float ops = 12.0f;
148 const float scale =
k > 1024 ? 1.07f : 1.0f;
157 const auto workload =
static_cast<float>((
m *
n) / 20.0f);
165 CLGEMMKernelType CLGEMMDefaultTypeBifrost::default_f16(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
186 CLGEMMKernelType CLGEMMDefaultTypeBifrost::default_q8(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
200 CLGEMMKernelType CLGEMMDefaultTypeBifrost::g76_f32(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
257 CLGEMMKernelType CLGEMMDefaultTypeBifrost::g52_f32(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
271 const float r_mn =
static_cast<float>(
m) /
static_cast<float>(
n);
272 const float r_mk =
static_cast<float>(
m) /
static_cast<float>(
k);
273 const float r_nk =
static_cast<float>(
n) /
static_cast<float>(
k);
274 const float r_mnk =
static_cast<float>(
m) / (
static_cast<float>(
n) *
static_cast<float>(
k));
282 if(r_mnk <= 77.5833f)
305 if(r_mnk <= 193.0000f)
333 if(r_mnk <= 1391.2875f)
341 if(r_mnk <= 470.0000f)
355 if(r_mnk <= 9040.5000f)
384 CLGEMMKernelType CLGEMMDefaultTypeBifrost::g76_f16(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
398 const float r_mn =
static_cast<float>(
m) /
static_cast<float>(
n);
399 const float r_nk =
static_cast<float>(
n) /
static_cast<float>(
k);
407 if(r_nk <= 0.4990234375f)
433 if(r_mn <= 0.04475911520421505f)
446 CLGEMMKernelType CLGEMMDefaultTypeBifrost::g52_f16(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)
559 CLGEMMKernelType CLGEMMDefaultTypeBifrost::g71_f16(
unsigned int m,
unsigned int n,
unsigned int k,
unsigned int b,
bool is_rhs_constant)