Organisation du code
La durée d'exécution d'un programme LabVIEW sur un ordinateur multicœur dépend autant du programme que de l'ordinateur sur lequel il s'exécute. Le programme doit être écrit de sorte à pouvoir tirer parti de l'environnement caractéristique des systèmes multicœurs. La granularité (le rapport calcul/communication), l'équilibrage de charge et le degré de parallélisme d'un programme affectent considérablement la durée d'exécution de ce programme. Une grande partie du code G existant est écrite pour une exécution séquentielle mais il est probable que, grâce à la nature de la programmation par flux de données, ce type de code possède un certain degré de parallélisme intrinsèque. Comme mentionné plus haut, les tests des structures courantes des programmes LabVIEW indiquent en moyenne une amélioration de 25 à 35 pour cent de la durée d'exécution lors du passage d'un système monocœur à un système multicœur. Cependant, la nature d'un programme particulier a un effet significatif sur cette estimation. En optimisant un programme LabVIEW pour un environnement informatique multicœur, vous pouvez réduire considérablement la durée d'exécution de ce programme lorsque vous passez à un système multicœur.
Adaptation au matériel
Il est difficile d'organiser du code G en vue d'augmenter la vitesse d'exécution si vous ne connaissez pas les spécifications du matériel sur lequel le programme s'exécute. Il est crucial d'avoir une connaissance du système sur lequel un programme multicœur s'exécute pour atteindre la vitesse d'exécution maximale. Les techniques de programmation multicœur requièrent une approche plus générique dans le cas de systèmes dotés d'un nombre inconnu de cœurs. Cette approche vous aide à obtenir une réduction de la durée d'exécution sur la plupart des machines multicœurs ; en contrepartie, vous risquez de n'atteindre la vitesse d'exécution maximale sur aucun des systèmes. L'adaptation des programmes LabVIEW à du matériel spécifique peut prendre beaucoup de temps et n'est pas toujours indispensable, mais elle peut s'avérer nécessaire si vous devez atteindre la vitesse d'exécution maximale sur du matériel spécifique. Par exemple, pour utiliser pleinement un système informatique octocœur, vous pouvez employer des techniques de programmation parallèle avancées, comme la parallélisation des données ou le pipelining. De plus, pour atteindre les durées d'exécution les plus courtes des programmes sur les systèmes multicœurs, vous pouvez tirer parti du nombre de cœurs du système, de la disposition des cœurs (deux double-cœurs ou un quadricœur), de l'arrangement des connexions, du mode de gestion de la mémoire et des informations sur les problèmes connus.
Pour obtenir des informations complémentaires sur les stratégies de programmation parallèle, reportez-vous à :
Support multicœur des couches logicielles
Les goulots d'étranglement du parallélisme peuvent survenir à plusieurs niveaux de la pile de couches logicielles ; ce problème est difficile à éviter dans les langages traditionnels, comme le C. La programmation LabVIEW a l'avantage d'utiliser une pile logicielle "prête au multicœur" qui empêche la création de ces goulots d'étranglement. Pour obtenir les gains de performances possibles avec le matériel multicœur, vous devez déterminer si le multicœur est supporté par les quatre couches de la pile logicielle : l'outil de développement, les bibliothèques, les drivers de périphériques et le système d'exploitation. Si ces couches ne sont pas prêtes au multicœur, non seulement les gains de performances sont peu probables, mais il y a un risque de dégradation des performances. Le tableau 1 montre comment LabVIEW garantit qu'une pile logicielle est prête au multicœur.
Les systèmes multicœurs comportant des bibliothèques et des drivers qui ne sont pas prêts au multicœur ou des systèmes d'exploitation incapables d'équilibrer la charge des tâches entre plusieurs cœurs n'exécutent pas les programmes LabVIEW plus rapidement.