Na arquitetura do EvoX,o Agendador de Runtimeé o centro de execução que liga a lógica algorítmica ao hardware físico. É responsável por mapear os algoritmos evolutivos, as definições de problemas e os fluxos de trabalho das camadas superiores para recursos de computação heterogénea como GPUs, dispositivos aceleradores (por exemplo, TPU/NPU) e clusters distribuídos, abstraindo as diferenças de hardware e, ao mesmo tempo, mantendo a elevada composabilidade dos módulos algorítmicos.
Responsabilidades Principais
- Agendamento de capacidade de computação heterogénea: gestão unificada de recursos de execução como GPUs, dispositivos aceleradores e clusters distribuídos, atribuindo tarefas, operadores e grafos de computação tensorial da computação evolutiva ao backend de hardware mais adequado.
- Coordenação de dependências e estados: coordena as relações de dependência e os estados de execução entre tarefas, garantindo que cada fase da exploração evolutiva paralela seja sincronizada corretamente.
- Interface de agendamento unificada: a camada algorítmica submete tarefas de computação através de uma interface unificada, sem necessidade de estar vinculada a um dispositivo ou tipo de cluster específico, reduzindo assim o acoplamento ao hardware.
- Composabilidade de módulos: suporta a combinação, substituição e reutilização modular de algoritmos, problemas, operadores e backends de execução, permitindo que o mesmo código seja facilmente migrado para diferentes ambientes de hardware.
Valor e Exemplos
O valor central do Agendador de Runtime reside em: permitir que a exploração evolutiva paralela seja implementada de forma eficiente em diferentes hardwares, sem comprometer o design modular dos algoritmos das camadas superiores. Por exemplo, quando o mesmo algoritmo evolutivo passa de uma GPU local para um cluster multi-máquina, o código da camada algorítmica permanece inalterado, sendo o Runtime responsável por remapear as tarefas de computação e o backend de execução. Este design permite que os investigadores se concentrem na inovação algorítmica, sem necessidade de reescrever código para cada tipo de hardware.
