Graph Partitioning Algorithms For Minimizing Inter-Node Communication On A Distributed System