| 6 | using namespace megcc::KernelGen; |
| 7 | |
| 8 | TEST(GI, ConvBiasIm2col) { |
| 9 | Checker<ConvBiasForward> checker(Arch::BAREMETAL); |
| 10 | checker.set_kernel_symbol("GI_kernel_conv2d_im2col.*"); |
| 11 | checker.set_epsilon(5e-4); |
| 12 | ConvBiasForward::Param param; |
| 13 | for (auto noline : |
| 14 | {ConvBiasForward::Param::NonlineMode::RELU, |
| 15 | ConvBiasForward::Param::NonlineMode::IDENTITY, |
| 16 | ConvBiasForward::Param::NonlineMode::SIGMOID, |
| 17 | ConvBiasForward::Param::NonlineMode::H_SWISH}) |
| 18 | for (size_t n : {1, 3}) |
| 19 | for (size_t oc : {7, 13}) |
| 20 | for (size_t ic : {7, 13}) |
| 21 | for (size_t stride : {1, 2, 3}) |
| 22 | for (size_t filter_size : {2, 3, 5}) |
| 23 | for (size_t hw : {7, 13, 23}) { |
| 24 | param.nonlineMode = noline; |
| 25 | param.pad_h = filter_size / 2; |
| 26 | param.pad_w = filter_size / 2; |
| 27 | param.stride_h = stride; |
| 28 | param.stride_w = stride; |
| 29 | checker.set_param(param); |
| 30 | checker.execs( |
| 31 | {{n, ic, hw, hw}, |
| 32 | {oc, ic, filter_size, filter_size}, |
| 33 | {1, oc, 1, 1}, |
| 34 | {}, |
| 35 | {}}); |
| 36 | } |
| 37 | { |
| 38 | param.pad_h = 1; |
| 39 | param.pad_w = 1; |
| 40 | param.stride_h = 1; |
| 41 | param.stride_w = 1; |
| 42 | checker.set_param(param); |
| 43 | checker.execs({{1, 64, 56, 56}, {64, 64, 3, 3}, {1, 64, 1, 1}, {}, {}}); |
| 44 | } |
| 45 | } |
| 46 | |
| 47 | TEST(GI, ConvBiasIm2colGroup) { |
| 48 | Checker<ConvBiasForward> checker(Arch::BAREMETAL); |