MCPcopy Create free account
hub / github.com/apache/singa / CpuPoolingForward

Function CpuPoolingForward

src/model/operation/pooling.cc:95–118  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

93#ifdef USE_DNNL
94
95Tensor CpuPoolingForward(const PoolingHandle &ph, const Tensor &x) {
96 CHECK_EQ(x.device()->lang(), kCpp);
97 Tensor y({(unsigned long)ph.batchsize, (unsigned long)ph.channels,
98 (unsigned long)ph.pooled_height, (unsigned long)ph.pooled_width},
99 x.device(), x.data_type());
100
101 y.device()->Exec(
102 [y, x, &ph](Context *ctx) mutable {
103 auto eng = ctx->dnnl_engine;
104 using namespace dnnl;
105
106 memory x_mem(ph.x_md, eng, x.block()->mutable_data());
107 memory y_mem(ph.y_md, eng, y.block()->mutable_data());
108
109 pooling_forward(ph.pool_fwd_pd)
110 .execute(ctx->dnnl_stream, {{DNNL_ARG_SRC, x_mem},
111 {DNNL_ARG_DST, y_mem},
112 {DNNL_ARG_WORKSPACE, ph.ws_mem}});
113 ctx->dnnl_stream.wait();
114 },
115 {x.block()}, {y.block()}, "CpuPoolingForward");
116
117 return y;
118}
119
120Tensor CpuPoolingBackward(const PoolingHandle &ph, const Tensor &grad,
121 const Tensor &x, const Tensor &y) {

Callers 1

TESTFunction · 0.85

Calls 7

langMethod · 0.80
deviceMethod · 0.80
data_typeMethod · 0.80
ExecMethod · 0.80
mutable_dataMethod · 0.80
blockMethod · 0.45
waitMethod · 0.45

Tested by 1

TESTFunction · 0.68