Vous êtes sur la page 1sur 43

COMPUTACIN DE ALTAS PRESTACIONES

Anlisis de algoritmos paralelos

REFERENCIAS Foster,cap3 Kumar,Grama,Gupta,Karypis,cap4 Wilkinson,Allen,cap2.3y2.4

Anlisis de algoritmos paralelos


Losprocesadoresparalelosseusanparaacelerarla resolucindeproblemasdealtocostecomputacional. Lafinalidadprincipalconsisteenreducireltiempode ejecucin: sieltiemposecuencialt(n) seintentarqueusandopprocesadoreseltiempo sereduzcaat(n)/p. Veralgunasmedidasquenosdanideadela"bondad" deunalgoritmoparalelo.

Tiempo secuencial
El tiempo de ejecucin de un programa secuencial dependede:
tamaodelaentrada, compilador, mquina, programador,...,

sinosolvidamosdevaloresconstantesdependientesdel sistema(porejemploelcostedeunaoperacinaritmtica enlamquinadondeejecutamoselprograma)podemos considerareltiempofuncindeltamaodelaentrada: t(n). El tiempo desde que empieza la ejecucin del programa hastaqueacaba.

Tiempo de ejecucin paralelo


En un programa paralelo la estimacin del tiempo es mscompleja. Ademsdelosparmetrosanteriores,dependede: nmerodeprocesadorest(n,p), delamaneraenqueestnconectadosentres (topologa) yconlosmdulosdememoria (memoriacompartidaodistribuida) Es el tiempo transcurrido desde que empieza la ejecucin del primero de los procesadores hasta que acabaelltimodeellos.

Tiempo de ejecucin paralelo


DIFICULTADES: No siempre es fcil determinar el orden en que los procesadoresempiezanyacaban. Alolargodelaejecucin deunprogramaparalelohay puntosdesincronizacindelosquenosiemprepodemos determinar su duracin al no saber en el orden en que vanallegarlosdistintosprocesosaestospuntos.

Tiempo de ejecucin paralelo


Esquemadeprogramaparalelo:
Computacin1 Comunicacin1 Computacin2 Comunicacin2 ...
(sincronizacinenmemoriacompartida)

t(n,p)=ta(n,p)+tc(n,p) ta(n,p):sumadelostiemposdelasdistintaspartesde computacin tc(n,p):sumadelostiemposdelasdistintaspartesde comunicacin

Tiempo de ejecucin paralelo, ejemplo


Programaparaleloendosprocesadores:
Computacin1 2 Comunicacin1 1 2 1 3 1

Computacin2 3 Comunicacin2 1

t(n,p)=ta(n,p)+tc(n,p)=7(sisehaceporseparado) treal(n,p)=ta(n,p)+tc(n,p)+toverhead(n,p)=8

Tiempo de ejecucin paralelo, ejemplo


2 1 3

t(n,p)=ta(n,p)+tc(n,p)=15 treal(n,p)=ta(n,p)+tc(n,p)tsolapamiento(n,p)=14

Tiempo de ejecucin
Overheaddebidoa: sincronizacin, puestaenmarchadelosprocesos, sobrecargadelareddecomunicacin, ... Sesueleconsiderar: t(n,p)=ta(n,p)+tc(n,p)+to(n,p)ts(n,p) Minimizareltiempodeoverhead. Maximizarelsolapamiento.

Secuencial:t(n)=n1

Suma de n nmeros

Paraleloconn/2procesadores,comomnimot(n)/(n/2)=2
EncadaPi,i=0,1,...,n/21 inicio=2*i desplazamiento=1 activo=true parak=1,2,...,logn siactivo a[inicio]=a[inicio]+a[inicio+desplazamiento] desplazamiento=desplazamiento*2 finsi siimoddesplazamiento<>0 activo=false finsi finpara

Suma de n nmeros
Pasos:logn Trabajoadicional(overhead):
Comprobacindesielprocesadortrabaja, Usodelasvariables, Actualizacindelasvariables.

Conn=64 sicadapasosecuencialyparaleloigualcoste: t(n)8*t(n,p) sicadapasosecuencialcoste2yparalelocoste5: t(n)3.5*t(n,p)


