An Adaptive Framework For Managing Heterogeneous Many-Core Clusters