[PDF] TP parallélisme Factorisation LU et descente-remontée





Previous PDF Next PDF



1 Méthode de Gauss et factorisation LU

l'algorithme de Gauss avec pivot partiel) puis résoudre le système (1) en utilisant cette Étape 1 : identification de la première ligne de LU “ A :.



FACTORISATIONS

Yvan Monka – Académie de Strasbourg – www.maths-et-tiques.fr. FACTORISATIONS. I. Factorisations avec facteur commun. Vient du latin « Factor » = celui qui 



1.3 Les méthodes directes

Etape de factorisation et descente Pour passer de la matrice A. (i) à la matrice A. (i+1) on va effectuer des combinaisons linéaires entre lignes qui 



Factorisation de polynômes de degré 3

NB : ces méthodes fonctionnent avec des polynômes de degré supérieur à 3. Exercice 1 : factorisez au maximum les polynômes suivants : 1. P(x) = 6x3 +11x2 ?3x 



Nouveaux records de factorisation et de calcul de logarithme discret

d'une matrice définie sur Z/2Z avec 282 millions de lignes et de colonnes. La factorisation d'entier avec l'algorithme NFS comprend les étapes ...



3. Factorisation LU - Sections 2.6 et 2.7

Ceci est une factorisation (ou décomposition) LU de la matrice A. MTH1007: alg`ebre linéaire Lorsqu'une ligne de A débute avec des zéros il en est de.



Nouveaux records de factorisation et de calcul de logarithme discret

d'une matrice définie sur Z/2Z avec 282 millions de lignes et de colonnes. La factorisation d'entier avec l'algorithme NFS comprend les étapes ...



TP parallélisme Factorisation LU et descente-remontée

16 déc. 2008 par l'élément situé `a l'intersection de la ligne que l'on traite et de la colonne factorisé. Les étapes 1 et 3 sont réalisées enti`erement ...



Exercices de 3ème – Chapitre 2 – Calcul littéral Énoncés Exercice 1

Développer réduire et ordonner les expressions suivantes sans étape de calcul : H= (x 5)² En déduire une factorisation de 4 x2?12 x+5 . Exercice 20.



FACTORISATIONS

I. Factoriser avec un facteur commun Trouver le facteur commun de ces expressions puis factoriser et réduire si possible: A = 3x – 4x + 2x.



FACTORISATIONS - maths et tiques

1) Factoriser avec un facteur commun Méthode : Factoriser une expression (1) Vidéo https://youtu be/r3AzqvgLcI8 Pour factoriser il faut trouver dans l’expression un facteur commun Trouver le facteur commun de ces expressions puis factoriser et réduire si possible: A = 35x – 42x + 21x C = 4x – 4y + 8 E = 3t + 9u + 3



1 FACTORISATIONS - maths et tiques

Factoriser une expression c’est transformer une somme ou une différence en produit Dans la pratique factoriser c’est mettre en facteur en gagnant des parenthèses dans une expression Méthode : Appliquer la distributivité pour le calcul mental Vidéo https://youtu be/sr_vOR2ALhw Vidéo https://youtu be/BaUpx07H0NM

  • Factorisation en Ligne en recherchant Les Facteurs Communs

    La fonction factoriser est en mesure de reconnaitre les facteurs communs d'une expression algébrique : 1. Ces facteurs communs peuvent être des nombres, ainsi la factorisation de l'expression 3x+3, factoriser(3x+3), renverra 3(1+x) 2. Ces facteurs communs peuvent être des lettres, ainsi la factorisation de l'expression ax+bx, factoriser(ax+bx), ret...

  • Factorisation en utilisant Les Identités Remarquables

    La fonction factoriser est en mesure de reconnaitre les identités remarquables usuelles et de les utiliser pour factoriser des expressions algébriques 1. l'identité remarquable suivante a2+b2+2ab=(a+b)2 est par exemple utilisée pour factoriser l'expression 1+2x+x2, le résultat renvoyé par la fonction est (1+x)2 2. l'identité remarquable suivante a2...

  • Factorisation en Ligne Des Polynômes Du Second degré.

    La fonction factoriser est en mesure de reconnaitre les polynomes du second degré et de les factoriser quand cela est possible 1. Ainsi, la fonction permet de factoriser en ligne le polynôme du second degré suivant -6-x+x2, le résultat renvoyé par la fonction est l'expression factorisée (2+x)?(-3+x) 2. Par exemple en saisissant factoriser(-12+x2+x2...

  • Factorisation de Fraction

    La fonction factoriser est en mesure de factoriser des fractions algébriques: 1. Ainsi, la fonction permet de factoriser la fraction suivante x+2?a?xb, le résultat renvoyé par la fonction est l'expression factorisée x?(1+2?a)b 2. Par exemple en saisissant factoriser(-12+x2+x2b), la fonction retournera la factorisation en ligne de la fraction, c'est...

Quelle est la méthode pour factoriser?

Pour factoriser, il faut trouver dans l’expression un facteur commun. Trouver le facteur commun de ces expressions, puis factoriser et réduire si possible: A = 3,5x– 4,2x+ 2,1xC = 4x– 4y+ 8 E = 3t+ 9u+ 3 B = 4t– 5tx+ 3tD = x2+ 3x– 5x2F = 3x– x

Comment factoriser une expression ?

En d’autres termes, Factoriser une expression signifie la réécrire comme le produit de facteurs. Par exemple, vous pouvez factoriser l’expression 4x2+6xy en l’écrivant sous la forme 2x (2x+3y). L’expression factorisée montre la multiplication de deux facteurs : 2x et 2x+3y.

Pourquoi utiliser une calculatrice pour factoriser en ligne ?

En effet, la factorisation nous permet de réécrire les polynômes d’une manière plus simple, et en appliquant les principes de factorisation aux équations, nous pouvons trouver la solution d’une manière plus simple. C’est pourquoi nous mettons entre vos mains cette calculatrice pour factoriser en ligne.

Qu'est-ce que la fonction factoriser ?

La fonction retourne alors la forme factorisée de l'expression algébrique placée en paramètre. La fonction factoriser est en mesure de reconnaitre les facteurs communs d'une expression algébrique : Ces facteurs communs peuvent être des nombres, ainsi la factorisation de l'expression 3 x + 3, factoriser ( 3 x + 3), renverra 3 ( 1 + x)

TP parallélisme Factorisation LU et descente-remontée

TP parall´elisme

Compte-Rendu 16/12/2008

Factorisation LU et

descente-remont´ee

Encadrant :

MathieuFAVERGE

Binome

?SeifeddineHABASSI

Mohamed AmineEL AFRIT

ENSEIRB i3 PRCD 2008/2009 Semestre n°5

Table des mati`eres1 Pr´eliminaires2

