From Variability-Tolerance To Approximate Computing In Parallel Computing Architectures