Evolving OpenMP for Evolving Architectures