2 Factorisation LU2

2.1 Parall´elisation de l"algorithme de factorisation . . .. . . . . . . . . . 2

2.2 Optimisation des performances `a l"aide des BLAS . . . . . .. . . . . 2

2.3 Implantation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

3 R´esolution des ´equations de type Ax=b 3

3.1 Parall´elisation de l"algorithme de descente-remont´ee . . . . . . . . . 3

3.2 Optimisation des performances `a l"aide des BLAS . . . . . .. . . . . 4

3.3 Implantation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.3.1 Descente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3.3.2 Remont´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

4 Gestion des matrices5

4.1 Allocation m´emoire et initialisation . . . . . . . . . . . . . .. . . . . 5

4.2 Format de stockage d"une matrice dans un fichier . . . . . . . .. . . 5

4.3 R´epartition sur plusieurs processus . . . . . . . . . . . . . . .. . . . 5

4.3.1 Le serpentin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4.3.2 Chargement et stockage dans un fichier . . . . . . . . . . . . 6

4.4 Affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1 Pr´eliminaires

On souhaite r´esoudre en parall`ele un syst`eme lin´eaire carr´e dense de la forme Ax=b. La factorisation LU consiste `a transformer la matrice A en un produit de ma- trices L U, o`u L est une matrice trianglaire inf´erieure et Uest une matrice triangu- laire sup´erieure. Pour cela, on s"appuie sur le fait qu"`a chaque ´etape de la mthode de Gauss, il existe une matriceL(k)telle que :A(k+1)=L(k)×A(k). La matriceU=A(n), triangulaire sup´erieure, est donc telle que :

U=L(n)L(n-1)...L(2)L(1)A

et donc

A=L(1)-1L(2)-1...L(n-1)-1L(n)-1U=LU

L"algorithme de factorisation LU a l"avantage que les termes de L et U peuvent remplacer en m´emoire les termes de A, la diagonale unit´e deL n"´etant pas stock´ee.

2 Factorisation LU

2.1 Parall´elisation de l"algorithme de factorisation

Comme indiqu´e dans l"´enonc´e, la matrice `a factoriser est r´epartie par colonne suivant la distribution en serpentin. Dans l"algorithme s´equentiel de factorisation

