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

Method exec

dnn/src/cuda/pooling/algo.cpp:112–146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110}
111
112void PoolingForwardImpl::AlgoCUDNN::exec(const ExecArgs& args) const {
113 TensorND src = *args.src_tensor;
114 TensorND dst = *args.dst_tensor;
115 auto wsb = get_workspace_bundle(args.workspace.raw_ptr, args);
116 auto ctypecvt = CompTypeCvter<dtype::BFloat16, dtype::Float32>(
117 concrete_handle(args.handle), &wsb);
118 if (args.layout_src->dtype.enumv() == DTypeTrait<dtype::BFloat16>::enumv) {
119 ctypecvt.src_to_comp_type(*args.src_tensor, src)
120 .src_to_comp_type(*args.dst_tensor, dst);
121 }
122 {
123 dt_float32 alpha = 1.0f, beta = 0.0f;
124 TensorDesc src_desc, dst_desc;
125 src_desc.set(src.layout, args.opr->param().format);
126 dst_desc.set(dst.layout, args.opr->param().format);
127
128 cudnnPoolingMode_t mode;
129 init_mode(args, mode);
130
131 cudnnPoolingDescriptor_t cudnn_desc;
132 cudnn_check(cudnnCreatePoolingDescriptor(&cudnn_desc));
133 cudnn_check(cudnnSetPooling2dDescriptor(
134 cudnn_desc, mode, CUDNN_NOT_PROPAGATE_NAN, args.opr->param().window_h,
135 args.opr->param().window_w, args.opr->param().pad_h,
136 args.opr->param().pad_w, args.opr->param().stride_h,
137 args.opr->param().stride_w));
138 cudnn_check(cudnnPoolingForward(
139 args.handle->cudnn_handle(), cudnn_desc, &alpha, src_desc.desc,
140 src.raw_ptr(), &beta, dst_desc.desc, dst.raw_ptr()));
141 cudnn_check(cudnnDestroyPoolingDescriptor(cudnn_desc));
142 }
143 if (args.layout_src->dtype.enumv() == DTypeTrait<dtype::BFloat16>::enumv) {
144 ctypecvt.comp_to_dst_type(dst, *args.dst_tensor);
145 }
146}
147
148#if CUDNN_VERSION >= 6000
149bool PoolingForwardImpl::AlgoCUDNNMAXDETERMINISTIC::is_available(

Callers

nothing calls this directly

Calls 10

cuda_streamFunction · 0.85
get_inner_layoutFunction · 0.85
cudnn_handleMethod · 0.80
get_workspace_bundleFunction · 0.50
concrete_handleFunction · 0.50
enumvMethod · 0.45
setMethod · 0.45
paramMethod · 0.45
raw_ptrMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected