Вы находитесь на странице: 1из 81

IntroduccinalaProgramacin

Paralela
JosLuisGordillo
LeobardoItehua
JulioCsarClemente
CoordinacindeSupercmputo
DGTICUNAM

Introduccin
Unodelospropsitosprincipalesdeescribir
unprogramaparalelosueleserconseguirun
modelocomputacionalquepermitaestudiar
algnfenmenodeformamsrpida
Senecesitanprogramasparalelos:
Ecientes
Escalables
PortJles
Flexibles

Introduccin
Seminarios/talleresNpicosdeIPPcubren
conceptosnecesariosparahacerprogramas
ecientes
Sielproblemaestrivialmenteparalelizable,los
conceptosseaplicandeformatrivial
Perolamayoradeaplicacionesinteresantesnoson
triviales
Seminarios/talleresNpicosdeIPPcubrenaplicaciones
trivialesynotrivialesdeestosconceptos

Introduccin
Modelosdeprogramacin/arquitecturadecomputadorasparalelas
cmosonycmoseprogramanlascomputadorasparalelas?(1)

Repartodecarga
cmoseuJlizansimultneamentelosprocesadoresdeunacomputadora
paralela?(2)

Comunicaciones

cmosedenen,estructuraymidenlascomunicacionesentreprocesos?(3)

Balancedecarga
qudicultadessepuedenencontraralreparJrlacargaentreprocesadoresy
queefectosJeneunacargamalreparJda?(4)

Correctezdelprograma

culeslafuentedelasdiferenciasderesultadosentrelaversinsecuencialy
laparalela?(5)

Evaluacinderendimiento/eciencia

Speedup,eciencia,speedupsuperlineal,speedupescalado,granularidad,
paralelismo,concurrencia(6)

Introduccin
Sinembargo,losparJcipantessinexperienciaen
programacinparalelasequedanen(1)oen(2)
Loscasoscomplejossondiacilesdeasimilar,yaqueno
sehaexperimentadoconcasostriviales

Nuestraestrategiaesdividireltrabajoendos
Queelestudianteaprendaahacerprogramas
paralelos(versincompletadeesteseminario)
Queelestudianteaprendaconceptosyherramientas
parahacerbuenosprogramasparalelos(versin
completadeIPP2)

Conceptosbsicos

porquhacerprogramasparalelos?
Amediadosde1990s,losfabricantesde
supercomputadorasdeterminaronqueerams
fcilybaratoconstruirmquinasconmuchos
procesadoresenvezdeconstruirprocesadores
mspotentes
Amediadosde2000s,losfabricantesde
procesadoresdeterminaronqueesmseciente
usarprocesadoresconmuchoscoresenvezde
construirprocesadoresmsrpidos
PrcJcamenteyanosefabricanprocesadoresdeun
solocore

porquhacerprogramasparalelos?
Lassupercomputadorashanpasadoenestos15
aosdeunoscuantosmilesdeprocesadoresa
msde100,000cores

Enservidoresexistenprocesadorescon12coresyse
esperaqueestenmerosesigaincrementandoaocon
ao
qusepuedehacercontantoscores
CorrermuchosprogramasdisJntossimultneamente

LacanJdaddetrabajoporunidaddeJempoaumenta
HighThroughputCompuJng
Correrunsoloprogramausandotodosloscoresdisponibles
HighPerformanceCompuJng

porquhacerprogramasparalelos?
Nota:eslomismocorequeprocesador?
Enprocesadoresqueseusanenequiposdeescritorio
yenservidores(Opteron,Athlon,Xeon,PowerPC),son
equivalentesdesdeelpuntodevistadeprogramacin
Loscoressonprocesadorescompletosincrustadosenun
mismochip
LasdiferenciasJenenqueverconlaformaenquese
comunicancoresdeunmismochipvscoresendisJntos
chips(Segundoseminario)

EnelcasodeotroJpodedisposiJvos,comoGPUso
procesadoresCell,sondisJntos
SeprogramandeformadisJnta

qusonlosprogramasparalelos?
Crearunprogramaparalelosignicahacerun
programaqueuJlizadeformacoordinadamsdeun
elementodeprocesamiento
Procesadores,cores,etc.

TodoprogramarealizaunaciertacanJdaddetrabajo
Unasecuenciadeinstrucciones/operacionesenunooms
conjuntosdedatos

