1 1 - GESTION DES PARCOURS DE L’ESPACE DE YAO 2 - TEST DE VALIDITE DES DIRECTIVES ORDER AIDE A LA GESTION DES PARCOURS DE L’ESPACE SOUS LE LOGICIEL YAO.

Slides:



Advertisements
Présentations similaires
SEDIT MARIANNE Groupe Berger-Levrault
Advertisements

La boucle for : init7.c et init71.c
Spécification et qualité du logiciel
Calculs de complexité d'algorithmes
Gestion de FICHIERS.
Outils de développements
LE CHAMP MAGNETIQUE 1 Mise en évidence du champ magnétique
Stabilité des systèmes linéaires continus
Stabilité des systèmes linéaires continus
Les Ateliers de Génie Logiciel
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
MENU DE L’AIDE Cliquer ici pour aide RESEAUX DE CONTACTS
JLMVPC Saisir une commande.
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Algo-Prog en Ada TD1 2 MIC Romaric GUILLERM
Récursivité.
Module 1 : Préparation de l'administration d'un serveur
Les structures de données arborescentes
II. Chaînage, SDD séquentielles
Chap 4 Les bases de données et le modèle relationnel
LOGICIEL PL7 MICRO PROGRAMMATION MISE AU POINT Consignes?
Algorithmique et Programmation
Algo-Prog en Ada TD1 2 IMACS Romaric GUILLERM
Techniques de test Boulanger Jean-Louis.
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Courbes de Bézier.

Module 2 : Préparation de l'analyse des performances du serveur
Mise en oeuvre des MMCs L'utilisation des MMCs en reconnaissance des formes s'effectue en trois étapes : définition de la topologie de la chaîne de Markov,
Sémantique dénotationnelle
Simulation du pliage d’une pièce de sécurité automobile
Système de coordonnées
LE MICROSCOPE OPTIQUE Le texte ci-dessous, extrait d'un ouvrage de vulgarisation scientifique, donne une description sommaire du microscope. "La partie.
L’adaptativité pour un solveur de l’équation de Vlasov
PHP 2° PARTIE : FONCTIONS ET FORMULAIRE
Animateur : Med HAIJOUBI
Ce programme permet de calculer automatiquement le nombre de jours qu’il vous reste à prendre. Cliquez ici Note de Service.
Ce programme permet de calculer automatiquement le nombre de jours R.T.T. qu’il vous reste à prendre. Cliquez ici.
Chapitre 5 : Le langage SQL
La Boucle Repeat Cours LCS N°1 Présenté par Mr: LALLALI.
Module 8 : Surveillance des performances de SQL Server
Les Structures De Contrôle Itératives Complètes
Les structures répétitives en PHP Réfs : manuel p 317.
Génération de tests pour la localisation automatique d’erreurs Yves Le Traon et Franck FLEUREY.
Module 12 : Implémentation de procédures stockées.
Calcul parallèle => partitionner les données en sous-groupes associés aux processeurs. P0 P2 P1.
Licence Informatique Algorithmique des graphes
LE FLOT MAXIMAL et LA COUPE MINIMALE
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Structures de données avancées : Concepts du Multidimensionnel D. E ZEGOUR Institut National d ’Informatique.
Structures de données avancées : Fichiers multidimensionnels Pr ZEGOUR DJAMEL EDDINE Ecole Supérieure d’Informatique (ESI) zegour.esi.dz
Analyse structurelle d’un portail automatique
Sélection de colonnes (la projection)
Les tris Tri Action de mettre une structure de données en ordre (croissant ou décroissant). Le plus simple est d’insérer en ordre. Les algorithmes de tri.
1 1 Huitième journée Quelques algorithmes. 2 Définition Description des tâches pour que celles-ci soient aisément programmables Différent d’une méthode.
Introduction et Généralités sur l’Algorithmique
Introduction au langage C : Structures de contrôle 1 ère année Génie Informatique Dr Daouda Traoré Université de Ségou
Pour les boucles FOR on a fait intervenir la boucles TANT QUE équivalentes dont on connaît calculer le temps d’exécution. Toutes le procédures de comptage.
Ce programme permet de calculer automatiquement le nombre de jours qu’il vous reste à prendre. Cliquez ici Note de Service.
Réalisation d’un logiciel de Chiffrement RSA.
Cours 5 - Trois algorithmes de tri d'un tableau
Structures de données avancées : MTH ( Multidimensional trie hashing ) D. E ZEGOUR Institut National d ’Informatique.
LOGICIEL PL7 MICRO PROGRAMMATION MISE AU POINT Consignes?
Exemple d’utilisation de l’outil de profilage prof La commande prof de Unix.
Réalisation d'une maquette
Algorithmique Boucles et Itérations
ETUDES PRONOSTIQUES Pr Ganry.
Transcription de la présentation:

1 1 - GESTION DES PARCOURS DE L’ESPACE DE YAO 2 - TEST DE VALIDITE DES DIRECTIVES ORDER AIDE A LA GESTION DES PARCOURS DE L’ESPACE SOUS LE LOGICIEL YAO 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

2 1 - GESTION DES PARCOURS DE L’ESPACE DE YAO Module Directives « ctin » Directives « order » Graphe des connexions

3 Entrée_1 Entrée_2 Sortie_1 Sortie_2 Sortie_3 f 1 (Entrée_1, Entrée_2) f 2 (Entrée_1) f 3 (Entrée_1, Entrée_2) Module YAO

4 a a a a bb bb i = 1i = 2 j = 1 j = 2

5 1 - GESTION DES PARCOURS DE L’ESPACE DE YAO Module Directives « ctin » Directives « order » Graphe des connexions

6 ctin b 1 from a 2i-1j ctin b 2 from b 1i+1j-1 ctin a 1 from a 1i-1j ctin a 2 from a 3i-1j+1 Directives ctin du fichier de description

7 a a a a bb bb i = 1i = 2 j = 1 j = 2

8 ctin b 1 from a 2i-1j ctin b 2 from b 1i+1j-1 ctin a 1 from a 1i-1j ctin a 2 from a 3i-1j+1 Directives ctin du fichier de description

9 a a a a bb bb i = 1i = 2 j = 1 j = 2

10 ctin b 1 from a 2i-1j ctin b 2 from b 1i+1j-1 ctin a 1 from a 1i-1j ctin a 2 from a 3i-1j+1 Directives ctin du fichier de description

11 a a a a bb bb

12 ctin b 1 from a 2i-1j ctin b 2 from b 1i+1j-1 ctin a 1 from a 1i-1j ctin a 2 from a 3i-1j+1 Directives ctin du fichier de description

