digraph {
  rankdir=BT;
  node [shape=record];

  ki_a [label="{<f0> interface\nA}"];
  ki_b [label="{<f0> interface\nB}"];

  {rank=same; ki_a ki_b};

  "CPU::A"     -> ki_a [dir="forward"];
  "OpenCL::A"  -> ki_a [dir="forward"];
  "Halide::A"  -> ki_a [dir="forward"];

  "CPU::B"     -> ki_b [dir="forward"];
  "OpenCL::B"  -> ki_b [dir="forward"];
  "Halide::B"  -> ki_b [dir="forward"];
}
