| 47 | } |
| 48 | |
| 49 | std::vector<TestArg> get_group_conv_args() { |
| 50 | std::vector<TestArg> args; |
| 51 | for (size_t batch_size : {2}) { |
| 52 | for (size_t ih : {23}) { |
| 53 | for (size_t iw : {ih + 1}) { |
| 54 | for (size_t icpg : {2, 4, 8}) { |
| 55 | for (size_t ocpg : {4, 8}) { |
| 56 | for (size_t fh : {3, 5, 7}) { |
| 57 | for (size_t fw : {fh, fh + 1}) { |
| 58 | for (size_t ph : {0_z, size_t{fw / 2}}) { |
| 59 | for (size_t sh : {1, 2}) { |
| 60 | for (size_t dh : {1, 2}) { |
| 61 | param::Convolution param; |
| 62 | size_t groups = 2; |
| 63 | param.sparse = |
| 64 | param::Convolution::Sparse::GROUP; |
| 65 | |
| 66 | param.mode = param::Convolution::Mode:: |
| 67 | CROSS_CORRELATION; |
| 68 | param.stride_h = param.stride_w = sh; |
| 69 | param.pad_h = param.pad_w = ph; |
| 70 | param.dilate_h = param.dilate_w = dh; |
| 71 | args.emplace_back( |
| 72 | param, |
| 73 | TensorShape{ |
| 74 | batch_size, icpg * groups, |
| 75 | ih, iw}, |
| 76 | TensorShape{ |
| 77 | groups, ocpg, icpg, fh, |
| 78 | fw}); |
| 79 | } |
| 80 | } |
| 81 | } |
| 82 | } |
| 83 | } |
| 84 | } |
| 85 | } |
| 86 | } |
| 87 | } |
| 88 | } |
| 89 | |
| 90 | return args; |
| 91 | } |
| 92 | } // namespace convolution |
| 93 | |
| 94 | TEST_F(ROCM, CONV_GROUP) { |