13 a a a a bb bb

GESTION DES PARCOURS DE L’ESPACE DE YAO Module Directives « ctin » Directives « order » Graphe des dépendances

Information retenue sur les directives ctin (-1, 0)==>b a ctinb1froma2i-1j Module source Module cible Postionnement relatif du module source par rapport au Module cible

16 ctin b 1 from a 2i-1j ctin b 2 from b 1i-1j+1 ctin a 1 from a 1i-1j ctin a 2 from a 3i-1j+1 a (-1, 0) ==> b a (-1, 0) ==> a a (-1, +1) ==> a b (+1,-1) ==> b Module source ==> Module cible Information retenue sur les directives ctin

17 Maillage Graphe Connexions a b a b a b a b a b a b a b a b a b a b a ( ) ==> b b (, ) ==> b +1 a (, ) ==> a 0, , -1, +1 -1, GRAPHE DES DEPENDANCES a (, ) ==> a ,

18 Graphe a b 0 +1, -1, +1 -1, 0 a (-1, 0) ==> b a (-1, 0) ==> a a (-1, +1) ==> a b (+1,-1) ==> b GRAPHE DES DEPENDANCES

19 a a a a bb bb

GESTION DES PARCOURS DE L’ESPACE DE YAO Module Directives « ctin » Directives « order » Graphe des connexions

21 Directives ctin Directives order

22 order modinspace forder order forder order forder Instruction order Directive « order » Structure d’une directive order Instruction order order forder Instruction order

23 Paramètres : Y[Sens_parcours][Dimension] A = sens de parcours dans l’ordre croissant B = sens de parcours dans l’ordre décroissant 1 = i 2 = j 3 = k Sens de parcours Dimension Ex : YB2 : parcours de l’axe de la dimension « j » dans le sens décroissant (de Nj à 1) YA1 : parcours de l’axe de la dimension « i » dans le sens croissant (de 1 à Ni)

24 for i:1  Ni for j:Nj  1 order YA1 forder Directive orderBoucle for for i: 1  Ni end for order YA1 order YB2 forderend for forderend for

25 Graphe des dépendances a b 0 +1, -1, +1 -1, order YA1 order YA2 a forder order YB1 order YA2 b forder 0-1, Directive « order » valide for i: 1  Ni for j:1  Nj a end for for i:Ni  1 for j:1  Nj b end for

26 Maillage Graphe Connexions a b a b a b a b a b a b a b a b a b a b a ( ) ==> b b (, ) ==> b +1 a (, ) ==> a 0, , -1, +1 -1, GRAPHE DES DEPENDANCES a (, ) ==> a ,

27 a b 0 -1, -1, +1 -1, 0 order YA1 order YA2 a b forder Graphe des dépendancesDirective « order » valide a b 0 +1, -1, +1 -1, order YA1 order YA2 a forder order YB1 order YA2 b forder 0-1,

GESTION DES PARCOURS DE L’ESPACE DE YAO 2 - TEST DE VALIDITE DES DIRECTIVES ORDER AIDE A LA GESTION DES PARCOURS DE L’ESPACE SOUS LE LOGICIEL YAO 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

TEST DE VALIDITE DES DIRECTIVES ORDER 2.1 – Principe du test 2.2 – Compatibilité du sens de parcours de l’espace et des connexions 2.3 – Prise en compte de l’ordonnancement des modules 2.4 – Prise en compte de l’ordonnancement des boucles 2.6 – Résultats 2.5 – Analyse de la directive order et procédure de test

30 Directives ctin Directives order YA1 YB2

31 Directives ctin Directives order YB1 YA2

TEST DE VALIDITE DES DIRECTIVES ORDER 2.1 – Principe du test 2.2 – Compatibilité du sens de parcours de l’espace et des connexions 2.3 – Prise en compte de l’ordonnancement des modules 2.4 – Prise en compte de l’ordonnancement des boucles 2.6 – Résultats 2.5 – Analyse de la directive order et procédure de test

33 for i in 1  Ni a b end for order YA1 a b forder Directive orderBoucle « for » Conformité du sens de parcours : test élémentaire i 1, i 2, i3i3 {} Itérations (Ni=3) b1 b1 b2b2 b3b3 a1a1 a2a2 a3a3 Ordre de calcul des modules b2a1 b3a2 nécessite a (-1) ==> b nécessite b2a3 b1a2 nécessite a (+1) ==> b nécessite

34 for i in Ni  1 a b end for order YB1 a b forder Directive orderBoucle « for » i 3, i 2, i1i1 {} Itérations (Ni=3) Ordre de calcul des modules b2a1 b3a2 nécessite a (-1) ==> b nécessite b2a3 b1a2 nécessite a (+1) ==> b nécessite b3 b3 b2b2 b1b1 a3a3 a2a2 a1a1 Conformité du sens de parcours : test élémentaire

35 for k in 1  Nk for i in Ni  1 for j in Nj  1 order YA3 order YB1 order YB2 Directive orderBoucles « for » Itérations (Ni=3, Nj=3, Nk=3) k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k 2 i 2 j 2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k 3 i 2 j 2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } Conformité du sens de parcours : critère d’arrêt

36 m2(i, j, k) = m1(i-1, j-1, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j+1, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j-1, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j+1, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j-1, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j+1, k-1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j, k-1) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k 2 i 2 j 2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } k1i3j3k1i3j3 k1i3j2k1i3j2 k1i2j2k1i2j2 k1i2j3k1i2j3 k1i1j3k1i1j3 k1i2j1k1i2j1 k1i3j1k1i3j1 k1i1j2k1i1j2 k1i1j1k1i1j1 m1( *, *, k-1) ==> m2 Dépendances possibles entre les modules avec K = -1 Itérations (order YA3 order YB1 order YB2)

37 1 – Si le sens de parcours de la première dimension traversée est conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, toutes les dépendances seront satisfaites. Arrêt des tests, la connexion est réalisable

38 m2(i, j, k) = m1(i-1, j-1, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j+1, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j-1, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j+1, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j-1, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j+1, k+1) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j, k+1) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( *, *, k+1) ==> m2 k3i3j3k3i3j3 k3i3j2k3i3j2 k3i2j2k3i2j2 k3i2j3k3i2j3 k3i1j3k3i1j3 k3i2j1k3i2j1 k3i3j1k3i3j1 k3i1j2k3i1j2 k3i1j1k3i1j1 Dépendances possibles entre les modules avec K = +1 Itérations (order YA3 order YB1 order YB2)

