Heterogeneity-Aware Approaches To Optimizing Performance Of Computing And Communication Tasks