digraph { 
 rankdir=LR
  weight=0.5
 concentrate=true
 splines=ortho
 newrank=true
nodesep=1

 node[width=4.4,shape=box]
 
	Node0x490c380 [shape=record,label="SoftmaxMKLDNNKernel::Compute()\l"];

	Node0x4ab38f0 [shape=record,label="MKLDNNActivationKernel::Compute()\l"];

    subgraph cluster_A {
    label="Derived Handlers"
    node[width=7.4,shape=box]
    style=dotted
//    Dummy[shape=record,label="", color=invis];
	Node0x4915e90 [shape=record,label="SoftmaxMKLDNNHandler::SoftmaxMKLDNNHandler\<forward\>()\l"];
	Node0x4b2e4f0 [shape=record,label="ActivationMKLDNNHandler::ActivationMKLDNNHandler\<forward\>()\l"];
    }

    subgraph cluster_B {
    label="Base MKLDNNHandler"
    style=dotted
    node[width=6.2,shape=box]
	Node0x49164c0 [shape=record,label="MKLDNNHandlerT::AcquireSrcMemory()\l"];
	Dst[shape=record,label="MKLDNNHandlerT::AcquireDstMemory()\l"];
	Node0x491bca0 [shape=record,label="MKLDNNHandlerT::AcquireForwardPrimitive()\l"];
	Node0x496cfc0 [shape=record,label="MKLDNNHandlerT::AcquireForwardPrimitiveDescriptor()\l"];
    }

Node0x490c380 -> Node0x4915e90[style="bold"];
Node0x490c380 -> Node0x49164c0;
Node0x490c380 -> Node0x491bca0;
Node0x490c380 -> Dst;
Node0x4915e90 -> Node0x496cfc0;


{rank=same Node0x4ab38f0  Node0x490c380 } // Compute level
{rank=same Node0x4915e90  Node0x4b2e4f0 } // Derived Handler level
{rank=same Node0x49164c0 Dst Node0x491bca0  Node0x496cfc0  } // Compute level



Node0x4b2e4f0 -> Node0x496cfc0
Node0x4ab38f0 -> Node0x49164c0
Node0x4ab38f0 -> Dst
Node0x4ab38f0 -> Node0x491bca0
Node0x4ab38f0 -> Node0x4b2e4f0[style="bold"] 

}