39 1 – Si le sens de parcours de la première dimension traversée est conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, toutes les dépendances seront satisfaites. Arrêt des tests, la connexion est réalisable 2 – Si le sens de parcours de la première dimension traversée n’est pas conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, aucune dépendance ne sera satisfaite. Arrêt des tests : la directive order est invalide

40 m2(i, j, k) = m1(i-1, j-1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j+1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j-1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j+1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j-1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j+1, k) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( *, *, 0 ) ==> m2 k2i3j3k2i3j3 k2i3j2k2i3j2 k2i2j3k2i2j3 k2i1j3k2i1j3 k2i2j1k2i2j1 k2i3j1k2i3j1 k2i1j2k2i1j2 k2i1j1k2i1j1 Dépendances possibles entre les modules avec K = 0 Itérations (order YA3 order YB1 order YB2)

41 1 – Si le sens de parcours de la première dimension traversée est conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, toutes les dépendances seront satisfaites. Arrêt du test : la connexion est réalisable 2 – Si le sens de parcours de la première dimension traversée n’est pas conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, aucune dépendance ne sera satisfaite. Arrêt du test : la directive order est invalide 3 – Si la valeur de la connexion est nulle pour la première dimension traversée, alors on ne peut statuer : certaines dépendances pourront être satisfaites et d’autres non. Poursuite du test avec l’axe suivant de la directive order

42 m2(i, j, k) = m1(i+1, j-1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i+1, j+1, k) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( +1, *, 0 ) ==> m2 k2i3j3k2i3j3 k2i3j2k2i3j2 k2i3j1k2i3j1 Dépendances possibles entre les modules avec i = +1, k = 0 Itérations (order YA3 order YB1 order YB2)

43 1 – Si le sens de parcours de la première dimension traversée est conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, toutes les dépendances seront satisfaites. Arrêt du test : la connexion est réalisable 2 – Si le sens de parcours de la première dimension traversée n’est pas conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, aucune dépendance ne sera satisfaite. Arrêt du test : la directive order est invalide 3 – Si la valeur de la connexion est nulle pour la première dimension traversée, alors on ne peut statuer : certaines dépendances pourront être satisfaites et d’autres non. Poursuite du test avec l’axe suivant de la directive order

44 m2(i, j, k) = m1(i-1, j-1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i-1, j+1, k) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( -1, *, 0 ) ==> m2 k2i1j3k2i1j3 k2i1j2k2i1j2 k2i1j1k2i1j1 Dépendances possibles entre les modules avec i = -1 et k = 0 Itérations (order YA3 order YB1 order YB2)

45 1 – Si le sens de parcours de la première dimension traversée est conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, toutes les dépendances seront satisfaites. Arrêt du test : la connexion est réalisable 2 – Si le sens de parcours de la première dimension traversée n’est pas conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, aucune dépendance ne sera satisfaite. Arrêt du test : la directive order est invalide 3 – Si la valeur de la connexion est nulle pour la première dimension traversée, alors on ne peut statuer : certaines dépendances pourront être satisfaites et d’autres non. Poursuite du test avec l’axe suivant de la directive order

46 m2(i, j, k) = m1(i, j-1, k) => i 2 j 2 k 2 nécessite m2(i, j, k) = m1(i, j+1, k) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( 0, *, 0 ) ==> m2 k2i2j3k2i2j3 k2i2j1k2i2j1 Dépendances possibles entre les modules avec i = 0 et k = 0 Itérations (order YA3 order YB1 order YB2)

47 1 – Si le sens de parcours de la première dimension traversée est conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, toutes les dépendances seront satisfaites. Arrêt du test : la connexion est réalisable 2 – Si le sens de parcours de la première dimension traversée n’est pas conforme à la valeur spécifiée dans la connexion, alors l’ordre séquentiel des itérations assure que, quel que soit le sens de parcours des dimensions suivantes, aucune dépendance ne sera satisfaite. Arrêt du test : la directive order est invalide 3 – Si la valeur de la connexion est nulle pour la première dimension traversée, alors on ne peut statuer : certaines dépendances pourront être satisfaites et d’autres non. Poursuite du test avec l’axe suivant de la directive order

48 m2(i, j, k) = m1(i, j+1, k) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( 0, +1, 0 ) ==> m2 k2i2j3k2i2j3 Dépendances possibles entre les modules avec i = 0, j = +1 et k = 0 Itérations (order YA3 order YB1 order YB2)

49 m2(i, j, k) = m1(i, j-1, k) => i 2 j 2 k 2 nécessite k 1 i 3 j 3, k 1 i 3 j 2, k 1 i 2 j 2, k 1 i 2 j 3, k 1 i 1 j 3, k 1 i 2 j 1, k 1 i 3 j 1, k 1 i 1 j 2, k 1 i 1 j 1, k 2 i 3 j 2, k 2 i 3 j 1, k 2 i 2 j 3, k2i2j2,k2i2j2, k 2 i 2 j 1, k 2 i 3 j 3, k 2 i 1 j 2, k 2 i 1 j 1, k 3 i 3 j 1, k 2 i 1 j 3, k 3 i 3 j 2, k 3 i 2 j 3, k3i2j2,k3i2j2, k 3 i 1 j 2, k 3 i 3 j 3, k 3 i 1 j 3, k3i1j1k3i1j1 k 3 i 2 j 1, { } m1( 0, -1, 0 ) ==> m2 k2i2j1k2i2j1 Dépendances possibles entre les modules avec i = 0, j = -1 et k = 0 Itérations (order YA3 order YB1 order YB2)

TEST DE VALIDITE DES DIRECTIVES ORDER 2.1 – Principe du test 2.2 – Compatibilité du sens de parcours de l’espace et des connexions 2.3 – Prise en compte de l’ordonnancement des modules 2.4 – Prise en compte de l’ordonnancement des boucles 2.6 – Résultats 2.5 – Analyse de la directive order et procédure de test

order Y** m1 forder order Y** m2 forder order Y** m1m2 forder PRISE EN COMPTE DE L’ORDONNANCEMENT DES MODULES Connexion m1 (0, 0, 0) ==> m2 : directives order valides

order Y** m2 forder order Y** m1 forder order Y** m2m1 forder PRISE EN COMPTE DE L’ORDONNANCEMENT DES MODULES Connexion m1 (0, 0, 0) ==> m2 : directives order invalides

TEST DE VALIDITE DES DIRECTIVES ORDER 2.1 – Principe du test 2.2 – Compatibilité du sens de parcours de l’espace et des connexions 2.3 – Prise en compte de l’ordonnancement des modules 2.4 – Prise en compte de l’ordonnancement des boucles 2.6 – Résultats 2.5 – Analyse de la directive order et procédure de test

