La parallélisation des tâches est simplement l’exécution concurrente de tâches indépendantes dans le logiciel. Considérez un processeur simple-cœur qui exécute un navigateur Web et un programme de traitement de texte simultanément. Bien que ces applications soient des process séparés, elles partagent toujours en fin de compte le même processeur. Pensez maintenant à un scénario dans lequel les deux mêmes programmes s’exécutent sur un processeur double-cœur. Sur la machine double-cœur, ces deux applications peuvent, pour l’essentiel, s’exécuter indépendamment l’une de l’autre. Bien qu’elles puissent partager quelques ressources qui les empêchent de s’exécuter complètement indépendamment, la machine double-cœur permet d'effectuer les deux tâches parallèles plus efficacement.
Le parallélisme naturel de la programmation par flux de données fait de l’environnement de développement graphique LabVIEW de National Instruments le langage de programmation idéal pour l’utilisation de techniques de programmation parallèle. Les langages textuels traditionnels possèdent une syntaxe séquentielle et sont donc difficiles à visualiser et à organiser sous forme parallèle. Au contraire, la création d’une application multithread est intuitive et simple avec NI LabVIEW.
Le paradigme de la programmation graphique LabVIEW facilite la programmation parallèle, même pour les utilisateurs novices. Deux tâches séparées qui ne sont pas dépendantes l’une de l’autre par rapport aux données (ou d’autres ressources) s’exécutent en parallèle sans nécessiter de programmation supplémentaire.
La partie supérieure du code suivant consiste en une tâche d’acquisition analogique de tension et la partie inférieure représente une tâche de génération numérique.
Figure n°1. En LabVIEW, deux sections de code sans dépendance de données s’exécuteront indépendamment, en parallèle.
Ces deux tâches indépendantes d’acquisition de données doivent partager la même U.C. sur un processeur simple-cœur. Sur un processeur multicœur, chaque thread peut s’exécuter sur son propre processeur, ce qui améliore fortement la vitesse d’exécution.
En utilisant le parallélisme de données dans une application, il est important de faire en sorte que deux tâches n’aient aucune ressource partagée susceptible de créer un goulot d'étranglement, comme dans le code présenté dans la Figure n°2.
Dans ce programme, les deux tâches partagent des données ; la tâche numérique est obligée d’attendre que la tâche analogique ait réellement démarré. Bien que ce code semble être parallèle, il ne l’est pas vraiment parce que les deux tâches partagent des données. Il est important d’être conscient de cet écueil lors de la programmation d'applications qui utilisent la parallélisation des tâches.
Grâce à la parallélisation des tâches ainsi qu’à d’autres techniques de programmation, les développeurs peuvent tirer complètement profit de la puissance offerte par le traitement multicœur. Les programmeurs qui comprennent et prêtent attention à ces techniques sont capables de concevoir aujourd’hui des applications adaptées aux tendances du traitement du futur. La nature intrinsèquement parallèle de l’environnement de programmation graphique LabVIEW donne aux développeurs les capacités de générer avec efficacité les applications de demain.