Yenmemoriadistribuidaproblemadeaccesoalosdatos.

Cadaprocesadortienedosvalores,ayb
EncadaPi,i=0,1,...,n/21 desplazamiento=1 activo=true parak=1,2,...,logn1 siactivo a=a+b desplazamiento=desplazamiento*2 siimoddesplazamiento<>0 activo=false enviaraaidesplazamiento/2 enotrocaso recibirenbdei+desplazamiento/2 finsi finsi finpara sii=0 a=a+b finsi

Suma de n nmeros. En hipercubo

Suma de n nmeros. En hipercubo

P0 01 P2 45

P1 23 P3 67

P0 11 P2 95

P1 53 P3 137

P0 15 P2 913

P1 53 P3 137

P0 65 P2 2213

P1 53 P3 137

P0 622 P2 2213

P1 53 P3 137

P0 2822 P2 2213

P1 53 P3 137

Pasos:logn

Suma de n nmeros. En hipercubo

Trabajoadicional(overhead):

Comprobacindesielprocesadortrabaja, Usodelasvariables, Actualizacindelasvariables, Comprobacindeenviarorecibir, Envoorecepcin.

Conn=64 sicadapasosecuencialcoste2yparalelocoste7: t(n)2,5*t(n,p) sits=2*twytw=2*tc: t(n)1,5*t(n,p) sits=10*twytw=10*tc: t(n)0,16*t(n,p)

Suma de n nmeros. En malla

Suma de n nmeros. En malla


Sip=2n 2*(1+2+22+...+2n/21)=2n/2+1comunicaciones Conn=64 sits=2*twytw=2*tc: t(n)1,4*t(n,p) sits=10*twytw=10*tc: t(n)0,1*t(n,p)

Suma de n nmeros. En anillo

Sip=2n 1+2+22+...+2n1=2n1=p1comunicaciones Conn=64 sits=2*twytw=2*tc: t(n)0,74*t(n,p) sits=10*twytw=10*tc: t(n)0,04*t(n,p)

Coste de comunicaciones
Sondelossiguientesrdenes: Comunicacinvecinos Comunicacintodos hipercubo logp/2 logp/2 malla 2*p logp/2 anillo p1 logp/2 red p1 Adems,laredpuedeestarcongestionadaalhaber muchosmensajesporhabermuchosprocesadores. Problemas:
Problemadepococosteynoapropiadopararesolveren paralelo, granularidadpequea,slocomoayudaparadisearun programaperonocomoprogramafinal.

Causas de reduccin de las prestaciones


Contencindememoria:
Enmemoriacompartidaelaccesoadatoscomunesoqueestnenel mismobloquedememoriaproducircontencin. Silosdatossondelecturapuedenohabereseproblema. Enelejemplolosprocesadoresescribenenzonasdistintas.Nohay problemadecoherencia,peropuedehaberdecontencinsihaydatos enlosmismosbloquesdememoria.

Cdigosecuencial:

Puedehaberparteimposibledeparalelizar,comopuedeserlaI/O. Enelejemplolainicializacindevariables.Adems,silosdatosestn inicialmenteenunprocesadoryhayquedifundirloselcosteeslineal.

Tiempodecreacindeprocesos:

Elprogramaempiezaaejecutarseconunprocesoqueponeenmarcha losdems. Elcostedecreacindelosprocesospuedeserimportantesila granularidaddestosespequea.

Causas de reduccin de las prestaciones


Computacinextra:
Siseobtieneprogramaparaleloapartirdesecuencial,sonnecesarias computacionesadicionalespor: usodevariablesdecontrol, comprobacindeidentificadoresdeproceso, clculosadicionalesocomunicacionesparaobtenerdatos calculadosporotroprocesador,...

Comunicaciones:

Enmemoriadistribuida,estiempoadicionalalaritmtico. Puedenimplicartrabajodeprocesadoresintermedios.

Tiempodesincronizacin:

Cuandounprocesotienequeesperaraqueestndisponiblesdatos procesadosporotro. Conllevacomunicacionesenmemoriadistribuida.

