Communication Optimization in Iterative Numerical Algorithms: An Algorithm-Architecture Interaction