LU, on peut distinguer 4 ´etapes :

1. La recherche du pivot dans la premi`ere colonne du bloc de matrice pas encore

factoris´e.

2. L"´echange de la ligne du pivot pour la placer en haut du bloc de matrice pas

encore factoris´e. 2

3. La division par le pivot de chaque ´el´ement de cette colonne, ce qui nous donne

une nouvelle colonne factoris´ee de L.

4. La mise `a jour du nouveau bloc non factoris´e :

`A chaque ligne du nouveau bloc non factoris´e, on retranche la ligne nouvellement factoris´ee coeffcient´ee par l"´el´ement situ´e `a l"intersection de la ligne que l"on traite et de la colonne factoris´e. Les ´etapes 1 et 3 sont r´ealis´ees enti`erement par le processeur qui d´etient la colonne que l"on factorise, `a l"aide de donn´ees contenuesdans la colonne. Aucune communication n"est donc n´ecessaire. En revanche, les ´etapes 2 et 4 concernent

tous les processeurs. Pour ex´ectuer l"´etape 2, ils doivent connaˆıtre l"indice du pivot,

qui n"est connu que par le processeur d´etenant la colonne factoris´ee. Ce processeur va donc ex´ectuer un broadcast de cet indice. De la mˆeme mani`ere, `a l"´etape 4 les ´el´ements de la premi`ere colonne du bloc non factoris´e doivent ˆetre connus de tous. Le processeur d´etenant cette colonne la diffuse donc.

2.2 Optimisation des performances `a l"aide des BLAS

Chacune des ´etapes d´ecrites pr´ec´edemment peut ˆetre r´ealis´ee simplement `a l"aide

des BLAS afin d"optimiser l"utilisation du cache. - La recherche du pivot dans une colonne est implant´ee `a l"aide de la fonc- tioncblas isamax. Cette routineBLAScalcule en effet l"indice du plus grand

´el´ement dans un vecteur.

- La routinecblas ?swappermet d"´echanger en m´emoire deux vecteurs. Cela nous permet d"impl´ementer la seconde´etape. Comme nos matrices sont stock´ees par colonnes, on utilise un stride ´egal `a la hauteur des matrices afin de d"´echanger des lignes de matrice. - Pour diviser chaque ´el´ement de la colonne factoris´ee par le pivot on utilise la routineBLAS cblas ?scalqui permet de multiplier un vecteur par un coeff- cient. - Enfin, la mise `a jour du bloc peut ˆetre ex´ectu´ee en une seule ´etape par la foncctioncblas ?ger. En effet, il suffit de voir que l"op´eration ex´ectu´ee revient `a retrancher `a ce bloc le bloc obtenu en ex´ectuant le produit de la colonne factoris´ee par la ligne factoris´ee. La fonctioncblas ?gerpermet justement d"ajouter `a une matrice le r´esultat obtenu en coeffcientant le produit d"un vecteur et de la transpos´ee d"un autre.

2.3 Implantation

L"algorithme de factorisation LU distribu´e est implant´edans le modulefacto.c. Chaque processus charge le morceau de matrice qui lui est affect´e `a l"aide des fonc- tions de gestion de matrices. (Voir section 4) Chacun it`ereensuite sur l"ensemble des colonnes de la matrice globale. Le processeur qui poss`ede la colonne courante ex´ectue les ´etapes 1 `a 4 tandis que les autres n"ex´ectuent que les ´etapes 2 et 4. L"´echange du pivot ainsi que des colonnes s"ex´ectuent `a l"aide de la fonction de communicationbroadcastColumnd´efinie dans le modulematrix.c.

