p3 sesion 4(2018-2019) - Technical University of...
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