Parallélisation : Le futur
Rayon a néanmoins deux limitations importantes qui gagneraient à être éliminées :
- Le coût d’ordonnancement des tâches est assez élevé (~µs).
- Pas gênant tant qu’on parallélise à gros grain ex: traitement batch d’images.
- Coûteux sur des tâches simples comme
dot()
(cache L1 parcouru en ~100ns).
- L’ordonnanceur ne tient pas compte de la topologie NUMA/NUCA du système.
- Vol de travail entre noeuds NUMA = accès mémoire inefficaces. A minimiser !
- Aujourd’hui contourné avec le hack habituel (1 processus / noeud NUMA).
Sur mon temps libre, je travaille sur un prototype d’ordonnanceur plus optimal.
Intégrer cette R&D à rayon
sera bien plus simple que si c’était dans std
comme en C++ !