1. A computer-implemented method to optimize an allocation of a software application across two or more parallel computational nodes on a parallel processing system, the computer-implemented method comprising: receiving a communications profile of a software application comprising a plurality of software computations for execution across two or more parallel computational nodes on a parallel-processing system coupled together by a communications fabric, wherein at least a first software computation of the plurality of software computations communicates application data from at least a second software application of the plurality of software computations, and wherein the communications profile includes an amount of software application data communicated between each of the software computations; and mathematically minimizing an inter node communication cost function for a total amount of software application data transferred between nodes wherein the communication cost is dependent on a manner the software application uses the communication fabric for software application data communications among the software computations.