A heuristic graph partitioning method to minimize remote communication costs