La r´esolution est ex´ectu´ee "sur-place", on ´ecrit directement les ´el´ements de L et

de U `a la place des ´el´ements de la matrice de d´epart. Les ´el´ements diagonaux de L,

tous ´egaux `a 1 par convention, ne sont pas stock´es. On peutalors ´ecrire le r´esultat dans le fichier de sortie. Chaque processus ´ecrit sa portionde matrice au sein du fichier 3

3 R´esolution des ´equations de type Ax=b

Nous avons maintenant une matrice A factoris´ee sous la forme d"une matrice LU o`u L est triangulaire inf´erieure et U triangulaire sup´erieure. Nous devons donc r´esoudre LU x =b. Puisqu"on sait r´esoudre rapidement des ´equations de type Ax = b ou A est un matrice triangulaire, on d´ecompose la r´esolution en deux ´etapes. On commence par r´esoudre l"´equation Ly = b et on a ensuite, paridentification, U x = y .

3.1 Parall´elisation de l"algorithme de descente-remont´ee

Prenons pour exemple l"algorithme de descente qui consiste`a r´esoudre l"´equation Ly =b. L"algorithme de remont´ee ´etant tout `a fait similaire. Les colonnes de la matrice L sont r´eparties comme pr´ec´edemment. Chaque pro- cessus d´etient par ailleurs une partie des vecteurs y et b qui sont stock´es le mˆeme tableau. En effet les valeurs de b sont ´ecras´ees au fur et `a mesure que les valeurs de y sont calcul´ees. Les indices des ´el´ements du vecteur b stock´es par chaque processus coincident avec ceux des colonnes qu"ils d´etiennent. Par exemple, si un processus stocke les colonnes 3, 4 et 7 d"une matrice, les indices 3, 4 et7 du vecteur seront stock´es par le mˆeme processus. On travaille ligne par ligne, et pour chaque ligne on distingue deux ´etapes :

1. Sommer le produit de chaque ´el´ement pr´ec´edent la diagonale de la matrice par

l"´el´ement de y d´ej`a calcul´e correspondant. (Ayant le mˆeme indice que l"indice de colonne de l"´el´ement de la matrice)

2. Retrancher cette somme `a b et diviser le r´esultat par l"´el´ement diagonal (´egal

`a 1 dans le cas de L). On obtient ainsi un nouvel ´el´ement de y.

La premi`ere ´etape peut ˆetre r´ealis´ee de mani`ere distribu´ee puisque les processus

d´etiennent les ´el´ements de y correspondant `a leurs colonnes. Chaque processus peut donc calculer une "sous-somme" locale. La seconde ´etape est ex´ectu´ee par le proces-

sus d´etenant l"´el´ement de y calcul´e. Il a besoin de connaˆıtre la somme totale, c"est

`a dire la somme de toutes les "sous-sommes" ex´ectu´ees parchaque processus. Cette information lui est communiqu´ee `a l"aide de la primitive MPI reduce qui permet `a tous les processus d"envoyer une valeur `a un processus qui en recevra la somme.

3.2 Optimisation des performances `a l"aide des BLAS

L"´etape 1 de l"algorithme d´ecrit correspond `a un produitscalaire entre les

