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

Function run_conv

dnn/src/fallback/convolution/run_conv.cpp:428–453  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

426namespace convolution {
427
428void run_conv(
429 const float* src, const float* filter, float* dst, void* workspace, size_t IH,
430 size_t IW, size_t IC, size_t FH, size_t FW, size_t OH, size_t OW, size_t OC,
431 size_t PH, size_t PW, size_t SH, size_t SW, bool xcorr) {
432 for (size_t oc = 0; oc < OC; ++oc)
433 for (size_t ic = 0; ic < IC; ++ic) {
434 // ut for untransposed
435 const float* fut = filter + oc * IC * FH * FW + ic * FH * FW;
436 const float* f;
437 if (!xcorr) {
438 // need transpose
439 f = (float*)workspace;
440 for (size_t fh = 0; fh < FH; ++fh)
441 for (size_t fw = 0; fw < FW; ++fw) {
442 ((float*)f)[fh * FW + fw] =
443 fut[(FH - fh - 1) * FW + (FW - fw - 1)];
444 }
445 } else {
446 // do not need transpose
447 f = fut;
448 }
449 run_xcorr_single_channel(
450 src + ic * IH * IW, f, dst + oc * OH * OW, IH, IW, FH, FW, OH, OW,
451 PH, PW, SH, SW, ic > 0);
452 }
453}
454
455void run_conv_backward_data(
456 const float* diff, const float* filter, float* grad, void* workspace, size_t IH,

Callers 1

dispatch_kernMethod · 0.85

Calls 1

run_xcorr_single_channelFunction · 0.85

Tested by

no test coverage detected