How to schedule several layers with association in autotvm

In some ASICs as in the figure, we want to buffer the split data in DM, and doing several grouped layers, then store the data back to DDR to decrease the DDR traffic (with some compute wasting).
Like the following (with tile size):

  1. DDR(32x32)->DM(20x20)->conv1(3x3)->DM(18x18)->conv2(3x3)->DM(16x16)->DDR
  2. DDR(32x32)->DM(22x22)->conv1(3x3)->DM(20x20)->conv1(3x3)->DM(18x18)->conv2(3x3)->DM(16x16)->DDR

not as the normal flow:
DDR->DM->conv1->DM->DDR->DM->conv1->DM->DDR

The example DDR data is split into 4 tile (in h, w direction), after one tile complete all the grouped conv layers, the next tile is started.

Then the question is how to schedule these layers with association in autotvm? How to build several layers in group and shcedule them together?

image

Maybe I need to revise the fuse_ops pass to fuse layer groups, but the spread effect to following pass is unknown.

Hi Seavid,
I have the same question. Would you help share the solution for your requirements? Thank you

Sorry, I concentrate on single layer schedules and stopped investigating it at now. But this cooperative schedule for grouped layers is important in reducing traffic.
@eqy @tqchen @xqdan @aca88 Do you have any ideas for this problem?