Unprogramaparaleloreparteesetrabajoentrelos
varioselementosdeprocesamientoquesepretende
uJlizar

ElhechodereparJreltrabajoseconocecomoparJcin
odescomposicin

Repartodecarga
Siserepartelasintrucciones/operaciones,seconoce
comoparJcinfuncional
Pocousada,yaqueenlamayoradeloscasoslas
funcionesquepuedenrealizarsesimultneamenteson
pocas

Siserepartelosdatos,seconocecomoparJcinde
datos
EslamsuJlizada,yaquelosconjuntosdedatossuelen
serbastantegrandes,ylasoperacionesqueserealizan
sobreellossepuedenhacerdeformasimultnea
tomosensimulacionesdedinmicamolecular

LosmecanismosparareparJrdatosdependendel
modelodeprogramacinparalela

quesunmodelodeprogramacin
paralela?
Unavistadedatosyejecuciones.
Dondelaarquitecturaylaaplicacinconvergen.
Sepuedevisualizarcomouncontrato.
Todosconocenlasreglas.
Lasconsideracionesderendimientoimportan.

Benecios:
Aplicacin:independientedearquitectura.
Arquitectura:independientedeaplicacin.

Modelosdeprogramacinparalela
MemoriacomparJda
Memoriadistribuida
HbridocomparJda/distribuida
ParJJonedGlobalAddressSpace(PGAS)
Paralelismodedatos(GPUs)

MemoriacomparJda
Variosprocesadoresusanunmismoespaciode
memoria
ComputadorasconmlJplesprocesadores
ComputadorasconmulJcores.

Existeundireccionamientodememoriacomn
paratodoslosprocesadores.
Lacomunicacinentreprocesosesmuyrpida.
Esimplcita

Noescalaaunnmeromuygrandede
procesadores.

MemoriacomparJdaII
Declaracionessimples.
Seleememoriaremotavaunaexpresin.
Seescribeenmemoriaremotaatravsdeasignacin.

Lamanipulacindedatospodrarequerir
sincronizacin.
Condicionesdecarreraesunodeloserroresmscomunes
ydiacilesdedetectar

Inconveniente:
Nopermitelaexplotacindelocalidad

Ejemplos:OpenMP,pThreads

Memoriadistribuida
Losprocesadoresdisponendesuspropios
recursos.
Ejemplo:clusterdecomputadoras.

Unsistemadeinterconexinpermiteaccederla
memoriadeotrosprocesadores.
CadaprocesadorJenecopiaslocalesdelos
datos.
Datoscomunessedebenreplicarparacada
procesador.
Seusapasodemensajes.

MemoriadistribuidaII
Losprogramadorescontrolanlosdatosyla
distribucindetrabajo.
Lacomunicacinesexplcita.
Inconveniente:
SobrecargasignicaJvasobrecomunicaciones
paratransaccionespequeas.

Ejemplo:BibliotecadepasodemensajesMPI.

MemoriadistribuidaIII
Lacomunicacinsehaceexplcitamente
mediantemensajes.
PermiteunmayorcontrolycuanJcacindela
comunicacin.

Laprogramacinresultamscomplejade
realizar.

HbridocomparJda/distribuida
Hardwaredondelosprocesadoresdisponen
dememoriacomparJdaydistribuida.
Ejemplo:clusterdenodosconmulJcores.

Paraobtenerunmejorrendimiento,necesario
uJlizarambosmodelos
MemoriacomparJdaparaprogramarcada
nodo.
Memoriadistribuidaparacomunicarentrelos
nodos.

PGAS
Tambinsedisponedehardwarehbrido.
Perosevisualizaalparadigmadememoria
comparJda.
LamemoriaM_iJeneanidadalhiloH_i.
Ayudaaexplotarlalocalidad.
Permitehacerdeclaracionessimples.
Seimplementamediantelenguajesde
programacionobibliotecas:
Ejemplo:UPC

OpenMP:Introduccin
Sepuedeusarelmodelodepasodemensajes;
pero
Existeunasolucinmsconveniente,basadaen
elparadigmadememoriacomparJda:OpenMP
Permiteprogramarsobrecomputadorascon
memoriacomparJda.
Elcompiladoresquienparalelizaelcdigo.
DebeserasisJdopordirecJvasdadasporel
programador.