54 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder m1 ( 0, 0, -1) ==> m PRISE EN COMPTE DES BOUCLES Modules situés dans des boucles différentes

55 j 1 i 3 k 3, j 1 i 3 k 2, j 1 i 3 k 1, j 1 i 3 k 3, j 1 i 3 k 1, j 1 i 2 k 3, j 1 i 2 k 2, j 1 i 2 k 1, j 1 i 2 k 3, j 1 i 2 k 1, j 1 i 1 k 3, j 1 i 1 k 2, j 1 i 1 k 1, j 1 i 1 k 3, j 1 i 1 k 1, j 2 i 3 k 3, j 2 i 3 k 2, j 2 i 3 k 1, j 2 i 3 k 3, j 2 i 3 k 1, j 2 i 2 k 3, j 2 i 2 k 2, j 2 i 2 k 1, j 2 i 2 k 3, j 2 i 2 k 1, j 2 i 1 k 3, j 2 i 1 k 2, j 2 i 1 k 1, j 2 i 1 k 3, j 2 i 1 k 1, j 3 i 3 k 3, j 3 i 3 k 2, j 3 i 3 k 1, j 3 i 3 k 3, j 3 i 3 k 1, j 3 i 2 k 3, j 3 i 2 k 2, j 3 i 2 k 1, j 3 i 2 k 3, j 3 i 2 k 1, j 3 i 1 k 3, j 3 i 1 k 2, j 3 i 1 k 1, j 3 i 1 k 3, j 3 i 1 k 1, YA2 YB1 YB3 YA3 m1m3

56 j 1 i 3 k 3, j 1 i 3 k 2, j1i3k*j1i3k* j 1 i 3 k 1, j 1 i 2 k 3, j 1 i 2 k 2, j1i2k*j1i2k* j 1 i 2 k 1, j 1 i 1 k 3, j 1 i 1 k 2, j1i1k*j1i1k* j 1 i 1 k 1, j 2 i 3 k 3, j 2 i 3 k 2, j2i3k*j2i3k* j 2 i 3 k 1, j 2 i 2 k 3, j 2 i 2 k 2, j2i2k*j2i2k* j 2 i 2 k 1, j 2 i 1 k 3, j 2 i 1 k 2, j2i1k*j2i1k* j 2 i 1 k 1, j 3 i 3 k 3, j 3 i 3 k 2, j3i3k*j3i3k* j 3 i 3 k 1, j 3 i 2 k 3, j 3 i 2 k 2, j3i2k*j3i2k* j 3 i 2 k 1, j 3 i 1 k 3, j 3 i 1 k 2, j3i1k*j3i1k* j 3 i 1 k 1, YA2 YB1 YB3 YA3 m1m3

57 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder m1 ( 0, 0, -1) ==> m3 Il faut tester l’ordonnancement des blocs d’instruction de la dimension pour laquelle le module source et le module cible ne sont pas situés dans la même boucle : test de l’ordonnancement des boucles PRISE EN COMPTE DES BOUCLES Ordre séquentiel des boucles

58 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder m1 ( 0, 0, -1) ==> m3 Invalider la directive order sur la foie du sens de parcours de la troisième dimension est une erreur  test de conformité du sens de parcours inadapté. Le test pertinent ici porte sur l’ordonnancement des boucles dans lesquels sont situés les modules de la connexion PRISE EN COMPTE DES BOUCLES Valider la directive sur la seule foie de l’ordonnancement des modules est également une erreur  test d’ordonnancement des modules inadapté.

TEST DE VALIDITE DES DIRECTIVES ORDER 2.1 – Principe du test 2.2 – Compatibilité du sens de parcours de l’espace et des connexions 2.3 – Prise en compte de l’ordonnancement des modules 2.4 – Prise en compte de l’ordonnancement des boucles 2.6 – Résultats 2.5 – Analyse de la directive order et procédure de test

60 noDim[0] : dimension du premier axe traversé : i, j ou k noDim[1] : dimension du second axe traversé : i, j ou k noDim[2] : dimension du troisième axe traversé : i, j ou k valDim[0] : sens de parcours du premier axe traversé: -1 ou +1 valDim[1] : sens de parcours du second axe traversé: -1 ou +1 valDim[2] : sens de parcours du troisième axe traversé: -1 ou +1 ANALYSE DE LA DIRECTIVE ORDER Chaque module se voit attribuer les informations relatives à la partie de la directive order où il est intégré. 1 - Test de conformité du sens de parcours : attributs noDim et valDim 2 - Test d’ordonnancement des boucles : attribut noLoop noLoop[0] : numéro de boucle du premier axe traversé: compteur de boucles noLoop[1] : numéro de boucle du second axe traversé: compteur de boucles noLoop[2] : numéro de boucle du troisième axe traversé: compteur de boucles 3 - Test d’ordonnancement des modules : attribut noSeq noSeq : ordre de calcul du module: compteur de modules

61 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[2] = k valDim[2] = +1 noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2noLoop[2] = 3 ANALYSE DE LA DIRECTIVE ORDER

62 m1.noDim[0] = j m1.valDim[0] = - 1 m1.noLoop[0] = 1 m1.noDim[1] = i m1.valDim[1] = +1 m1.noLoop[1] = 2 m1.noDim[2] = k m1.valDim[2] = +1 m1.noLoop[2] = 3 m1.noSeq = 1 m2.noDim[0] = j m2.valDim[0] = - 1 m2.noLoop[0] = 1 m2.noDim[1] = k m2.valDim[1] = -1 m2.noLoop[1] = 2 m2.noDim[2] = i m2.valDim[2] = +1 m2.noLoop[2] = 3 m2.noSeq = 2 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[2] = k valDim[2] = +1 noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2noLoop[2] = 3 ANALYSE DE LA DIRECTIVE ORDER

63 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2 ANALYSE DE LA DIRECTIVE ORDER noDim[2] = k valDim[2] = +1 noLoop[2] = 3

64 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2 ANALYSE DE LA DIRECTIVE ORDER noDim[2] = k valDim[2] = -1 noLoop[2] = 4

65 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2 ANALYSE DE LA DIRECTIVE ORDER noDim[2] = k valDim[2] = -1 noLoop[2] = 4 m3.noDim[0] = j m3.valDim[0] = - 1 m3.noLoop[0] = 1 m3.noDim[1] = k m3.valDim[1] = -1 m3.noLoop[1] = 2 m3.noDim[2] = i m3.valDim[2] = +1 m3.noLoop[2] = 4 m3.noSeq = 3

