| 120 | }; |
| 121 | |
| 122 | void run_forward_test(DType dtype) { |
| 123 | TaskRecordChecker<ArgsortForward> checker(2); |
| 124 | using Param = Argsort::Param; |
| 125 | using Order = Param::Order; |
| 126 | ArgsortRNG rng{dtype}; |
| 127 | checker.set_dtype(2, dtype::Int32()); |
| 128 | checker.set_dtype(0, dtype).set_rng(0, &rng); |
| 129 | for (size_t i = 3; i < 10240; i *= 2) { |
| 130 | Param param; |
| 131 | |
| 132 | param.order = Order::ASCENDING; |
| 133 | checker.set_param(param).execs({{3, i + 1}, {}, {}}); |
| 134 | param.order = Order::DESCENDING; |
| 135 | checker.set_param(param).execs({{3, i - 1}, {}, {}}); |
| 136 | checker.set_param(param).execs({{13, i + 3}, {}, {}}); |
| 137 | } |
| 138 | { |
| 139 | // reverse sort large array |
| 140 | constexpr size_t N = 200003; |
| 141 | rng.set_rev_order(true); |
| 142 | Param param; |
| 143 | param.order = Order::ASCENDING; |
| 144 | checker.set_param(param).execs({{1, N}, {}, {}}); |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | class IdxRng final : public RNG { |
| 149 | void gen(const TensorND& tensor) override { |
no test coverage detected