This paper considers the problem of distributing data and code among the processors of a distributed memory supercomputer. Provided that the source program is amenable to detailed dataflow analysis, one may determine a placement function by an algorithm analogous to Gaussian elimination. Such a function completely characterizes the distribution by giving the identity of the virtual processor on which each elementary calculation is executed. One has then to "realize" the virtual processors on the PE. The resulting structure satisfies the "owner compute" rule and is reminiscent of two-level distribution schemes, like HPF's ALIGN and DISTRIBUTE directives, or the CM-2 virtual processor system.