Causas de reduccin de las prestaciones


Desbalanceodelacarga:
Elvolumentotaldelacomputacinnosedistribuyeporigualentre todoslosprocesadores: enelejemplo,enelprimerpasotrabajantodosperoenlos pasos siguientesvadisminuyendoelnmerodeprocesadoresquetrabajan, tambinesposiblequepartamosdeunaentradaquenose puedebalancear,porejemplositenemos12datospara8 procesadores, oqueelvolumendedatosvarealolargodelaejecucin,con lo quesenecesitarabalanceodinmico.

Granularidad de la computacin
Usodemuchosprocesadoresnoesrealista:
Nodispondremosdetantosprocesadores. Aunquedispongamosdeelloshaycadadelasprestaciones.

Lagranularidaddelsistema(sistemafsico+algoritmo) indicalacantidaddecomputacinydatosasignadosa cadaprocesador:

Granofino:siacadaprocesadorseasignanpocosdatososerealiza pocacomputacinentrecomunicaciones. Granogrueso:siacadaprocesadorseasignanmuchosdatosose realizamuchacomputacinentrecomunicaciones.

Interesaprogramacinparalelacuandoelparalelismoes degranogrueso.

EncadaPi,i=0,1,...,p1 suma=0 paraj=i*n/p,...,(i+1)*n/p1 suma=suma+a[j] finpara sincronizacin a[i]=suma inicio=i*2 desplazamiento=1 siimod2=0 activo=true enotrocaso activo=false finsi parak=1,2,...,logp1 siactivo a[inicio]=a[inicio]+a[inicio+desplazamiento] desplazamiento=desplazamiento*2 finsi siimoddesplazamiento<>0 activo=false finsi finpara

Suma de n nmeros con p procesadores

EncadaPi,i=0,1,...,p1 suma=0 paraj=0,...,n/p1 suma=suma+a[j] finpara siimod2=0 recibirenbdei+1 activo=true enotrocaso enviarsumaai1 activo=false finsi desplazamiento=2 parak=1,2,...,logp2 siactivo suma=suma+b desplazamiento=desplazamiento*2 siimoddesplazamiento<>0 activo=false enviarsumaaidesplazamiento/2 enotrocaso recibirenbdei+desplazamiento/2 finsi finsi finpara sii=0 suma=suma+b finsi

Suma, en memoria distribuida

Enmemoriacompartidatodaslasvariablessonlocales salvoelarraya. Enmemoriadistribuidalasincronizacinporelpasode mensajes. Eltamaodelproblema(n)esmltiplodelnmerode procesadores(p).Sepuedegeneralizarfcilmente. t(n,p)=2*n/p*tc+6*(logp1)*(ts+tw)


sip<<<npodemostenerencuentaslolostrminosde mayorordenyt(n)/t(n,p)=p,queeslomejorquesepuede obtener parair10vecesmsrpido: conts=2*twytw=2*tc, sin=1000000,100000,10000,p=10 conts=10*twytw=10*tc,esn=330*p*logp sin=1000000p=10,100000p=11,10000noposible

Suma de n nmeros con p procesadores

Midelagananciadevelocidadqueseobtieneconun programaparalelo. Eselcocienteentreeltiemposecuencialyelparalelo:

Speed-up

S(n,p)=t(n)/t(n,p) Qut(n)? Eldelmejoralgoritmosecuencialqueresuelveel problema,peroculeselmejoralgoritmosecuencial? dependedeltamaodelaentrada,distribucindelosdatos, mquina,...,ypuedenoconocerse. Eldelmejoralgoritmosecuencialconocido.Perodepende delosmismosparmetrosanteriores. Tiempodeejecucinenunprocesadordelalgoritmo paralelo.Peropuedequeelmejoresquemaparaparalelizar noseabuenoensecuencial. Eltiempodeejecucindeunalgoritmosecuencial razonablementebueno.Habrqueindicarculseusa.

Elspeedupsermenorqueelnmerodeprocesadores usado.Sinopodrahacerseunalgoritmosecuencialmejor queelqueseusa,simulandoelalgoritmoparalelo. Enalgunoscasospuedehaberspeedupsuperlinealpor mejorgestindelamemoriaalusarmsprocesadores.


