  We propose a new architecture for optimization modeling frameworks in which
solvers are expressed as computation graphs in a framework like TensorFlow
rather than as standalone programs built on a low-level linear algebra
interface. Our new architecture makes it easy for modeling frameworks to
support high performance computational platforms like GPUs and distributed
clusters, as well as to generate solvers specialized to individual problems.
Our approach is particularly well adapted to first-order and indirect
optimization algorithms. We introduce cvxflow, an open-source convex
optimization modeling framework in Python based on the ideas in this paper, and
show that it outperforms the state of the art.
