p3 sesion 4(2018-2019) - Technical University of...

18
Prác%ca 3 Sesión 4 1

Transcript of p3 sesion 4(2018-2019) - Technical University of...

  • Prác%ca3

    Sesión4

    1

  • Obje%vo

    Resolver sistemas de ecuaciones linealesmedianteladescomposiciónLU(vermemoria).Estudio del problema y de una implementaciónparalelabasada enel repartoporbloquesdefilas(sistbf.c).Transformación a una implementación paralelabasadaenelrepartocíclicodefilas(sistcf.c).

    2

  • Descripcióndelproblema•  ResolversistemasdeecuacioneslinealesAx=b,dondemedianteladescompo-siciónLU:

    § ObtenerladescomposiciónA=LU(E.Gaussiana)

    § ResolverelsistematriangularinferiorunidadLy=b(elementosdiagonalesdeLigualesa1)

    § ResolverelsistematriangularsuperiorUx=y

    3

    A∈!nxn,b∈!nx1

  • ProgramaparaleloproporcionadoElprograma(sistbf.c)generaunsistemalinealAx=byloresuelverealizandounaseriedepasosmarcadosconstep(paso)x:1.   Generarlosdatos.Elproceso0generalamatriz(A),yelvector(b)completos.

    Todoslosprocesos(incluidoel0),reservanmemoriaparasumatrizlocal(Aloc).

    2.   Distribuir losdatos.Lamatriz sedistribuyeentre losprocesosporbloquesdembfilasconsecu%vas.Elvectorbsereplicaentodoslosprocesos.

    3.   DescomposiciónLU.EnestafaselamatrizAsesobreescribeporLyporU.LoselementosdeLquedanenlaparteinferiordeAylosdeUenlasuperior.

    4.   Resolver el sistema triangular inferior Ly=b. El vector y se almacena sobre bsobreescribiéndolo.

    5.   Resolver el sistema triangular superior Ux=y. El vector y se encuentraalmacenadoenlavariableb,yenestafasesesobreescribeconelvectorx.

    4

  • Programaparaleloproporcionado(II)Ejercicio1:Compilayejecutaelprograma.Veamosunapruebacortaenelfrontend.Para5ecuacionesusandotresprocesos:$ mpiexec –n 3 sistbf 5Alejecutarelprograma,apareceránelcontenidodelamatrizAyelvectorb,endis%ntospuntosdelprograma:

    5

    25 4 3 2 14 25 4 3 23 4 25 5 32 3 4 25 41 2 3 4 25

    ⎢⎢⎢⎢⎢⎢

    ⎥⎥⎥⎥⎥⎥

    x0x1x2x3x4

    ⎢⎢⎢⎢⎢⎢⎢⎢

    ⎥⎥⎥⎥⎥⎥⎥⎥

    =

    3538393835

    ⎢⎢⎢⎢⎢⎢

    ⎥⎥⎥⎥⎥⎥

  • Programaparaleloproporcionado(III)Trasrealizarelrepartoinicial:Matrix A:---- proc. 0 ----25.000 4.000 3.000 2.000 1.000 4.000 25.000 4.000 3.000 2.000 ---- proc. 1 ----3.000 4.000 25.000 4.000 3.000 2.000 3.000 4.000 25.000 4.000 ---- proc. 2 ----1.000 2.000 3.000 4.000 25.000

    Vector b:---- proc. 0 ----35.000 38.000 39.000 38.000 35.000 ---- proc. 1 ----35.000 38.000 39.000 38.000 35.000 ---- proc. 2 ----35.000 38.000 39.000 38.000 35.000

    6

  • Fasededistribuciondedatos(I).

    7

    •  Hayquecambiarel%podedistribuciondedatosEjercicio2:1-BloquesdefilasconsecuHvas 2-CíclicaporfilasVariablesA(Matrizglobal),yAloc(Matrizlocal)1-SepuedeefectuarmedianteunMPI_Scatter/* STEP 2: Distribute data (A, b) */

    MPI_Bcast(b, n, MPI_DOUBLE, 0, MPI_COMM_WORLD);

    MPI_Scatter(A[0], mb * n, MPI_DOUBLE, Aloc[0], mb * n, MPI_DOUBLE, 0, MPI_COMM_WORLD);

  • Fasededistribuciondedatos(I).

    8

    2-SepuedeefectuarmediantevariosMPI_Scatter:ParaladistribucióncíclicadelamatrizAenpprocesos:•  Lasprimeraspfilasdelamatrizvancadaunaaunproceso.Estoseríauna

    operaciónsca;er.•  Lomismoocurreconlassiguientespfilas.Yasísucesivamente.Sepuede

    hacermedianteunbucleenelqueencadaiteracióncorrespondeaunaoperaciónsca[er.Hayqueprestaratencióna:

    –  Laposición(sobrelamatrizglobalA)dondeempiezanlosdatosaenviarseencadasca;er.–  Laposición(sobrelamatrizlocalAloc)dondedebenrecibirselosdatosencadasca[er

  • Fasededistribucióndedatos(II)mpiexec –n 3 sistcf 5

    Matriz A:---- proc. 0 ---- 25.000 4.000 3.000 2.000 1.000 2.000 3.000 4.000 25.000 4.000 ---- proc. 1 ---- 4.000 25.000 4.000 3.000 2.000 1.000 2.000 3.000 4.000 25.000 ---- proc. 2 ---- 3.000 4.000 25.000 4.000 3.000

    Vector b:---- proc. 0 ---- 35.000 38.000 39.000 38.000 35.000 ---- proc. 1 ---- 35.000 38.000 39.000 38.000 35.000 ---- proc. 2 ---- 35.000 38.000 39.000 38.000 35.000

    ElrestodedatossonincorrectosyaqueaúnnohemosmodificadolosalgoritmosdeladescomposiciónLU,yderesolucióndesistemastriangulares.

    9

  • ImplementaciónparaleladescomposiciónLU

    10

    •  Comolasactualizacionesdefilas(buclei)sonindependientes,repar%remosAporfilas.•  Antesdecadaactualización,lafilapivoteencadaiteración(filak)deberáserenviadaatodoslosprocesosinvolucrados.

    •  Hay(n-1)etapas(buclek)

    •  Cadaetapamodificaelbloquei=k+1…n-1(filas)yj=k+1…n-1(columnas).

  • Implementaciónparalela(III)•  Paralelizarelbucleidelalgoritmosecuencial.–  Cadaiteraciónactualizaunafila(lafilai).–  Laactualizacióndecadafilaesindependiente.

    •  Cadaprocesoactualizalasfilasentrek-1,yn-1.•  Esnecesariou%lizarlafilapivote.Portantodebedeserenviadaatodoslosprocesos(difusión),antesdeempezarlaactualizacióndelasfilas.

    •  Necesitamosusardosfuncionesextra:–  propietario(i):procesopropietariodelafilai.–  iloc(i):indicelocalenAlocdelafilaideA.

    11

  • ImplementaciónparaleladescomposiciónLU(II)

    •  Necesitamosusardosfuncionesextra:–  propietario(i):procesopropietariodelafilai.–  iloc(i):indicelocalenAlocdelafilaideA.

    12

  • Implementaciónparaleladelossistemastriangulares(I)

    Traslafactorizaciónhayqueresolverdossistemastriangulares:

    §  ResolverelsistematriangularinferiorunidadLy=b(elementosdiagonalesdeLigualesa1)

    §  ResolverelsistematriangularsuperiorUx=y.§  Enamboscasoselvectorbsesobreescribeconlasolucióndelsistema.

    §  Ambosalgoritmossonmuysimilares.

    13

  • Implementaciónparaleladelossistemastriangulares(II)

    •  Encadaiteracióndelbucleiseactualizanmedianteelbuclejlos

    elementosdelvectorbquehaypordebajodelelementoi(s.triangularinferior)oporencima(s.triangularsuperior).

    •  Estaactualizaciónrequiereusarelelementodeb(i).

    14

    i

  • Implementaciónparaleladelossistemastriangulares(III)

    15

    Laparalelizaciónsebasaen:•  Paralelizarelbuclej,deformaquecadaprocesoactualiceloselementosdelas

    filasqueposee.•  Paraelloelvalordeb(i)deberáserpropagadopreviamenteatodoslosprocesos.•  Alfinal,todoslosprocesosacabanconunacopiadelvectordeincógnitas

    completo.

  • Modificacionesarealizar(I)

    16

    Losalgoritmosparalelosdescritossonválidosparacualquieradelasdosformasdedistribuciónestudiadas(usandolasfuncionespropietarioeiloc):

    Ejercicio3:Modificarpropietarioeiloc (ownerylocalIndex enelcódigo)paratrabajarconunadistribucióncíclicaforfilas.Elcomportamientodeestasfuncionesdebeser:•  DadouníndicedefilaidelamatrizglobalA,lafunciónownerdebedevolverelíndice

    delprocesoque%eneesafilaensumatrizlocalAloc.

    •  DadouníndicedefilaidelamatrizglobalA,lafunciónlocalIndexdebedevolverelíndicededichafilaenlamatrizlocalAlocdelprocesopropietariodelafila.

    •  TambiénesnecesariomodificarlafunciónnumLocalRows,quedevuelveelnúmero

    defilaslocalesdelamatrizenunproceso(eseunnúmeropuedeserdis%ntodemb,puestoqueelunnúmerodefilaspuedenoserdivisibleentreelunnúmerodeprocesos).

    Enestecasosefacilitaelcambioarealizar,demaneraquesolohayquedescomentarlapartedecódigoquecorrespondealadistribucióncíclica,ycomentaroeliminarlaotraparte.

  • Modificacionesarealizar(II)

    Matrix LU:---- proc. 0 ---- 25.000 4.000 3.000 2.000 1.000 0.080 0.110 0.140 24.074 3.352---- proc. 1 ----0.160 24.360 3.520 2.680 1.8400.040 0.076 0.108 0.139 24.071---- proc. 2 ---- 0.120 0.144 24.131 3.373 2.614

    Vector b after triInf:---- proc. 0 ---- 35.000 32.400 30.118 27.426 24.071---- proc. 1 ---- 35.000 32.400 30.118 27.426 24.071 ---- proc. 2 ---- 35.000 32.400 30.118 27.426 24.071

    17

    Vector b after triSup (system solution): ---- proc. 0 ---- 1.000 1.000 1.000 1.000---- proc. 1 ---- 1.000 1.000 1.000 1.000---- proc. 2 ---- 1.000 1.000 1.000 1.000

    Total accumulated error: 0.000000

    Unavezhechosloscambios,hayquecomprobarquetodofuncionacorrectamente:

  • Pruebasgrandimensión•  Efectuarpruebasconuntamañosuficiéntementegrande(entre1000y2000).

    •  Comentarlalinea: #define verboseEvitalaimpresióndedatosintermedios.

    •  Analizarcualdelasdosversionesesmaseficienteyrazonaraquepuededeberse.

    18