Reducing data movement energy on dense and sparse linear algebra workloads : from machine learning to high performance scientific computing