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

Function reduce_fwd

dnn/src/naive/check_non_finite/opr_impl.cpp:11–30  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9#define wtype dt_int32
10
11void reduce_fwd(const TensorNDArray& srcs, wtype* dptr, dt_float32 scale) {
12 dptr[0] = 0;
13 for (auto src : srcs) {
14 auto sptr = src.ptr<dt_float32>();
15 size_t size = src.layout.total_nr_elems();
16 std::function<wtype(wtype, wtype)> func;
17 func = [&](wtype l, wtype r) -> wtype {
18 if (l + 1 < r) {
19 wtype mid = l + (r - l) / 2;
20 return func(l, mid) | func(mid, r);
21 } else {
22 auto val = std::isfinite(sptr[l]);
23 if (val)
24 sptr[l] *= scale;
25 return static_cast<wtype>(!val);
26 }
27 };
28 dptr[0] |= func(0, size);
29 }
30}
31
32} // namespace
33

Callers 1

execMethod · 0.70

Calls 3

funcFunction · 0.50
isfiniteFunction · 0.50
total_nr_elemsMethod · 0.45

Tested by

no test coverage detected