Purine: A bi-graph based deep learning framework
  In this paper, we introduce a novel deep learning framework, termed Purine.
In Purine, a deep network is expressed as a bipartite graph (bi-graph), which
is composed of interconnected operators and data tensors. With the bi-graph
abstraction, networks are easily solvable with event-driven task dispatcher. We
then demonstrate that different parallelism schemes over GPUs and/or CPUs on
single or multiple PCs can be universally implemented by graph composition.
This eases researchers from coding for various parallelization schemes, and the
same dispatcher can be used for solving variant graphs. Scheduled by the task
dispatcher, memory transfers are fully overlapped with other computations,
which greatly reduce the communication overhead and help us achieve approximate
linear acceleration.