Parauntamaode problemafijosealeja delvalorptimoal aumentarelnmero deprocesadores. Paraunnmerode procesadoresfijo aumentaalaumentar eltamaodel problema.
40 35 30 25 20 15 10 5 0 1000 2000 3000 4000 5000 p=10 p=20 p=30 p=40 p=50

Speed-up

Speed-up, suma con n/2 procesadores


Enmemoriacompartida: n/logn Enhipercubo,ymallaoanilloconcomunicaciones directas: n/((1+ts+tw)*logn) Enmallasincomunicacionesdirectas: n/(logn+(ts+tw)*2*n) Enanillosincomunicacionesdirectasyenred: n/(logn+(ts+tw)*n)1/(ts+tw)

Daideadelaporcindetiempoquelosprocesadoresse dedicanatrabajotil. Eselspeeduppartidoporelnmerodeprocesadores:


E(n,p)=S(n,p)/p=t(n)/(p*t(n,p)) Valorentre0y1. 1 Parauntamaode problemafijosealeja 0,9 0,8 delvalorptimo(1)al 0,7 aumentarelnmero 0,6 deprocesadores. 0,5 Paraunnmerode 0,4 procesadoresfijo 0,3 0,2 aumentaal aumentareltamao 0,1 0 delproblema.
1000

Eficiencia

p=10 p=20 p=30 p=40 p=50

2000

3000

4000

5000

Eficiencia, suma con n/2 procesadores


Enmemoriacompartida: 2/logn0 Enhipercubo,ymallaoanilloconcomunicaciones directas: 2/((1+ts+tw)*logn)0 Enmallasincomunicacionesdirectas: 2/(logn+(ts+tw)*2*n)0 Enanillosincomunicacionesdirectasyenred: 2/(logn+(ts+tw)*n)0

Speed-up, suma con p procesadores


Conpfijo Enmemoriacompartida: n/(n/p+logp)p Enhipercubo,ymallaoanilloconcomunicaciones directas: n/(n/p+(1+ts+tw)*logp)p Enmallasincomunicacionesdirectas: n/(n/p+logp+(ts+tw)*2*p)p Enanillosincomunicacionesdirectasyenred: n/(n/p+logp+(ts+tw)*p)p

Eficiencia, suma con p procesadores


Conpfijo Enmemoriacompartida: n/(n+p*logp)1 Enhipercubo,ymallaoanilloconcomunicaciones directas: n/(n+(1+ts+tw)*p*logp)1 Enmallasincomunicacionesdirectas: n/(n+p*logp+(ts+tw)*2*p*p)1 Enanillosincomunicacionesdirectasyenred: n/(n+p*logp+(ts+tw)*p2)1

Representaeltiempo(eltrabajo)realizadoportodoel sistemaenlaresolucindelproblema. Eseltiempodeejecucinporelnmerodeprocesadores usados:


C(n,p)=p*t(n,p) Enalgoritmoptimocoincidiraconeltiemposecuencial,pero engeneralesmayor. Ladiferenciasellamafuncinoverhead: to(n,p)=C(n,p)t(n)=p*t(n,p)t(n) Esdistintodelaideadeoverheadvistaanteriormentey difcilmentemedible.

Coste

Distribucin del trabajo


Esimportanteparamejorarelbalanceo. Enmemoriadistribuidapuedereducirelcostedelas comunicacionesasignandodatosquesecomunican frecuentementeaprocesadoresvecinos. Evitacomunicaciones,congestindelaredycolisiones. Enmemoriacompartidapuedeinfluirenelcostedelos accesosamemoria,siprocesadoresdistintosaccedena bloquesdistintos.Normalmentequelosprocesadores accedanabloquesdedatos.Estoademsmejoraelusode lajerarquadememoria.

Distribucin de datos. Suma de n nmeros. En malla


5 1 9 13 4 0 8 12 6 2 10 14 7 3 11 16

Distribucin de datos. Suma de n nmeros. En anillo


7comunicaciones

