Adaptation and self-repair in parallel computing structures