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