It can be seen from the above formula, DAGNN uses only direct predecessors
for aggregation and the pooling on only nodes without successors.
In addition, as shown in Fig. REF , DAGNN considers
\(\textit {topological batching}\) , which divides all nodes in job DAG
into sequential batches \(\textit {B}_{i}\)  that nodes without dependency
may be grouped together and processed concurrently if their predecessors
have all been processed [1]}. Obviously, sequential
batch \(\textit {B}_{i}\)  of the same \(i\)  in different DAGs can be
combined and processed simultaneously, which achieves better parallel
concurrency. It can be seen from Fig. REF  that
nodes 0, 1, 4, and 5 come from different jobs in the same sequential
batch \(\textit {B}_{0}\) , which can be processed concurrently by DAGNN.