OpenMP
OpenMPpermiteescribiraplicacionesmulJ
hilos(mulJthreads).
Evitaprogramarlosdemaneradirecta.

Laparalelizacinseespecicamediante:
UnconjuntodedirecJvas.
Algunasfuncionesdebiblioteca.
Unascuantasvariablesdeentorno.

Seprogramademaneramuysemejantetanto
enC/C++comoenFortran.

OpenMP
Modelodeprogramacindenominado
"ParalelismoForkJoin
Unhilomaestrogeneraunconjuntodehilosal
entrarenunazonaparalela
Alsalir,loshiloshijosterminan,yconJnala
partesecuencial.
Generalmenteelparalelismoseaade
incrementalmenteaunprogramasecuencial.

Consideracionesalprogramarcon
OpenMP
SeuJlizageneralmenteenlaparalelizacindeciclos.
Mediantelalocalizacindelosciclosmslentos.

Siesposible,latareaserepartenentrevarioshilos.
NodebeexisJrdependenciadeclculoentre
iteraciones.
Sedebenevitarlascondicionesdecarrera.
SepresentaalcomparJrdatosdeformanointencionada.

Paraevitarlo,sepuedeusarsincronizacindehilos.
Lasincronizacinimplicaserializacin,porlotantoes
costosa.

MPI
Fuecreadoen1993comoestndarabierto
porfabricantesyusuariosdesistemas
paralelos.
CadafabricanteimplementaMPIparasu
sistema.
Tambinexistenimplementacionesdecdigo
defuenteabierta
LoquepermiJeldesarrollodesistemas
paralelosdebajocosto.

CarctersJcasdeMPI
Interfazgenricaquepermiteuna
implementacinopJmizadaencualquier
sistemaparalelo.
Esunabibliotecaqueincluyeinterfacespara
Fortran,CyC++
Denevariasformasdecomunicacin,
Loquepermiteprogramarnaturalmentecualquier
algoritmoparalelo.

Ejemplo1:
Diferenciasnitasenparalelo
Laecuacindecalorenunadimensinylaforma
deresolverlomedianteelmtododelas
diferenciasnitasenparalelo.

Laecuacindecaloren1D
Describecmosedistribuyelatemperaturaen
uncuerposlidoenfuncindelJempoyel
espacio.
RepresentalaNpicaecuacinenderivadas
parciales.
Laecuacines:

Laecuacindecaloren1D
Enelintervaloespacial[A,B],concondicionesde
frontera:
u(x0,t)=ux0(t)
u(x1,t)=ux1(t)
YenelintervalodeJempo[t0,t1],concondicin
inicial
u(x,t0)=u0(x);
Sepuederesolvernumricamenteempleandoel
mtododediferenciasnitas

Laecuacindecaloren1D

Diferenciasnitasylaec.decalor
Sedivideeldominiodelespacioenunamalla
conpuntosigualmenteespaciadosdesdex1a
xN.
TambinsedivideelJempodeigualforma
desdet1atM.
Sedenotacomou(i,j)lasolucinaproximada
enelpuntox(i)enelJempot(j).

Diferenciasnitasylaec.decalor

Diferenciasnitasylaec.decalor
Enelpuntoespacialx(i)
yelJempot(j),la
ecuacindiferencial
discreJzadadeneuna
relacinentreu(i1,j),
u(i,j),u(i+1,j)yelvalor
enelfuturou(i,j+1).
Larelacinsepuede
dibujarsimblicamente

Cdigofuentegeneralidades
Lafuncinprincipalsoloinvocaaotras
funciones,norealizaclculos.
3funcionesparaelclculodeladifusinde
calorenlabarra.
Paracalcularlosvaloresconlosquese
actualizalamalla.
Paraevaluarlascondicionesiniciales.
Paraevaluarlasfronteras.