66 ATTRIBUTS DES MODULES APRES ANALYSE DE LA DIRECTIVE ORDER m1.noDim[0] = j m1.valDim[0] = - 1 m1.noLoop[0] = 1 m1.noDim[1] = i m1.valDim[1] = +1 m1.noLoop[1] = 2 m1.noDim[2] = k m1.valDim[2] = +1 m1.noLoop[2] = 3 m1.noSeq = 1 m2.noDim[0] = j m2.valDim[0] = - 1 m2.noLoop[0] = 1 m2.noDim[1] = k m2.valDim[1] = -1 m2.noLoop[1] = 2 m2.noDim[2] = i m2.valDim[2] = +1 m2.noLoop[2] = 3 m2.noSeq = 2 m3.noDim[0] = j m3.valDim[0] = - 1 m3.noLoop[0] = 1 m3.noDim[1] = k m3.valDim[1] = -1 m3.noLoop[1] = 2 m3.noDim[2] = i m3.valDim[2] = +1 m3.noLoop[2] = 4 m3.noSeq = 3

67 ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t ctin m2 2 from m1 5 i - 1 j - 1 k - 1 tm1 (+1, 0, -1) ==> m2

68 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m2 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 3 no_axe = 0 début ANALYSE DE LA CONNEXIONm1(+1, 0, ) ==>m2 noSeq = 1 noSeq = 2 NON OUI NON OUI NON

69 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m2 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 3 no_axe = 0 début ANALYSE DE LA CONNEXIONm1(+1, 0, ) ==>m2 noSeq = 1 noSeq = 2 NON OUI NON OUI NON

70 ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t m2 (0, 0, -1) ==> m3 ctin m2 2 from m1 5 i - 1 j - 1 k - 1 tm1 (+1, 0, -1) ==> m2

71 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m2 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m2 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 4 no_axe = 0 début ANALYSE DE LA CONNEXIONm2( 0,0,) ==>m3 noSeq = 2 noSeq = 3 NON OUI NON OUI NON OUINON

72 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m2 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m3 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 4 no_axe = 0 début ANALYSE DE LA CONNEXIONm2 ( 0,0,) ==>m3 noSeq = 2 noSeq = 3 NON OUI NON OUI NON OUINON

73 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m2 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m3 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 4 no_axe = 0 début ANALYSE DE LA CONNEXIONm2( 0, 0,) ==>m3 noSeq = 2 noSeq = 3 NON OUI NON OUI NON OUINON

74 ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t m2 (0, 0, -1) ==> m3 m2 (0, 0, 0) ==> m1 ctin m2 2 from m1 5 i - 1 j - 1 k - 1 tm1 (+1, 0, -1) ==> m2

75 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m2 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m1 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 3 no_axe = 0 début ANALYSE DE LA CONNEXIONm2( 0,0, 0) ==>m1 noSeq = 3 NON OUI NON OUI NON OUINON

76 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m2 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m1 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 3 no_axe = 0 début noSeq = 3 ANALYSE DE LA CONNEXIONm2( 0,0, 0) ==>m1 NON OUI NON OUI NON OUINON

77 BS == BC BS < BC SC == 0SC == SO no_axe++ no_axe == nb_axes connexion réalisable order invalide NS < NC attributs m2 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 attributs m1 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 3 no_axe = 0 début noSeq = 2 noSeq = 1 ANALYSE DE LA CONNEXIONm2( 0,0, 0) ==>m1 NON OUI NON OUI NON OUINON

78 forder ANALYSE DE LA DIRECTIVE ORDER DIRECTIVE ORDER INVALIDE « connexion m2 ( 0, 0, 0) ==> m1 irréalisable » order YA2 order YB1 order YB3 forder order YA3 order YB1 m3 m1 m2

79 noDim[2] = k valDim[2] = +1 I - ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder

80 noDim[2] = k valDim[2] = +1 I - ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 m1.noDim[0] = j m1.valDim[0] = - 1 m1.noDim[1] = i m1.valDim[1] = +1 m1.noDim[2] = k m1.valDim[2] = +1 m2.noDim[0] = j m2.valDim[0] = - 1 m2.noDim[1] = i m2.valDim[1] = +1 m2.noDim[2] = k m2.valDim[2] = +1 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder

81 noDim[2] = k valDim[2] = +1 I - ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder

82 noDim[2] = k valDim[2] = -1 I - ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder

83 noDim[2] = k valDim[2] = -1 I - ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder m3.noDim[0] = j m3.valDim[0] = - 1 m3.noDim[1] = i m3.valDim[1] = +1 m3.noDim[2] = k m3.valDim[2] = -1

84 m1.noDim[0] = j m1.valDim[0] = - 1 m1.noDim[1] = i m1.valDim[1] = +1 m1.noDim[2] = k m1.valDim[2] = +1 m2.noDim[0] = j m2.valDim[0] = - 1 m2.noDim[1] = i m2.valDim[1] = +1 m2.noDim[2] = k m2.valDim[2] = +1 m3.noDim[0] = j m3.valDim[0] = - 1 m3.noDim[1] = i m3.valDim[1] = +1 m3.noDim[2] = k m3.valDim[2] = -1 ATTRIBUTS DES MODULES APRES ANALYSE DE LA DIRECTIVE ORDER

85 II - ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t ctin m2 2 from m1 5 i - 1 j - 1 k - 1 t ctin m3 2 from m1 4 i j k + 1 t ctin m2 1 from m1 1 i j k + 1 t ctin m1 1 from m1 2 i - 1 j k - 1 t ctin m3 1 from m1 3 i j k - 1 t m1 (0, 0,+1) ==> m2

86 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1( 0,0, +1 ) ==>m2 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

87 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1( 0,0, attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = ) ==>m2

88 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 ANALYSE DE LA CONNEXIONm1( 0,0, +1 ) ==>m2

89 II - ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t ctin m2 2 from m1 5 i - 1 j - 1 k - 1 t ctin m3 2 from m1 4 i j k + 1 t ctin m2 1 from m1 1 i j k + 1 t ctin m1 1 from m1 2 i - 1 j k - 1 t ctin m3 1 from m1 3 i j k - 1 t m1 (0, 0,+1) ==> m2 m1 (-1, 0,-1) ==> m1

90 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1(,0, ) ==>m1 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

91 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 Order invalide NON ANALYSE DE LA CONNEXIONm1(,0, ) ==>m1 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

92 ANALYSE DE LA DIRECTIVE ORDER DIRECTIVE ORDER INVALIDE « connexion m1 (-1, 0, -1) ==> m1 irréalisable » order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder

