Dans l'architecture d'EvoX,l'ordonnanceur Runtimeest le centre d'exécution qui relie la logique algorithmique au matériel physique. Il se charge de mapper les algorithmes évolutionnaires, les définitions de problèmes et les workflows vers des ressources de calcul hétérogènes telles que les GPU, les accélérateurs (comme TPU/NPU) et les clusters distribués, tout en masquant les différences matérielles et en préservant une composabilité efficace des modules algorithmiques.
Responsabilités principales
- Ordonnancement du calcul hétérogène: gestion unifiée des ressources d'exécution telles que les GPU, les accélérateurs et les clusters distribués, en affectant les tâches, les opérateurs et les graphes de calcul tensoriel du calcul évolutionnaire au backend matériel le plus adapté.
- Coordination des dépendances et des états: coordination des dépendances entre les tâches et de leur état d'exécution, afin de garantir une synchronisation correcte à chaque étape de l'exploration évolutionnaire parallèle.
- Interface d'ordonnancement unifiée: la couche algorithmique soumet les tâches de calcul via une interface unifiée, sans être liée à un appareil ou une forme de cluster spécifique, ce qui réduit le couplage matériel.
- Composabilité des modules: prise en charge de la combinaison, du remplacement et de la réutilisation modulaires des algorithmes, des problèmes, des opérateurs et des backends d'exécution, permettant de migrer facilement le même code vers différents environnements matériels.
Valeur et exemples
La valeur essentielle de l'ordonnanceur Runtime réside dans sa capacité à déployer efficacement l'exploration évolutionnaire parallèle sur différents matériels, sans compromettre la conception modulaire des algorithmes de haut niveau. Par exemple, lorsqu'un même algorithme évolutionnaire passe d'un GPU mono-machine à un cluster multi-machines, le code de la couche algorithmique reste inchangé, tandis que le Runtime remappe les tâches de calcul et les backends d'exécution. Cette conception permet aux chercheurs de se concentrer sur l'innovation algorithmique sans réécrire le code pour chaque type de matériel.