´el´ements de y d´ej`a calcul´es et la ligne de la matrice quel"on traite. Cette op´eration

peut ˆetre effectu´ee `a l"aide de la routineBLAS ?dot.

3.3 Implantation

3.3.1 Descente

L"algorithme de descente est constitu´e de ces diff´erentes´etapes : - R´ecup´eration de la matrice locale et du vecteur local au processus - Pour toute les lignes k de la matrice globale - On ex´ectue un produit scalaire entre le d´ebut (jusqu"`a la diagonale non incluse) de la ligne locale et le d´ebut du vecteur y local. Ceproduit est ex´ectu´e au moyen de la routine blas cblas ?dot. - On rassemble la somme de globale (sommes des produits scalaires de chacun des processus) chez le processus d´etenant l"´el´ement k duvecteur avec la primitive MPI

Reduce.

4 - Le processus d´etenant l"´el´ement k du vecteur met alors `a jour le vecteur y avec le r´esultat de l"op´erationyk=bk-sommedesproduitsscalaires A la fin de la descente, le vecteur local qui contenait b contient y.

3.3.2 Remont´ee

L"algorithme de remont´ee consiste `a r´esoudre l"´equation U x = y . U est une matrice triangulaire sup´erieure contenant aussi les ´el´ements de la diagonale (contrai- rement `a L). L"algorithme de remont´ee se d´eroule suivantces diff´erentes ´etapes : - Pour toute les lignes k de la matrice globale en partant de lafin - On ex´ectue un produit scalaire entre la fin (`a partir de la diagonale non incluse) de la ligne locale et la fin du vecteur x local. Ce produit est ex´ectu´e au moyen de la routine blas cblas ?dot . - On rassemble la somme de globale (sommes des produits scalaires de chacun des processus) chez le processus d´etenant l"´el´ement k duvecteur avec la primitive MPI

Reduce.

- Le processus d´etenant l"´el´ement k du vecteur met alors `a jour le vecteur x avec le r´esultat de l"op´erationxk=yk-sommedesproduitsscalaires Uk,k. - A la fin des calculs on regroupe tout les r´esultats locaux `achaque processus dans un seul fichier de vecteur.

4 Gestion des matrices

Afin que les diff´erents processus puissent effectuer diverses op´erations sur les matrices et les vecteurs, nous avons impl´ement´e un modulede gestion de matrices (matrix.c). Ce module g`ere l"allocation et la lib´erationm´emoire, l"initialisation et les op´erations sur les matrices. Les vecteurs sont repr´esent´es par des matrices de largeur 1. Nous avons d´efini une structure de matrice que nous avons nomm´ee matrix t.

Cette structure contient les champs :

- width : le nombre de colonnes de la matrice - height : le nombre de lignes de la matrice - array : un pointeur sur les donn´ees la matrice Les donn´ees de la matrice sont stock´ees sous la forme d"un bloc de width*height

´el´ements, les ´el´ements ´etant rang´es par colonnes. Les ´el´ements de la matrice sont

type MAT DATATYPE que l"on peut d´efinir `a l"aide d"un #define (float, ou double par exemple) dans le modulematrix.h.

4.1 Allocation m´emoire et initialisation

La fonctionnewMatrixpermet d"allouer de la m´emoire `a une matrice. Elle prend en param`etre la largeur et la hauteur de la matrice voulue, alloue de la place pour la structure matrix t, puis fait de mˆeme pour le tableau de donn´ees. La quantit´e de m´emoire allou´ee d´epend de la taille de la matrice. Toutesles valeurs de la matrice sont initialis´ees `a 0. Une fonction de d´esallocation estaussi propos´ee.

4.2 Format de stockage d"une matrice dans un fichier

