Avant de lire cet article sur la représentation graphique d'un algorithme, autrement appelé, logigramme ou algorigramme, nous vous conseillons de consulter "Programmation parallèle", actuellement disponible sur notre blog pour en savoir plus sur l'exécution en parallèle.
REPRÉSENTATION DES ALGORITHMES
Expliquer un algorithme parallèle nécessite des outils adaptés tant pour faciliter la compréhension que pour mettre en évidence les défauts potentiels de celui-ci. « Un schéma vaut mieux qu’un long discours » comme dit le proverbe. Apprendre à représenter les idées ou les concepts est donc une nécessité.
ORGANIGRAMME DE PROGRAMMATION
L’organigramme de programmation, aussi appelé algorigramme ou logigramme, est une représentation graphique normalisée (ISO 5807:1985) de l'enchaînement des opérations effectuées par un programme d'ordinateur (https://pub.phyks.me/sdz/sdz/introduction-aux-algorigrammes.html). Ce mode de représentation, bien qu’ancien, peut-être utile pour plusieurs raisons :
La détection et le traitement des erreurs
Pour répartir les tâches lors d’un travail en équipe
Compréhension des coûts liés aux structures de contrôle utilisées
Un organigramme se lit en suivant les flèches : du haut vers le bas et de gauche vers la droite. Voici, ci-dessous, un algorithme parallèle disposé selon cette forme :
C'est dans le respect de la norme que l’on garantit la lisibilité du schéma.
Gestion du début à la fin
Tout algorithme pour être correct doit commencer par un « début », qui est unique, et se terminer par une « fin ». Il peut y avoir plusieurs « fin » notamment dans les cas de gestion d’erreurs entrainant des fins prématurées de l’algorithme.
Les liaisons
Les liaisons, qui n’ont rien de dangereuses, sont représentées par des flèches et relient les instructions ensemble et définissent l’ordre d’exécution.
Une instruction, une action ou un processus
« Un algorithme est une suite finie et non ambigües d’opérations ou d’instructions permettant de résoudre un problèmes » (Wikipedia). Nous devons donc être capable de modéliser cette instruction. Dans le cadre les logigrammes, les instructions sont représentées par des rectangles comme présenté dans l’exemple sur les liaisons.
Un processus prédéfini
On appelle processus prédéfini un processus complexe bien connu ou que l’on a défini ailleurs : un sous-programme par exemple ou une fonction.
Les entrées/sorties ou I/O
Bien souvent, un programme a besoin de recevoir des données en entrée (clavier, souris, etc…) ou de les écrire (dans un fichier, en base de données, etc…). La forme utilisée pour modéliser une I/O est un parallélogramme.
On peut parfois rajouter de l’information sur la source ou la destination de l’entrée/sortie en utilisant des ellipses via le mécanisme suivant :
On peut bien sûr utiliser des dessins plus explicites comme ceux-ci-dessous pour représenter des périphériques standards :
La condition
Pour contrôler l’exécution d’un programme, il faut avoir des structures conditionnelles : le fameux « si … alors … sinon … ». Le symbole choisi est le losange, la condition est inscrite dans celui-ci. Le « oui » est toujours représenté par le lien vers le bas, le « non » par un lien sur le côté.
Les documents
La majorité des programmes doit à un moment ou un autre partager des documents (un rapport, un mail, etc…), on le matérialise via un symbole spécifique :
Les raccords
Les logigrammes peuvent devenir rapidement très grands : trop grands pour tenir sur une seule page. Afin de pouvoir les structurer sur plusieurs pages, un symbole spécial est disponible pour « raccorder » les logigrammes.
Point de jonction
Il arrive régulièrement que dans un algorithme le déroulement de celui-ci se décompose en plusieurs branches en fonction de conditions et que celles-ci se rejoignent en un même point de jonction.
Actions parallèles
Avec les architectures matérielles actuelles, le recours à des exécutions en parallèle est de plus en plus courant. Il nous faut donc un moyen de le modéliser via le logigramme. Ce mode de représentation convient bien au SIMD.
Gestion des acteurs
Dans certains cas, faire apparaitre les différents acteurs d’un processus permet de mieux comprendre l’algorithme et son déroulement. Il est possible de combiner le logigramme avec les acteurs. Voici un exemple de création avec LucidChart :
Mais ce faisant, on se rapproche de la notion de diagramme de séquence, quoique un peu différent dans l’objectif.
CONCLUSION
Dès lors que l’on souhaite se lancer dans un algorithme parallèle, il est nécessaire d’anticiper les problèmes pouvant survenir; et pour se faire, un diagramme vaut mieux qu’un long discours. Il permet via une vue synthétique de comprendre son fonctionnement et d’imaginer les scénarios pouvant le mettre en défaut.