Les unités de traitement accéléré font leur entrée dans les dernières générations de caméras intelligentes du fabricant allemand. Une technologie qui constitue une alternative crédible au FPGA, mais qui peut aussi être associée avec lui.
Qtechnology a sauté le pas !
Sa dernière génération de caméra intelligente utilise les unités de traitement accélérées (APU) de la série G embarquée d’AMD pour tous les calculs de haut niveau, et une architecture FPGA à faible coût pour l’interface de capteur et les prétraitements d’images. Pourquoi ce changement du FPGA pour des puces de type x86 ? Pour réduire les coûts et les temps de développement et pour gagner en polyvalence, tout en préservant la performance. « Dans les configurations basées sur des FPGA avec cœur CPU dur, la plupart des applications de vision exigent que les algorithmes de traitement d’images les plus intensifs soient implémentés dans la matrice FPGA. Cela est très contraignant car il faut, pour chaque application, dédier un cycle de conception séparé à l’écriture du code en langage de développement VHDL (VHSIC hardware description langage) et à celle des drivers associés. Une simple modification de l’algorithme, du flot de données ou même du processus de débogage et de vérification impose une longue itération d’implémentation du FPGA », explique Ricardo Ribalda, ingénieur firmware.
Simples, performants et… ouverts
En optant pour des unités de traitement accélérées, les ingénieurs danois ont au contraire décomplexifié et accéléré leurs développements. « Les APU x86, T56N de la série G embarquée d’AMD nous ont permis d’atteindre une efficacité de développement précédemment inenvisageable, en grande partie en puisant dans des bibliothèques de traitement d’images open source et de tierces-parties comme OpenCV, Mathworks Matlab et Halcon », explique Ricardo Ribalda. Les phases de test sont, elles aussi, plus simples qu’auparavant. « Le x86 peut être testé avec des outils standard incluant des analyseurs de latence et de performance (perf, ftrace), des débogueurs modernes et des environnements de développement intégrés (Eclipse, gdb), des analyseurs de puissance (powertop)… Tous ces outils sont déployés facilement avec des outils fournis par des projets de collaboration open source comme le Yocto Project, qui offre aux concepteurs des gabarits, des outils et des méthodes qui aident à créer des systèmes Linux personnalisés pour systèmes embarqués, indépendamment de l’architecture matérielle. Les applications peuvent être compilées et testées sur n’importe quel ordinateur, en se passant de compilateur croisé spécifique ou d’un BSP (Board Support Package) à support réduit », poursuit l’ingénieur firmware.
De nombreux avantages
Sur une puce APU, la cohabitation d’un GPU avec le CPU permet de décharger ce dernier en confiant au GPU les traitements intensifs de pixels de l’application de vision. Libéré de ces traitements, le CPU peut répondre à d’autres interruptions avec une latence beaucoup plus faible, améliorant considérablement la performance temps réel du système global. Et « avec cette architecture, toute la plate-forme est gérable par un noyau Linux standard, qui ne demande qu’un support modéré à chaque révision. Le démarrage de la carte se fait à partir de n’importe quel système d’exploitation (Linux, Windows), ce qui accélère la mise sur le marché », note Ricardo Ribalda.
« Pour simplifier encore le développement et comprimer les cycles, nous avons intégré l’APU dans un Panel PC industriel et dans un module de contrôle d’E/S de 80 mm x 80 mm, nous réservant la possibilité de réutiliser du code dans différents systèmes via une seule distribution basée sur Yocto », note l’ingénieur firmware. L’ouverture va encore plus loin. En effet, l’emploi de standards industriels comme Ethercat et Modbus passe « simplement » par l’intégration de bibliothèques existantes, généralement déjà développées sur x86. Et pour les applications nécessitant des moyens de calculs plus importants, la plate-forme APU sélectionnée par Qtechnology permet d’améliorer la performance du système en couplant l’APU avec un GPU Radeon d’AMD en format MXM. Mais surtout, « le choix d’un APU au lieu d’un FPGA comme calculateur central de nos caméras intelligentes nous a permis aussi de mieux profiter d’outils de développement ouverts tels qu’OpenCL. Cette plate-forme de programmation non propriétaire permet d’accroître la performance des traitements en parallèle, tout en développant une seule base de code source pour une large gamme de systèmes de vision », note Glöde Madsen. Cela permet aussi d’offrir des fonctionnalités poussées si nécessaire. Enfin, le support de x86 facilite l’intégration avec les réseaux et des systèmes de contrôle distribués apportant des bénéfices additionnels aux applications hébergées. « Il nous a été facile d’implémenter des fonctions de télégestion et de débogage via Internet, ce qui a amélioré notre service client et nous a permis de fournir des données temps réel à nos clients à des fins de « fouilles de données » », poursuit le confondateur de Qtechnology.
Le FPGA ne disparaît pas
Le fabricant de caméras n’a pas totalement abandonné les FPGA. « Nous avons seulement échangé notre architecture traditionnelle purement FPGA contre une approche APU + FPGA faible coût ; nous avons partitionné le système de manière à ce que le FPGA économique soit dédié uniquement à l’interfaçage du capteur et à un flux de tâches de vision fixe, consistant en prétraitements d’images. Cette fonction en FPGA dispose comme interface de Video4Linux2 (V4L2), l’environnement API + driver standard de Linux pour périphériques de capture et sortie vidéo. Toutes les applications standards (Skype, Ekiga, etc) et toutes les bibliothèques standards (OpenCV, Gstreamer) peuvent accéder au capteur. Tous les autres traitements sont effectués avec des bibliothèques de vision standard ou par des programmes OpenCL définis par l’utilisateur sans intervention des concepteurs hardware », explique Ricardo Rigalda. Peut-être pas pour longtemps…