提交 97912262 编写于 作者: M Megvii Engine Team

feat(dnn): add nchw44 q8 direct conv stride 1

GitOrigin-RevId: 2ae87ff6912f19eaac17d5fba72e93e26900b8fa
上级 944a125c
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
#endif #endif
#define rep(i, n) for (auto i = decltype(n){0}; i < (n); ++i) #define rep(i, n) for (auto i = decltype(n){0}; i < (n); ++i)
#define rep_step(i, n, step) for (auto i = decltype(n){0}; i < (n); i += (step))
#define megdnn_assert_contiguous(layout) \ #define megdnn_assert_contiguous(layout) \
do { \ do { \
......
...@@ -375,6 +375,25 @@ const T* ConvBiasImpl::NCBKernParam::filter(size_t group_pack_id, ...@@ -375,6 +375,25 @@ const T* ConvBiasImpl::NCBKernParam::filter(size_t group_pack_id,
break; break;
} }
case Param::Format::NCHW44: {
size_t group = filter_meta.group;
size_t icpg = filter_meta.icpg;
size_t ocpg = filter_meta.ocpg;
//! four format of weight layout
//! 1. {oc/4, ic/4, fh, fw, 4, 4},
//! 2. {g, oc/4, ic/4, fh, fw, 4, 4},
//! 3. {g/4, fh, fw, 1, 1, 4}, 4. {oc/4, fh, fw, ic, 4}
megdnn_assert((icpg % 4 == 0 && ocpg % 4 == 0) ||
(group % 4 == 0 && icpg == 1 && ocpg == 1 &&
pack_group_size > 1) ||
(group == 1 && ocpg % 4 == 0),
"The filter shepe is not right of nchw44");
group_offset = pack_group_size * group_pack_id * filter_meta.icpg *
filter_meta.ocpg * filter_meta.spatial[0] *
filter_meta.spatial[1] * filter_type.size();
break;
}
case ConvBiasImpl::Param::Format::NCHW_WINOGRAD: case ConvBiasImpl::Param::Format::NCHW_WINOGRAD:
case ConvBiasImpl::Param::Format::NCHW88_WINOGRAD: { case ConvBiasImpl::Param::Format::NCHW88_WINOGRAD: {
//! four format of weight layout //! four format of weight layout
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册