5comunicaciones

Paraunsistemaparalelointeresaquelasprestacionessesigan manteniendoenciertamedidaalaumentareltamaodesistema.
Nosepuedeseguirmanteniendolasprestacionesmanteniendo eltamaodelproblemafijoyaumentandoelnmerode procesadores. Setratardemantenerlasprestacionesalaumentareltamao delsistemaperoaumentandoeltamaodelproblema.Los sistemas(fsicosolgicos)quecumplenestosedicen escalables. Laideaes,paraundeterminadoprograma,sercapacesde determinarsienelfuturo,cuandoaumenteelnmerode procesadoresyeltamaodeproblemasquesequierenresolver, seseguirnmanteniendolasprestaciones.

Escalabilidad

Funcin de isoeficiencia
Da idea de cmo debe crecer la entrada del problema enfuncindelnmerodeprocesadoresparamantenerla eficienciaconstante.
to(n,p)=p*t(n,p)t(n) t(n,p)=(to(n,p)+t(n))/p E(n,p)=t(n)/(to(n,p)+t(n)) t(n)=(E(n,p)/(1E(n,p))*to(n,p)=K*to(n,p) Para obtener cmo debe crecer n en funcin de p para mantener la eficiencia constante basta comparar el tiempo secuencialconlafuncinoverheaddelparalelo.

Isoeficiencia, suma con p procesadores


Sinconstantes,puesinteresalaformaenquecrece Enmemoriacompartida,hipercubo,ymallaoanillocon comunicacionesdirectas: t(n)=nto(n,p)=n+p*logp Funcindeisoeficiencia:p*logp Enmallasincomunicacionesdirectas: t(n)=nto(n,p)=n+p*logp+p*p Funcindeisoeficiencia:p1.5(lamayor) Enanillosincomunicacionesdirectasyenred: t(n)=nto(n,p)=n+p*logp+p2 Funcindeisoeficiencia:p2(lamayor)

Paramantenerlasprestacionesalvariardep1ap2 procesadores,eltamaodebeaumentarproporcionala f(p2)/f(p1)


Procesadores: 4a16 16a64 6 64a256 5.33

Isoeficiencia, suma con p procesadores

memoriacompartida, hipercubo,ymallaoanillo 8 concomunicaciones directas mallasin comunicacionesdirectas 8

8 16

8 16

anillosincomunicaciones 16 directasyenred

Todosescalables.Unosmsqueotros.

Estudio experimental de la escalabilidad


Se estudia el nmero de operaciones por segundo (flops)porprocesador: Variando el tamao de la entrada al variar el nmero de procesadores, Outilizandoelmximotamaodelaentradaquecabeen lamemoriadelsistema proc tam flops 1 100 100 5 50099 25 2500 96 125 12500 91 proc 1 5 25 125 tam flops 100 100 500102 2500 90 12500 46

Diseo de experimentos que nos permitan obtener conclusiones:


Determinar qu tipo de conclusiones se quiere obtener: encuantoaspeedup,escalabilidad. Definir el rango de los experimentos: nmero de procesadoresytamaodelproblema. Compararlosresultadosexperimentalesconlostericos. Sinocoincidenrevisarlosestudiostericosolaformaen quesehanhecholosexperimentos.

Estudio experimental

Puedenconsistiren: Estudiarelprogramacompleto. Estudiar el comportamiento en los distintos procesadores:balanceodelacarga?sincronizacin?... Dividir el programa en partes para estudiarlas por separado.

Comparacin estudio terico-experimental


Se pueden estimar los valores constantes en las frmulas tericas: En particular ts y tw se obtienen con un pingpong, o pueden tener valores distintos para distintas operaciones decomunicacin. Elcostedelacomputacinsepuedeestimarejecutando partedelprogramaenunprocesador. Ajustedelmodelotericocondatosexperimentales: Obtener valores constantes en el estudio terico haciendo ajuste de mnimos cuadrados con resultados experimentales. Estudioasinttico:comportamientoteniendoencuentael trminodemayorordendelafrmulaterica,compararlo conlagrficaexperimental.

Vous aimerez peut-être aussi