Scheduling distributed computational graph I work in computational fluid dynamics. And I spend most of my time waiting for simulation to complete. 

The common way to improve simulation performance is to use a suitable distributed linear algebra library, a big computer with Infiniband, tweek some parameters and hope for the best. 

Most of my simulations can be seen as many iterations of a single big "computational graph" of mul/div/add, without a single branch. It seems that finding a optimal scheduling for this computation could be seen as a optimization problem. 

The absence of branch, the complete knowledge of the architecture (Memory hierarchy, number of functional units, communication interface...) and the fact that the same graph will be used many time make me think that some very aggressive optimization could be done ahead of time.

As some work been done in computer science to find a optimal scheduling for a "computational graph" and a given architecture?
The general problem of mapping a graph, where nodes are computational  operations and edges are transfers of data (i.e. dependencies), to computational resources is known as graph partitioning.

The general graph partitioning problem is NP-hard and therefore not directly solvable. However, there are good heuristic approaches. There are a number of open-source frameworks for graph partitioning, for example Metis, Scotch and Zoltan.