Communication avoiding algorithms