Tous les processus doivent acc´eder aux matrices `a traiterafin de r´ecup´erer les morceaux qui leur sont attribu´es. Pour ce faire, nous stockons les matrices dans des fichiers auxquels ont acc`es tous les processeurs. Le stockage est r´ealis´e de mani`ere binaire, c"est `a dire que nous g´en´erons directement les fichiers avec desfwrite. Les 5 premiers ´el´ements d"un fichier de matrice dont sa taille (hauteur et largeur). Les donn´ees de la matrice sont stock´ees colonne par colonne en file indienne dans la matrice. On prend en compte la taille de chaque ´el´ement (float, double ...)

afin de pouvoir pr´ecis´ement r´ecup´erer les donn´ees du fichier. Les dimension de la

matrices sont en effet stock´ees sous la forme d"entiers tandis que chaque ´el´ement est stock´ee sous la forme de MAT

DATATYPE. Le moduleinit.cpermet de cr´eer

des fichiers de test. On entre en ligne de commande la taille et le type de matrice souhait´e (random int, random float, exemple, identity ) et une matrice est g´en´er´ee puis stock´ee sous forme d"un fichier dont le nom est aussi entr´e en param`etres.

4.3 R´epartition sur plusieurs processus

4.3.1 Le serpentin

Les colonnes de la matrice sont r´eparties sur les diff´erents processus suivant la distribution du serpentin Chaque processusPistocke dans une matrice locale, de mani`ere contigue, les

colonnes qui lui sont allou´ees. Diff´erents op´erateurs permettent d"associer le num´ero

de colonne local `a un processus `a son num´ero dans la matrice compl`ete. - La fonctiongetNbColumnspermet de d´eterminer le nombre total de colonnes qui vont ˆetre affect´ees `a un processus donn´e. - La fonctionwhoHasColumnpermet de d´eterminer le rang du processus d´etenant une colonne donn´ee de la matrice compl`ete. - La fonctiongetLocalColumnIndexrenvoie l"indice de colonne local au proces- sus correspondant `a un indice de colonne de la matrice globale. Le r´esultat n"est valide que si le processus d´etient r´eellement la colonne. - La fonctiongetGlobalColumnIndexest la fonction inverse. Elle renvoie l"indice de la colonne dans la matrice globale correspondant `a un indice dans la matrice locale.

4.3.2 Chargement et stockage dans un fichier

Un ensemble de fonctions permettent de passer directement du format de fichier avec une matrice globale `a un format en m´emoire, r´eparti pour chaque processus selon la distribution en serpentin. - La fonctiongetMatrixColumnsFromFilecharge les colonnes de la matrice glo- bale affect´ees `a un processus donn´e et les place cˆote `a cˆote dans la matrice locale au processus. Les param`etresen entr´ee sont le chemin du fichier stockant la matrice globale, le rang du processus et le nombre total deprocessus. - La fonctionwriteMatrixColumnsToFileeffectue l"op´eration inverse c"est `a dire qu"elle ´ecrit au bon endroit, dans le fichier contenant la matrice globale, l"en- semble des colonnes locales d"un processus. - Les fonctionsgetMatrixRowsFromFileetwriteMatrixRowsToFilepermettent d"effectuer la mˆeme op´eration pour une distribution serpentin par ligne. On l"utilise ici pour charger et ´ecrire nos vecteurs pendant l"´etape de r´esolution.

4.4 Affichage

L"affichage se fait `a l"aide du moduleshowMatrix.c. On lui passe en param`etre le fichier contenant la matrice ou le vecteur `a afficher. 6quotesdbs_dbs31.pdfusesText_37
[PDF] sujet bac geothermie

[PDF] développer en ligne

[PDF] factorisation en ligne avec détails

[PDF] epices marocaine pour poulet

[PDF] les epices marocaine en arabe et francais

[PDF] tableau épices cuisine

[PDF] utilisation des epices et aromates

[PDF] bienfaits des épices et aromates

[PDF] quels sont les bienfaits des épices

[PDF] liste épices marocaines

[PDF] géothermie et propriétés thermiques de la terre cours

[PDF] sujet bac corrigé svt géologie

[PDF] equilibre liquide liquide binaire

[PDF] liquide saturé définition

[PDF] exercice corrigé equilibre liquide vapeur