93 II - ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t ctin m2 2 from m1 5 i - 1 j - 1 k - 1 t ctin m3 2 from m1 4 i j k + 1 t ctin m2 1 from m1 1 i j k + 1 t ctin m1 1 from m1 2 i - 1 j k - 1 t ctin m3 1 from m1 3 i j k - 1 t m1 (0, 0,+1) ==> m2 m1 (-1, 0,-1) ==> m1 m1 ( 0, 0, -1) ==> m3

94 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1( 0,0, ) ==>m3 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

95 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1( 0,0, ) ==>m3 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

96 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1( 0,0, ) ==>m3 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

97 Sens_Connexion == 0 Sens_Connexion = ms(noDim[no_axe]) Sens_Order = ms.valDim[no_axe] Sens_Connexion == Sens_Order no_axe++ Connexion réalisable Order invalide OUI NON OUI NON no_axe = 0 ANALYSE DE LA CONNEXIONm1( 0,0, ) ==>m3 attributs m1 valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1

98 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[2] = k valDim[2] = +1 ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2noLoop[2] = 3

99 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder noDim[2] = k valDim[2] = +1 ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2noLoop[2] = 3 m1.noDim[0] = j m1.valDim[0] = - 1 m1.noLoop[0] = 1 m1.noDim[1] = i m1.valDim[1] = +1 m1.noLoop[1] = 2 m1.noDim[2] = k m1.valDim[2] = +1 m1.noLoop[2] = 3 m2.noDim[0] = j m2.valDim[0] = - 1 m2.noLoop[0] = 1 m2.noDim[1] = i m2.valDim[1] = + 1 m2.noLoop[1] = 2 m2.noDim[2] = k m2.valDim[2] = +1 m2.noLoop[2] = 3

100 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2 noDim[2] = k valDim[2] = +1 noLoop[2] = 3

101 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2 noDim[2] = k valDim[2] = -1 noLoop[2] = 4

102 m3.noDim[0] = j m3.valDim[0] = - 1 m3.noLoop[0] = 1 m3.noDim[1] = i m3.valDim[1] = +1 m3.noLoop[1] = 2 m3.noDim[2] = k m3.valDim[2] = -1 m3.noLoop[2] = 4 order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder ANALYSE DE LA DIRECTIVE ORDER noDim[1] = i valDim[1] = +1 noDim[0] = j valDim[0] = -1 noLoop[0] = 1noLoop[1] = 2 noDim[2] = k valDim[2] = -1 noLoop[2] = 4

103 ATTRIBUTS DES MODULES APRES ANALYSE DE LA DIRECTIVE ORDER m1.noDim[0] = j m1.valDim[0] = - 1 m1.noLoop[0] = 1 m1.noDim[1] = i m1.valDim[1] = +1 m1.noLoop[1] = 2 m1.noDim[2] = k m1.valDim[2] = +1 m1.noLoop[2] = 3 m2.noDim[0] = j m2.valDim[0] = - 1 m2.noLoop[0] = 1 m2.noDim[1] = i m2.valDim[1] = +1 m2.noLoop[1] = 2 m2.noDim[2] = k m2.valDim[2] = +1 m2.noLoop[2] = 3 m3.noDim[0] = j m3.valDim[0] = - 1 m3.noLoop[0] = 1 m3.noDim[1] = k m3.valDim[1] = -1 m3.noLoop[1] = 2 m3.noDim[2] = i m3.valDim[2] = +1 m3.noLoop[2] = 4

104 II - ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t ctin m2 2 from m1 5 i - 1 j - 1 k - 1 t ctin m3 2 from m1 4 i j k + 1 t ctin m2 1 from m1 1 i j k + 1 t ctin m1 1 from m1 2 i - 1 j k - 1 t ctin m3 1 from m1 3 i j k - 1 t m1 (0, 0,+1) ==> m2 m1 (-1, 0,-1) ==> m1 m1 ( 0, 0, -1) ==> m3

105 ANALYSE DE LA CONNEXION Sens_Connexion == 0 Sens_O = ms.valDim[no_axe] Sens_C == Sens_O no_axe++ Connexion réalisable Order invalide attributs m1 OUI NON OUI NON no_axe = 0 Sens_C = ms( ms.noDim[no_axe]) ==> mc valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 m1( 0, 0, ) ==>m3 attributs m3 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 4 BS = ms.noLoop[no_axe] / BC = mc.noLoop[no_axe] BS == BC BS < BC OUI NON OUI

106 ANALYSE DE LA CONNEXION Sens_Connexion == 0 Sens_O = ms.valDim[no_axe] Sens_C == Sens_O no_axe++ Connexion réalisable Order invalide attributs m1 OUI NON OUI NON no_axe = 0 Sens_C = ms( ms.noDim[no_axe]) ==> mc valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 m1( 0, 0, ) ==>m3 attributs m3 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 4 BS = ms.noLoop[no_axe] / BC = mc.noLoop[no_axe] BS == BC BS < BC OUI NON OUI

107 ANALYSE DE LA CONNEXION Sens_Connexion == 0 Sens_O = ms.valDim[no_axe] Sens_C == Sens_O no_axe++ attributs m1 OUI NON OUI NON no_axe = 0 Sens_C = ms(ms.noDim[no_axe]) ==> mc valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 m1( 0,0,) ==>m3 attributs m3 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 3 noLoop[1] = 2 noLoop[2] = 4 BS == BC OUI NON BS = ms.noLoop[no_axe] / BC = mc.noLoop[no_axe] Order invalide BS < BC NON OUI Connexion réalisable

108 II - ANALYSE DES DIRECTIVES CTIN ctin m3 1 from m2 1 i j k - 1 t ctin m1 2 from m2 2 i j k t ctin m2 2 from m1 5 i - 1 j - 1 k - 1 t ctin m2 2 from m3 1 i j k + 1 t m3 ( 0, 0, +1) ==> m2 ctin m2 1 from m1 1 i j k + 1 t ctin m1 1 from m1 2 i - 1 j k - 1 t ctin m3 1 from m1 3 i j k - 1 t m1 (0, 0,+1) ==> m2 m1 (-1, 0,-1) ==> m1 m1 ( 0, 0, -1) ==> m3

109 ANALYSE DE LA CONNEXION Sens_Connexion == 0 Sens_O = ms.valDim[no_axe] Sens_C == Sens_O no_axe++ Connexion réalisable Order invalide attributs m3 OUI NON OUI NON no_axe = 0 Sens_C = ms( ms.noDim[no_axe]) ==> mc valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 m3( 0, 0, +1) ==>m2 attributs m2 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 4 noLoop[1] = 2 noLoop[2] = 3 BS = ms.noLoop[no_axe] / BC = mc.noLoop[no_axe] BS == BC BS < BC OUI NON OUI

