MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / get_matmul_kern_param

Function get_matmul_kern_param

dnn/src/fallback/conv_bias/im2col/algos.cpp:20–54  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18
19namespace {
20static fallback::MatrixMulImpl::KernSizeParam get_matmul_kern_param(
21 const fallback::ConvBiasImpl::NCBKernSizeParam& param, size_t ohw_tile_size,
22 size_t oc_tile_size) {
23 auto format = param::MatrixMul::Format::DEFAULT;
24 size_t pack_oc_size = pack_size(param.filter_meta.format);
25 if (param.filter_meta.format == param::ConvBias::Format::NCHW44) {
26 format = param::MatrixMul::Format::MK4;
27 } else if (param.filter_meta.format == param::ConvBias::Format::NCHW44_DOT) {
28 format = param::MatrixMul::Format::MK4_DOT;
29 } else if (param.filter_meta.format == param::ConvBias::Format::NCHW88) {
30 format = param::MatrixMul::Format::MK8;
31 }
32 size_t M = oc_tile_size;
33 size_t N = ohw_tile_size;
34 size_t K = param.filter_meta.icpg * param.filter_meta.spatial[0] *
35 param.filter_meta.spatial[1];
36 size_t LDA = pack_oc_size * K, LDB = pack_oc_size * N, LDC = N * pack_oc_size;
37 bool is_dst_8bit = (param.src_type.enumv() == DTypeEnum::QuantizedS8 &&
38 param.dst_type.enumv() == DTypeEnum::QuantizedS8) ||
39 (param.src_type.enumv() == DTypeEnum::Quantized8Asymm &&
40 param.dst_type.enumv() == DTypeEnum::Quantized8Asymm);
41 return {param.filter_type,
42 param.src_type,
43 is_dst_8bit ? param.bias_type : param.dst_type,
44 M,
45 N,
46 K,
47 LDA,
48 LDB,
49 LDC,
50 false,
51 false,
52 param::MatrixMul::ComputeMode::DEFAULT,
53 format};
54}
55
56static void choice_ohw_oc_block(
57 const fallback::ConvBiasImpl::NCBKernSizeParam& param, size_t& oc_tile_size,

Callers 7

get_bundleFunction · 0.70
dispatch_kernsMethod · 0.70
usableMethod · 0.70
get_wbundle_computeMethod · 0.50
get_kernsMethod · 0.50

Calls 1

enumvMethod · 0.45

Tested by

no test coverage detected