Reducing communication in sparse solvers