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

Method cmp_flt

dnn/test/cuda/chanwise_convolution.cpp:216–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

214 }
215
216 void cmp_flt() {
217 Tensor<> flt0_cpu(handle_cpu, lflt0), flt1_cpu(handle_cpu, lflt1);
218 float* p0 = flt0_cpu.ptr();
219 float* p1 = flt1_cpu.ptr();
220 megdnn_memcpy_D2H(handle, p0, flt0->ptr(), lflt0.span().dist_byte());
221 megdnn_memcpy_D2H(handle, p1, flt1->ptr(), lflt1.span().dist_byte());
222
223 size_t IC = lflt1[0], CHL_MUL = lflt1[1], FSIZE = lflt1[3] * lflt1[4];
224
225 double tot_err = 0, tot_err_num = 0;
226 for (size_t i = 0; i < IC; ++i) {
227 for (size_t j = 0; j < CHL_MUL; ++j) {
228 auto t0 = p0 + ((i * CHL_MUL + j) * IC + i) * FSIZE,
229 t1 = p1 + (i * CHL_MUL + j) * FSIZE;
230 for (size_t k = 0; k < FSIZE; ++k) {
231 auto err = std::abs(diff(t0[k], t1[k]));
232 tot_err += err;
233 tot_err_num += 1;
234 ASSERT_LT(err, 1e-2) << "failed at " << i << " " << j << " " << k
235 << " vals=" << t0[k] << "," << t1[k];
236 }
237 }
238 }
239 auto avg_err = tot_err / tot_err_num;
240 ASSERT_LT(avg_err, 1e-4);
241 }
242};
243
244} // anonymous namespace

Callers 1

TEST_FFunction · 0.45

Calls 5

diffFunction · 0.85
dist_byteMethod · 0.80
spanMethod · 0.80
absFunction · 0.50
ptrMethod · 0.45

Tested by

no test coverage detected