Cdigofuentesecuencial
Funcinprincipal:
intmain(intargc,char**argv){
prin{("\nEcuacindecalor,mediantemtodode
diferenciasnitas\n");
prin{("VersinenCOpenMP\n\n");
prin{("Resuelvelaecuacindelcaloren1D
dependientedelJempo.\n");
actualiza(void);//Dondesecalculatodoelproceso.
return0;
}

Cdigofuentesecuencial
*Porcindelafuncinactualiza:
Evaluacincondicionesiniciales:
for(i=0;i<n;i++)
x[i]=delta_x*(double)i;
Jme_new=TMIN;
//Seestablecenlosvaloresdelatemperaturadelabarraen
unJempot0
for(i=0;i<n;i++)
c_actual[i]=condicion_inicial(x[i],Jme_new);

Cdigofuentesecuencial
*Porcindelafuncinactualiza:
Evaluacindelosdemspuntosenlamallaycondicionesdefrontera:
for(j=0;j<NUMPASOS;j++){
for(i=1;i<n1;i++)
c_siguiente[i]=c_actual[i]+(delta_t*ALFA/delta_x/delta_x)*
(c_actual[i1]2.0*c_actual[i]+c_actual[i+1])+
delta_t*rhs(x[i],Jme_new);
Jme_new=Jme_new+delta_t;
c_siguiente[0]=condiciones_frontera(x[0],Jme_new);
c_siguiente[n1]=condiciones_frontera(x[n1],Jme_new);
for(i=0;i<n;i++)
c_actual[i]=c_siguiente[i];
}

Implementacinenparalelocon
OpenMP
Separtedelcdigofuentesecuencial.
Lasolucindetodoslospuntosenlamallase
calculaempleandodosciclos,unodeellos
anidado.
Unoparadesplazamientoenelespacio,yelotro
paradesplazamientoenelJempo
Elcicloexternoesdependientedelasiteraciones
previas.
Sloseparalelizanlosciclosrelacionadosconel
espacio.

CdigofuenteOpenMP
Sigueelmismoesquemaqueelsecuencial.
Sloseparalelizanlosciclosqueson
independientesentreiteraciones.
LasdirecJvassoloseaplicanenlafuncin
actualiza.

CdigofuenteOpenMP
Modicacionesalsecuencialenactualiza:
#pragmaompparallelforshared(x,delta_x,n)private(i)
for(i=0;i<n;i++)
x[i]=delta_x*(double)i;
...
#pragmaompparallelforshared(c_actual)private(i)
for(i=0;i<n;i++)
c_actual[i]=condicion_inicial(x[i],Jme_new);

CdigofuenteOpenMP
Elcicloentrepasosnoseparaleliza.
for(j=0;j<NUMPASOS;j++){
//Separalelizaelclculo
#pragmaompparallelforshared(c_siguiente)private(i)
for(i=1;i<n1;i++)
c_siguiente[i]=c_actual[i]+
(delta_t*ALFA/delta_x/delta_x)*
(c_actual[i1]2.0*c_actual[i]+
c_actual[i+1])+
delta_t*rhs(x[i],Jme_new);

CdigofuenteOpenMP
*Yseparalelizalaactualizacin
#pragmaompparallelforshared(c_actual)private(i)
for(i=0;i<n;i++)
c_actual[i]=c_siguiente[i];

ImplementacinenparaleloconMPI
SeuJlizaunaformadedescomposicinde
dominios.
ParaPprocesos,sedivideelintervalo[A,B]en
Psubintervalosiguales.
CadaprocesocongurarlaplanJllade
ecuacionescasidemaneraindependiente.
Laexcepcin:cadaprocesonecesitarecibir
unacopiadelasolucindelosvaloresdelos
nodosvecinosalaizquierdayladerecha.

ImplementacinenparaleloconMPI

CdigofuenteMPI
EnlafuncinprincipalseinicializayterminaelambienteMPI
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&mi_id);
MPI_Comm_size(MPI_COMM_WORLD,&mis_proceso);

CdigofuenteMPI
Lasdemsmodicacionessonenlafuncinactualiza:
Seconsideraelpropioprocesoytodoslosprocesos:
//Elintervalo[0.0,1.0]sedivideenporcionesequivalentes
//amayornmerodeprocesos,segmentosmspequeos.
for(i=0;i<=n+1;i++){
x[i]=((double)(id*n+i1)*XMAX+
(double)(p*nid*ni)*XMIN)/
(double)(p*n1);
}

CdigofuenteMPI
*Losclculosdeinicializacinlosrealizantodoslosprocesos:
calor[0]=0.0f;
for(i=1;i<=n;i++)
calor[i]=condicion_inicial(x[i],Jme);
calor[n+i]=0.0;
Jme_delta=(TFINTINI)/(double)(j_maxj_min);
x_delta=(XMAXXMIN)/(double)(p*n1);

CdigofuenteMPI
*Comoesmemoriadistribuida,esnecesariocomparJr
fronteras.
*Secompartehacialaizquierda:
...
if(0<id){
eJqueta=1;
MPI_Send(&calor[1],1,MPI_DOUBLE,id1,eJqueta,
MPI_COMM_WORLD);
}
if(id<p1){
eJqueta=1;
MPI_Recv(&calor[n+1],1,MPI_DOUBLE,id+1,eJqueta,
MPI_COMM_WORLD,&status);
}

CdigofuenteMPI
*secompartenlasfronteras.ahorahacialaderecha:
...
if(id<p1){
eJqueta=2;
MPI_Send(&calor[n],1,MPI_DOUBLE,id+1,eJqueta,
MPI_COMM_WORLD);
}
if(0<id){
eJqueta=2;
MPI_Recv(&calor[0],1,MPI_DOUBLE,id1,eJqueta,
MPI_COMM_WORLD,&status);
}

CdigofuenteMPI
*Finalmenteseactualizanlosvaloresdefrontera:
...
if(0==id)
calor_nuevo[1]=condicion_frontera(x[1],Jme_new);
if(id==p1)
calor_nuevo[n]=condicion_frontera(x[n],Jme_new);

Ejemplo2:
SeguimientosdeparNculas

JuegodeparNculas
ExisteunciertonmerodeparNculasenun
espaciodelimitado
LasparNculassemuevenporfuerzas
generadasporotrasparNculas:
Enestejuego,f_ij=1/d_ij,x_i(t+1)=x_i(t)+f_i(t)
f_i(t)eslasumadelasfuerzasprovocadaspor
todaslasparNculassobrelaparNculai

JuegodeparNculas
Parareducirelnmerodetrminosencadaf_i,
sesiguelasiguienteestrategia:
Dividirelespacioenregiones
CadareginJeneunnmerodeterminadode
parNculas
CadareginJeneuncentro(elcentroidedelas
parNculasdelaregin)
f_i=f_i_l+f_i_g
f_i_leslafuerzaprovocadaporlasparNculasvecinas
f_i_geslafuerzacalculadaaparJrdeloscentrosde
todaslasdemsregiones

porquesperarhastaelnalparamoverlasparNculas
asunuevaregin?

Repartodecarga
Eltrabajosepuededividirdedosmaneras:

ReparJendolasparNculasentrelosprocesadores
ReparJendolasregionesentrelosprocesadores

Esnecesarioevaluarcualgeneramsparalelismoy
menoscomunicaciones
Enestecasoejemplicamoselrepartoderegiones
Cadaprocesador

CalculalasfuerzaslocalesyglobalesdelasparNculasqueestnen
susregiones
MuevelasparNculasqueestnensusregiones
Calculaloscentrosdesusregiones

cmosellevaacabolareubicacindeparNculas?

ImplementacinconOpenMP
Estaestrategiasepuedeimplementaren
OpenMPdeformasencilla
Simplementehayqueparalelizarlosciclosque
recorrenlasregiones
Lospuntosaconsiderarson:
Cualesvariablesdebenserprivadas
EvitarsobreescribirenvariablescomparJdas

Calculamosloscentrosenparalelo(cadahebrarecibeunaporcinderegiones)
regiones,parts_regionycentrossonvariablescomparJdas
CadahebraescribesurespecJvaynotraslapadaporcinderegiones

Calculamosfuerzaslocales,globalesymovimientosenparalelo
Cadahebraseencargadesuporcinderegiones
Encadaregin,secalculalaacumulacindefuerzasparacadaparNcula
fuerzaeslocalacadahebra

nparts_cambioyparts_cambiosoncomparJdas
SidoshebrasobJenenelmismovalordenparts_cambioescribirnenlamisma
casillaenparts_cambio
Debenmodicarseyasignarseporslounahebraalavez

EltrabajoenparaleloterminaalmovertodaslasparNculas
Larelocalizacinsehaceenformaserial

ImplementacinconMPI
LaimplementacinusandoMPIrequiere
denirlaspartesdelasestructurasdedatos
quecadaprocesovaausaryarequerir
Cadaprocesousayactualizaunapartedela
estructuraderegiones
Cadaprocesorequiereunaversinactualizadade
laestructuradecentros
Cadaprocesorequiererecibirunaestructuracon
susnuevasparNculassieselcaso

Вам также может понравиться