110 ANALYSE DE LA CONNEXION Sens_Connexion == 0 Sens_O = ms.valDim[no_axe] Sens_C == Sens_O no_axe++ Connexion réalisable attributs m3 OUI NON OUI NON no_axe = 0 Sens_C = ms( ms.noDim[no_axe]) ==> mc valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 m3( 0, 0, +1 ) ==>m2 attributs m2 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 4 noLoop[1] = 2 noLoop[2] = 3 BS = ms.noLoop[no_axe] / BC = mc.noLoop[no_axe] BS == BC OUI NON Order invalide BS < BC NON OUI

111 ANALYSE DE LA CONNEXION Sens_Connexion == 0 Sens_O = ms.valDim[no_axe] Sens_C == Sens_O no_axe++ attributs m3 OUI NON OUI NON no_axe = 0 Sens_C = ms(ms.noDim[no_axe]) ==> mc valDim[0] = -1 noDim[0] = j noDim[1] = i noDim[2] = k valDim[1] = +1 valDim[2] = +1 m3( 0,0, +1 ) ==>m2 attributs m2 noLoop[0] = 1 noLoop[1] = 2 noLoop[2] = 4 noLoop[1] = 2 noLoop[2] = 3 BS == BC OUI NON BS = ms.noLoop[no_axe] / BC = mc.noLoop[no_axe] Order invalide BS < BC NON OUI Connexion réalisable

112 ANALYSE DE LA DIRECTIVE ORDER DIRECTIVE ORDER INVALIDE « connexion m3 ( 0, 0, -1) ==> m2 irréalisable » order YA2 order YB1 order YB3 m1 m2 forder order YA3 m3 forder

TEST DE VALIDITE DES DIRECTIVES ORDER 2.1 – Principe du test 2.2 – Compatibilité du sens de parcours de l’espace et des connexions 2.3 – Prise en compte de l’ordonnancement des modules 2.4 – Prise en compte de l’ordonnancement des boucles 2.6 – Résultats 2.5 – Analyse de la directive order et procédure de test

GESTION DES PARCOURS DE L’ESPACE DE YAO 2 - TEST DE VALIDITE DES DIRECTIVES ORDER AIDE A LA GESTION DES PARCOURS DE L’ESPACE SOUS LE LOGICIEL YAO 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

116 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b a ( ) ==> b b (, ) ==> c 0 d (, ) ==> a +1, 0 +1, +1 -1, +1 -1, b ( ) ==> c SENS DE PARCOURS COMMUN

117 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c c d b d (, ) ==> c +1 c (, ) ==> b +1 +1, -1, b (, ) ==> a +1 a ABSENCE DE SENS DE PARCOURS COMMUN +1,

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

119 a c d b 0, 0, 0, -1, -1 COMPOSANTE FORTEMENT CONNEXE (CFC) 1 – Les modules d’une CFC sont forcément situés dans le même nid de boucles 2 – La dépendance

120 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b a () ==> d b (,) ==> a 0 c (,) ==> d 0 d (,) ==> c +1, , 0, 0, -1, COMPOSANTE FORTEMENT CONNEXE (CFC)

121 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b a () ==> d b (,) ==> a 0 c (,) ==> d 0 d (,) ==> c +1, , 0, 0, -1, COMPOSANTE FORTEMENT CONNEXE (CFC) a () ==> d b () ==> a c () ==> d

122 Maillage Graphe Connexions COMPOSANTE FORTEMENT CONNEXE (CFC) d a b c d a b c d a b c a c d b a () ==> d b () ==> a c () ==> d

123 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b 0, -1, -1, 0, 0, a ( ) ==> d, +1 d ( ) ==> c, 0 c ( ) ==> d, 0 c ( ) ==> b, b ( ) ==> a, 0 a ( ) ==> b, 0 CFC IMBRIQUEES COMPATIBLES

124 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b d ( ) ==> c c ( ) ==> d b ( ) ==> a a ( ) ==> b CFC IMBRIQUEES COMPATIBLES

125 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b +1 0, -1, -1, 0, +1 0, a ( ) ==> d, d ( ) ==> c, 0 +1 c ( ) ==> d, 0 +1 c ( ) ==> b, b ( ) ==> a, 0 a ( ) ==> b, 0 CFC IMBRIQUEES INCOMPATIBLES

126 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b d ( ) ==> c +1 c ( ) ==> d +1 b ( ) ==> a a ( ) ==> b CFC IMBRIQUEES INCOMPATIBLES

127 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b +1 0, -1, 0, 0, +1 0, a ( ) ==> d, 0 d ( ) ==> c, 0 +1 c ( ) ==> d, 0 +1 c ( ) ==> b, b ( ) ==> a, 0 a ( ) ==> b, 0 CFC IMBRIQUEES INCOMPATIBLES ORDONNANCEES

128 Maillage Graphe Connexions d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c d a b c a c d b d ( ) ==> c +1 c ( ) ==> d +1 b ( ) ==> a a ( ) ==> b a ( ) ==> d CFC IMBRIQUEES INCOMPATIBLES ORDONNANCEES

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

130 CFC3D i = -1 j = -1 k = +1 c a 0, -1, b CFC3D i = -1 j = 0 k = 0 c a b CFC3D i = -1 j = 2 k = 2 c a b 1 - Sens de parcours défini 2 - Sens de parcours libre 3 - Sens de parcours indéfini -1, , 0 -1,0,0 -1, +1, 0,-1,+1 0,-1,+1 0, 0 -1, +1,

131 CFC3D j = -1 i = 2 k = 2 c a +1, b CFC3D j = -1 k = +1 i = 2 CFC3D k = +1 i = 2 j = 2 0,+1 -1, +1 +1, -1, , 0 -1, c a b c a b CFC3D i = -1 j = -1 k = +1 c a 0, b CFC3D i = -1 j = 2 k = 2 CFC3D i = -1 k = +1 j = 2 -1, +1 +1, +1 -1, -1, +1, +1 0, -1, 0 +1 c a 0, b c a b

132 CFC3D i = 0 j = 0 k = -1 CFC2D j = 0 k = -1 CFC1D k = -1 mod : a b Une structure par dimension a b 0,0,0 0,0,-1 a b 0,0 0,-1 a b 0

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

134 b d a c -1, -1, 0, 0, 0, +1 -1, -1, 0, +10, +10, +1, 0, +1, 0, +1 -1, CFC3D j = -1

135 b d a c 0, 0, -1, +1 0, +1 +1, +1, +1 -1, CFC3D j = -1 i = 2 k = 2

