Академический Документы
Профессиональный Документы
Культура Документы
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