Application autotuning to support runtime adaptivity in multicore architectures