Skip to content

[core] generate_scheduling: pad operator is not managed after metaops manipulation

What commit version of aidge do you use

  • aidge_core: branch dev: commit 2edd547d
  • aidge_backend_cpu: branch dev: commit d111493246ae4835681c47510cb08031950b3790

Problem description

Executing aidge_onnx.load_onnx creates metaops named PaddedConv & PaddedConvDepthWise. After quantization, I want to fuse metaops with nodes:

  • Pad+Conv+Scaling+ReLU=PadConvReLU
  • Pad+ConvDepthWise+Scaling+ReLU=PadConvDepthWiseReLU

After these changes, I get an error about Pad node at scheduler.generate_scheduling() execution. Is there a specific implementation for PaddedConv & PaddedConvDepthWise metaops in the scheduler.generate_scheduling() function which is not called with the new custom metaops?

Reproducible example code

A patch which is not merge yet must be added in aidge_backend_cpu: File location: aidge_backend_cpu/include/aidge/backend/cpu/operator/PadImpl_forward_kernels.hpp Patched file: PadImpl_forward_kernels.hpp

Python script to reproduce the issue:issue.py onnx: issue.onnx

Extract from the logs

Replaced 13 (out of 13) matching sub-graph with meta operators
Context: Producer node  (of type PadConvDepthWiseReLU) output #0
Context: Producer node  (of type PadConvReLU) output #0
Assertion failed: mImpl != nullptr in /local2/is157416/rm254443/git_repo/aidge/aidge_core/src/operator/Operator.cpp:35
Context: Producer node  (of type PadConvDepthWiseReLU) output #0
Context: Producer node  (of type PadConvReLU) output #0
getNbRequiredData(): an implementation is required for Pad!
    scheduler.generate_scheduling()
RuntimeError: getNbRequiredData(): an implementation is required for Pad!
Edited by RAPHAEL MILLET