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

Function build_opgraph_fused

dnn/src/cuda/cudnn_wrapper_v8.cpp:293–360  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

291}
292
293auto build_opgraph_fused(
294 const cudnnHandle_t& handle, const cudnn_frontend::Tensor& x,
295 const cudnn_frontend::Tensor& y, const cudnn_frontend::Tensor& w,
296 const cudnn_frontend::Tensor& b, const cudnn_frontend::Tensor& z,
297 const cudnn_frontend::Tensor& after_add,
298 const cudnn_frontend::Tensor& after_bias,
299 const cudnn_frontend::Tensor& after_conv,
300 const cudnn_frontend::ConvDesc_v8& conv_desc,
301 const cudnn_frontend::PointWiseDesc_v8& act_desc, float alpha, float beta) {
302 const auto precision = CUDNN_DATA_FLOAT;
303
304 // add z
305 auto add_desc1 = cudnn_frontend::PointWiseDescBuilder()
306 .setMode(CUDNN_POINTWISE_ADD)
307 .setMathPrecision(precision)
308 .build();
309 // add bias
310 auto add_desc2 = cudnn_frontend::PointWiseDescBuilder()
311 .setMode(CUDNN_POINTWISE_ADD)
312 .setMathPrecision(precision)
313 .build();
314
315 // create conv node
316 auto conv_op = cudnn_frontend::OperationBuilder(
317 CUDNN_BACKEND_OPERATION_CONVOLUTION_FORWARD_DESCRIPTOR)
318 .setxDesc(x)
319 .setyDesc(after_conv)
320 .setwDesc(w)
321 .setcDesc(conv_desc)
322 .build();
323
324 // create add z node
325 auto add_op1 = cudnn_frontend::OperationBuilder(
326 CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR)
327 .setxDesc(conv_op.getOutputTensor())
328 .setbDesc(z)
329 .setyDesc(after_add)
330 .setpwDesc(add_desc1)
331 .setAlpha(alpha)
332 .setAlpha2(beta)
333 .build();
334
335 // create add bias node
336 auto add_op2 = cudnn_frontend::OperationBuilder(
337 CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR)
338 .setxDesc(add_op1.getOutputTensor())
339 .setbDesc(b)
340 .setyDesc(after_bias)
341 .setpwDesc(add_desc2)
342 .build();
343
344 // create act node
345 auto act_op = cudnn_frontend::OperationBuilder(
346 CUDNN_BACKEND_OPERATION_POINTWISE_DESCRIPTOR)
347 .setxDesc(add_op2.getOutputTensor())
348 .setyDesc(y)
349 .setpwDesc(act_desc)
350 .build();

Callers 1

Calls 3

buildMethod · 0.45
sizeMethod · 0.45
dataMethod · 0.45

Tested by

no test coverage detected