Comment améliorer les performances de vos applications LabVIEW Antoine PALLADINI Responsable de Projets ARCALE france.ni.com
ARCALE propose des prestations dans les domaines du test et mesure et de l embarqué Concevoir Développer Maintenir
Historique et évolutions Fondée en 2002 par trois ingénieurs de National Instruments PARIS Trois agences Trois équipes 3000 2500 CA (K ) Évolution du CA TOULOUSE GRENOBLE 2000 1500 1000 500 0 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
Secteurs d activités - Références Industrie Aéronautique Défense Transport / Energie R&D Autre
Savoir-faire
Atouts
Formation Formation spécifique Formation à la maintenance des applications développées ARCALE Toulouse est centre de formation NI
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution
Le cycle d optimisation Optimiser Améliorer l efficacité Améliorer la vitesse Benchmark Évaluer les performances Identifier les zones à problème
Pourquoi doit-on profiler son code La règle du 80/20 des performances logicielles 80 % du temps d exécution a lieu dans 20 % du code L amélioration des performances est plus efficace dans les 20 % Difficulté : trouver de quels 20% il s agit!
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution
Gestionnaire de tâches Windows Permet à l'utilisateur de savoir si c'est la mémoire ou l'utilisation de la CPU qui pose problème Peut servir à identifier des fuites mémoire Afficher» Sélectionner les colonnes vous permet d'ajouter des statistiques supplémentaires
Performance monitor Vous permet de contrôler les processeurs les E/S sur disque les accès réseau la mémoire/paging Accéder en tapant perfmon dans la boîte de dialogue Exécuter de Windows
Benchmarking d exécution de code Timing Template (data dep) exemple fourni avec LabVIEW
Benchmarking d exécution de code Code Analyse Calibrage Benchmark Project exemple fourni avec LabVIEW Real-Time
Afficher les allocations de buffer Mise en évidence des allocations mémoire Outils»Profil»Afficher les allocations de buffer
VI Profiler Statistiques d utilisation de la mémoire et temps d exécution des VIs Outils»Profil»Performances et mémoire...
Toolkit LabVIEW Desktop Execution Trace Traces d exécutions détaillées Informations sur les threads et VIs Mesure du temps d exécution Plusieurs sessions VIs Threads, CPU et mémoire
Toolkit Real-Time Execution Trace Traces d exécutions détaillées Informations sur les threads et VIs Mesure du temps d exécution Multiple sessions Threads Usage CPU VIs
Résumé sur le benchmarking Au niveau du système d exploitation Task Manager, Perfmon Au niveau LabVIEW Allocation mémoire, VI Profiler, VIs de benchmark Au niveau des VIs Toolkit LabVIEW Desktop Execution Trace
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution
Performances mémoire Les fonctionnalités suivantes affectent l impact de l allocation mémoire sur votre application : sémantique des fils, structure «Élément en place» adapter les types de données coercition de type allocation des tableaux
Sémantique des fils Chaque fil est un buffer Les branches créent des copies
Utilisation de la structure Élément en place Vous permet de modifier de façon explicite les données en place
Types de nœud en bordure Indexer/remplacer un élément d un tableau Diviser/remplacer des sous-tableaux Désassembler/assembler des éléments Désassembler/assembler les éléments d une Waveform Variant vers/à partir d un élément Entrée/sortie en place sur un élément Lire/écrire une référence de valeur de donnée
Exemple d'optimisation Fonctionne sur chaque élément d'un tableau de formes d'ondes
Adapter les types de données Afin d optimiser les allocations mémoire, utiliser les types de données les mieux adaptés : organiser vos données en tableau ou Cluster utiliser des singles plutôt que des doubles si possible
Coercition de type Changer le type des données pour obtenir le type de données souhaité Les points indiquent automatiquement une coercition Nécessite une copie Point de coercition
Construire des tableaux Il existe plusieurs façons d'allouer des tableaux Certaines sont plus efficaces que d autres! Réalloue la mémoire à chaque itération de boucle
Construire des tableaux Il existe plusieurs façons d'allouer des tableaux Certaines sont plus efficaces que d autres! Pré-allocation de la mémoire Pas de réallocation en cours d exécution
Construire des tableaux Il existe plusieurs façons d'allouer des tableaux Certaines sont plus efficaces que d autres! La mémoire est pré-allouée Simplicité et efficacité garanties!
L ordre de construction des tableaux Ajouter à la fin d un tableau est bien plus efficace que d ajouter au début Si vous devez ajouter des éléments au début d un tableau, ajoutez-les à la fin, et utilisez une seule fois la fonction «inverser un tableau» lorsque c est terminé
Démo Les effets de l optimisation mémoire
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution
Optimisation de l exécution Les axes d amélioration : le Multicore ; Le Multithread LabVIEW Multithread les communications entre threads (Piles Vs Événements) gestion des IHM
Le multicœur Système Monocœur Système Multicœur
LabVIEW multithread Application LabVIEW Multithread Concrètement
Profiter du multicœur en LabVIEW Boucle For parallèle Nouveauté LabVIEW 2009 Pipelining
Profiter du multicœur en LabVIEW La boucle cadencée
Communications entre boucle Les piles Les événements Notifier Rapidité Information sur l état de la pile FIFO ou LIFO Flush Nécessite une structure événement Mettre à jour une IHM Perte possible de données Pile à un seul élément
Communication entre boucle Les files d attente Exemple d une architecture associant la performance du multithread, des piles, du pipelining
Éviter le code inutile dans les boucles Ne placez que le code qui doit être répété dans les boucles L ouverture/fermeture des références doit se faire à l extérieur des boucles
Utiliser des primitives Les primitives sont plus efficaces que les opérations en chaîne Est moins efficace que :
Mise à jour de l IHM Parmi les points les moins considérés Pas si évident De la même manière que pour la gestion mémoire, LabVIEW essaie d optimiser l affichage de l IHM, mais il ne peut pas réaliser de miracles
Le thread de l IHM Les mises à jour de la face-avant ont lieu dans le thread de l IHM L exécution a lieu dans d autres threads Les données partagées doivent être protégées LabVIEW crée une copie supplémentaire appelée «buffer de transfert» Thread Thread Thread UI Loop Exec Exec
Certaines opérations nécessitent le thread de l IHM Les références aux commandes de la face-avant Le nœud d appel de bibliothèques Le nœud de propriété des commandes/indicateurs
Les effets des nœuds de propriété de l IHM sur les performances Les nœuds de propriété des commandes/indicateurs sont lents Nécessitent des changements des threads Ne peuvent pas être parallèles Nombre d entre eux déclenchent des modifications d IHM Les nœuds de propriété dans une boucle rapide sont mauvais La propriété «valeur» a les propriétés d un nœud de propriété pas d un terminal
Gestion d IHM Ne mettez à jour les indicateurs que lorsque vous en avez besoin Une mise à jour toutes les 100 ms est suffisante Les données sont copiées des buffers d exécution aux buffers de transfert des buffers de transfert aux buffers d indicateurs
Différer la mise à jour de l affichage Utiliser le nœud de propriété «DeferPanelUpdates» afin de différer la mise à jour des interfaces utilisateur
Propriétés d'exécution Fichier» Propriétés du VI» Exécution <CTRL-I>
VIs réentrants La réentrance permet à un sous-vi d'être appelé de façon simultanée depuis plusieurs emplacements Nécessite de la mémoire supplémentaire pour chaque instance Utiliser des VIs réentrants dans deux cas différents Pour permettre à un sous-vi d'être appelé en parallèle Pour permettre à une instance de sous-vi de maintenir son propre état
Appels de sous-vis Les appels de sous-vis ne coûtent rien On peut noter un certain temps système La priorité des sous-routines est particulièrement utile pour les petits VIs qui sont souvent appelés Appeler un sous-vi dans un système d'exécution différent peut coûter très cher Toutefois, l'appel d'un sous-vi ne provoque pas nécessairement de nouvelles copies de mémoire
Démo Les effets de l optimisation d exécution
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution Réduit l utilisation mémoire, augmente la vitesse Règle du 80/20
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution Les outils Windows (gestionnaire de tâche, perfmon) VI Profiler Toolkit Real-Time Execution Trace
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution Ôtez les points de coercition Profitez des structures en place
Améliorer les performances en LabVIEW Le but de l optimisation Les outils Optimisation mémoire Optimisation de l exécution Sachez où LabVIEW peut vous aider Limitez les mises à jour des indicateurs Utilisez des paramètres d exécution appropriés
Aller plus loin ni.com/multicore ni.com/devzone ni.com/training L aide LabVIEW Formation LabVIEW Performance
Formations Débutant Expérimenté Avancé Cours Certifications LabVIEW Core 1 LabVIEW Core 2 Cours sur le matériel NI Certified LabVIEW Associate Developer Exam LabVIEW Core 3 LabVIEW Connectivity Certified LabVIEW Developer Exam Advanced Architectures for LabVIEW Managing Software Engineering in LabVIEW Certified LabVIEW Architect Exam Économiser du temps et de l argent avec les formations NI Lors d un sondage mondial, les utilisateurs NI ont rapporté : Apprentissage 66 % plus rapide Développement d applications 50 % plus rapide 43 % de temps en moins pour la maintenance 0% 50% 100% *Source: NI WW training customer survey, 2009, n = 640, from US, Canada, Germany, Spain, Poland, Mexico, Brazil, South America, Japan, Taiwan, ASEAN
france.ni.com Des questions?
Restez connecté(e) avant et après NIDays youtube.com/nifrance facebook.com/nifrance ni.com/rss/f twitter.com/nifrance ni.com/community