Acquisition de données : Spectrum Instrumentation parie sur le langage Julia pour ses numériseurs et générateursDans les applications scientifiques et les applications de test et mesure, la quantité de données à gérer (acquisition, stockage, traitement) ne cesse d’augmenter, dans des séquences temporelles très contraintes, obligeant les ingénieurs à réfléchir à toutes les voies possibles pour maitriser cette évolution. ...Dans ce cadre, le fabricant de cartes de test et de mesure scientifiques Spectrum Instrumentation propose, pour la programmation de sa gamme de numériseurs et de générateurs de données en châssis (formats PCIe, PXIe, LXI…), un kit de développement logiciel (SDK) en langage Julia. Relativement peu connu jusqu’à aujourd’hui, le langage Julia est apparu en 2009 au sein du MIT (Massachusetts Institute of Technology) aux Etats-Unis pour les besoins de la programmation scientifique et mathématique de haute performance. Doté d’une syntaxe familière aux utilisateurs d'autres langages comme Matlab, Scilab, Python, etc., Julia dispose d’un compilateur optimisé sophistiqué qui accélère la vitesse d’exécution du code, tout en étant capable de gérer des exécutions parallèles distribuées. Dans un programme Julia, il suffit d’appeler un script avec un nombre donné de cœurs de calcul et le code est parallélisé directement à partir d'une seule ligne de commande. De plus, il est possible d'envoyer des tâches à différents threads ou d'exécuter des boucles en parallèle, directement à partir du code. Le résultat est un langage qui offre des vitesses similaires au langage C, tout en permettant un codage comparable à Python ou Matlab. La bibliothèque de programmes Julia, disponible en open source, essentiellement écrite dans le langage éponyme, intègre également des codes en C et Fortran pour l'algèbre linéaire, la génération des nombres aléatoires, le calcul des transformées de Fourier rapides (FFT) et le traitement de chaînes de caractères. Les programmes Julia sont organisés autour de la définition de fonctions et de la combinaison de types d'arguments. Signalons que l'intérêt de plus en plus marqué des entreprises pour Julia a conduit à la création, en juillet 2015, de l'entreprise Julia Computing qui distribue JuliaPRO et JuliaFIN, des versions améliorées de Julia (respectivement pour la science des données et la finance), ainsi que des services de support et d'intégration à des technologies cloud. Quant au suivi des évolutions de ce langage ouvert, les développeurs peuvent se retrouver sur le site de la communauté Julia. Selon Spectrum Instrumentation, l’association des systèmes matériels d’acquisition et de génération de signaux électroniques rapides trouvés dans les applications d'Intelligence artificielle ou la robotique sont parfaitement adaptés à une programmation en Julia. Cette combinaison permet notamment d'accélérer le traitement et de réduire la latence notamment pour les générateurs de signaux arbitraires (AWG) haute résolution. À titre d'exemple, Spectrum cite les travaux du Dr Josef Höffner de l'Institut Leibniz de physique atmosphérique en Allemagne qui développe des systèmes lidar (Light Detection and Ranging) de haute performance pour mesurer la température et la vitesse du vent dans l'atmosphère. « Nous effectuons une acquisition et un contrôle de données complexes, avec 30 signaux à haute vitesse, à l'aide de trois cartes Spectrum Instrumentation, fonctionnant en boucle fermée 24 heures sur 24, 7 jours sur 7, explique M. Höffner. Notre laser produit 500 impulsions par seconde et nous devons calculer, en temps réel, ce qui doit se passer ensuite et ajuster les commandes. Pour cela, nous devons obtenir le résultat rapidement. Cela signifie une électronique rapide, une évaluation rapide, puis un contrôle rapide du matériel. Et dans cette situation, nous avons découvert que Julia offre une combinaison unique de vitesse et de programmation dynamique, qui simplifie le développement logiciel. » Le SDK prenant en charge Julia est désormais disponible gratuitement pour tous les utilisateurs des cartes Spectrum. |