Nell'architettura di EvoX, loscheduler Runtimeè il centro esecutivo che collega la logica algoritmica all'hardware fisico. Si occupa di mappare gli algoritmi evolutivi, la definizione del problema e i workflow di livello superiore su risorse di calcolo eterogenee come GPU, acceleratori (ad esempio TPU/NPU) e cluster distribuiti, nascondendo le differenze hardware e preservando al contempo l'elevata componibilità dei moduli algoritmici.
Responsabilità principali
- Scheduling di risorse di calcolo eterogenee: gestisce in modo unificato le risorse di esecuzione come GPU, acceleratori e cluster distribuiti, assegnando attività, operatori e grafi di calcolo tensoriale del calcolo evolutivo al backend hardware più adatto.
- Coordinamento delle dipendenze e degli stati: coordina le relazioni di dipendenza e gli stati di esecuzione tra le attività, garantendo che ogni fase dell'esplorazione evolutiva parallela sia sincronizzata correttamente.
- Interfaccia di scheduling unificata: il livello algoritmico invia le attività di calcolo tramite un'interfaccia unificata, senza vincolarsi a dispositivi o configurazioni di cluster specifici, riducendo così l'accoppiamento con l'hardware.
- Componibilità dei moduli: supporta la composizione, la sostituzione e il riutilizzo modulare di algoritmi, problemi, operatori e backend di esecuzione, consentendo di migrare facilmente lo stesso codice su ambienti hardware diversi.
Valore ed esempi
Il valore principale dello scheduler Runtime consiste nel rendere efficiente l'esplorazione evolutiva parallela su hardware diversi, senza compromettere il design modulare degli algoritmi di livello superiore. Ad esempio, quando lo stesso algoritmo evolutivo passa da una GPU singola a un cluster multi-nodo, il codice del livello algoritmico rimane invariato: è il Runtime a rimappare le attività di calcolo e i backend di esecuzione. Questo design permette ai ricercatori di concentrarsi sull'innovazione algoritmica senza dover riscrivere il codice per ogni tipo di hardware.
