Parallélisation : Le futur

Rayon a néanmoins deux limitations importantes qui gagneraient à être éliminées :

  1. 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).
  2. 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++ !