JournalLe cerveau

96 % de processeur : où passe vraiment le calcul d'un robot

Log
8 sur 28
Date
Lecture
2 min de lecture

Compétences de ce log

Le soir du 20 octobre, je me suis posé une question franche : le robot est-il déjà à bout de souffle ? Et si oui, me faut-il un portable à côté de lui pour chaque démonstration ?

Graphique : la vision prend 1,65 cœur sur les 2,08 du programme.

Ce que les chiffres ont dit

À 19 h 51, le processeur du robot était à 96 %. Mon programme seul prenait 2,3 de ses quatre cœurs, le logiciel du fabricant 0,9. Mémoire et température allaient bien : 3,1 Go libres, 54 °C, aucun bridage. La machine ne défaillait donc pas. Elle était simplement pleine.

Puis le budget, mesuré sur 110 minutes, en cœurs utilisés en moyenne :

Qui Cœurs
La vision : trouver les visages et calculer les empreintes 1,65
La réception des images de la caméra, 30 par seconde, 1 280 × 720 0,16
Le son, la direction du bruit, le reste 0,14
Non attribué 0,13
Mon programme, total 2,08
Le logiciel du fabricant, seul 0,38

La vision mangeait presque tout. Et par image, moi dans le champ, le travail s’additionnait à environ 750 millisecondes de processeur.

Dans la machine

OpenCV, la bibliothèque de vision, répartit par défaut son travail sur les quatre cœurs. Ça a l’air plus rapide. Sur un petit processeur partagé avec d’autres programmes, c’est surtout plus cher. J’ai mesuré le temps de processeur par image avec quatre fils de calcul, puis avec un seul :

Étape 4 fils 1 fil
Trouver les visages, 640 px 232 ms 160 ms
Affiner la boîte du visage 135 ms 88 ms
Calculer une empreinte 387 ms 323 ms

Avec un seul fil, chaque étape coûte moins de processeur au total. Le travail est le même. Le surplus vient très probablement de la coordination de quatre fils, et de la concurrence avec les autres programmes pour les mêmes cœurs.

Il y avait un deuxième indice. En 112 minutes, le programme a traité 26 353 images, 3,9 par seconde. Sa consigne était de 6. Il ne l’a jamais atteinte, et sa boucle ne dormait jamais. Une boucle qui ne dort jamais prend tout ce qu’on lui donne.

Le changement

Un seul réglage : OpenCV sur un seul fil. Installé sur le robot à 21 h 07 :

Mesure Avant Après
Mon programme 2,41 cœurs 1,24 cœur
Le robot entier, pendant que je dictais 96 % 73 %

Ma réponse à la question du soir : le robot n’est pas saturé par son matériel, il est saturé par la façon dont je l’ai fait percevoir. Il calculait une empreinte à chaque image, et cherchait des visages à plein régime même quand rien ne se passait.

La suite

C’était le levier facile. Le vrai demandait de changer la façon dont le robot suit qui est en face de lui.

Read in English