136 b d a c 0, 0, -1, +1 0, +1 0, +1 +1,+1,-1, +1 CFC2D i = -1 CFC2D k = 2 i = +1 k = 2

137 b d a c +1 CFC1D k = +1 k = -1 k = +1 mod : a mod : b CFC1D mod : d CFC1D mod : c

138 CFC3D j = -1 i = 2 k = 2 CFC2D i = -1 k = 2 CFC2D i = +1 k = 2 CFC1D k = +1 CFC1D k = -1 CFC1D k = -1 CFC1D k = +1 order YA2 forder order YA1 forder order YB3 a forder order YA3 d forder order YB1 forder order YA3 b forder order YB3 c forder mod : amod : dmod : bmod : c

139 b d a c -1, -1, 0, 0, 0, -1, +1 0, -1,-1, 0, +10, +10, +1, 0,+1, 0,-1, +1 0, CFC3D i = -1 j = 2 k = 2

140 b d a c 0, 0, -1, +1 0, +1 0, +1 +1,+1,-1, +1 CFC2D j = -1 CFC2D k = 2 j = +1 k = 2

141 b d a c +1 CFC1D k = +1 k = -1 k = +1 mod : a mod : b CFC1D mod : d CFC1D mod : c

142 CFC3D i = -1 j = 2 k = 2 CFC2D j = -1 k = 2 CFC2D j = +1 k = 2 CFC1D k = +1 CFC1D k = -1 CFC1D k = -1 CFC1D k = +1 order YA1 forder order YA2 forder order YB3 a forder order YA3 d forder order YB2 forder order YA3 b forder order YB3 c forder mod : amod : dmod : bmod : c

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

144 b f a c -1, -1, 0, 0, ,+1, +1 0, CFC3D i = -1 j = 2 k = 2 d 0, 0,-1, 0, e +1 0, 0

145 b c 0,0 +1 CFC2D j = -1 k = 2 d 0, -1, d CFC1D k = 0 b c 0+1 CFC1D k = +1 mod : d mod : c b

146 f a 0, +1, +1 e 0,+10,0 CFC2D j = +1 k = 2 CFC1D k = +1 mod : f e f e +10 a CFC1D k = 0 mod : a

147 CFC3D i = -1 j = 2 k = 2 CFC2D j = -1 k = 2 CFC1D k = 0 mod : d CFC1D k = +1 mod : c b CFC2D j = +1 k = 2 CFC1D k = +1 mod : f e CFC1D k = 0 mod : a order YA1 forder order YA2 forder order Y*3 d forder order YB3 c b forder order YB2 forder order YB3 f e forder order Y*3 a forder

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Phase itérative et phase récursive Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

149 Recherche d1 s1 Fixation CFC3D Réduction CFC3D Fixé Tri CFC2D Pour chaque CFC2D Recherche d2 s2 Si s2 est défini Recherche d2 s2 Fixation CFC 2D Fixation CFC 3D Recherche d3 s3 Si s2 est défini Fixation CFC 3D Recherche d3 s3 Si s3 est défini Fixation CFC 2D Réduction CFC2D Fixé Tri CFC1D Pour chaque CFC1D Recherche s3 Fixation CFC 1D Tri CFC1D Phase itérative Phase récursive

150 b f a c +1, 0 0, +1, 0 0, +1, 0, 0, 0 CFC3D i = -1 j = +1 k = -1 d 0, 0, 0, e 0, 0, -1, -1,

151 b f a c +1, 0 0, +1, 0 0, +1, 0, 0, 0 CFC3D i = -1 d 0,0 0, e 0 0, -1, -1,

152 f a +1, 0 0, 0 e 0, CFC2D j = +1 a CFC1D k = 0 mod : a f e 0 CFC1D k = -1 mod : e f

153 b c +1, 0, d 0, 0, CFC2D j = +1 b CFC1D k = 0 mod : b c d 0 CFC1D k = -1 mod : d c

154 CFC3D i = -1 CFC2D j = +1 CFC2D j = +1 CFC1D k = 0 mod : a CFC1D k = -1 mod : e f CFC1D k = 0 mod : b CFC1D k = -1 mod : d c order YA1 forder order YB2 forder order Y*3 a forder order YA3 e f forder order YB2 forder order Y*3 b forder order YA3 d c forder

155 CFC3D i = -1 j = +1 k = -1 CFC2D j = +1 k = -1 CFC2D j = +1 k = -1 CFC1D k = -1 CFC1D k = -1 CFC1D k = -1 CFC1D k = -1 order YA1 order YB2 forder order YA3 a forder mod : a mod : e fmod : bmod : d c e fbd c

156 order YA1 order YA2 forder order YB3 a forder e fbd c order YA1 forder order YB2 forder order Y*3 a forder order YA3 e f forder order YB2 forder order Y*3 b forder order YA3 d c forder Lecture exhaustive des CFCLecture partielle des CFC

157 For i:1  Ni For j:Nj  1 End for For k:1  Nk a End for e fbd c For i:1  Ni End for For j:Nj  1 End for For k:1  Nk a End for For k:1  Nk e f End for For j:Nj  1 End for For k:1  Nk b End for For k:1  Nk d c End for Lecture exhaustive des CFCLecture partielle des CFC

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

159 Graphe de l’espace a b c d e m no p q f g hi j k l r

Définition du sens de parcours des axes Définition de l’ordre de calcul des modules Supprimer les dépendances simples Supprimer les dépendances mutuelles Information retenue sur les graphes Parcours complet d’un espace Résultats - Perspectives Phase itérative et phase récursive 3 - GENERATION AUTOMATIQUE DES DIRECTIVES ORDER

161 Graphe a b c d e m no p q f g hi j k l r

162 m no a -1,-1, 0, -1, 0,+1, 0,0+1, 0 +1, -1, +1 CFC3D j = -1 k = -1 i = +1 m no a -1, +1, 0 Graphe de la CFC 3D Fixée

163 o a -1, 0+1, +1 CFC2D k = -1 i = +1 a o CFC1D i = 0 mod : a CFC1D i = 0 mod : o

164 m CFC2D m CFC1D k = 0 mod : m n CFC2D n CFC1D k = 0 mod : n i = 0 k = 0 i = 0 k = 0

165 CFC1D i = 0 mod : o CFC1D i = 0 mod : a CFC2D k = -1 i = +1 CFC1D k = 0 mod : m CFC1D k = 0 mod : n CFC2D i = 0 k = 0 CFC2D i = 0 k = 0 CFC3D j = -1 k = -1 i = +1 order YA2 order YA3 forder order YB1 o forder amn