TFGENENGINYERIAINFORMA`TICA,ESCOLAD’ENGINYERIA(EE),UNIVERSITATAUTO`NOMADEBARCELONA(UAB) ´ PARALELIZACION DEL PROBLEMA DE ´ SATISFACCION DE RESTRICCIONES UTILIZANDO ARCO CONSISTENCIA Jordi Alcaraz Rodriguez Resum– El problema de satisfaccio´n de restricciones se utiliza en varios campos de la informa´tica: Inteligencia Artificial, planificacio´n de recursos, etc., y se considera NP-completo. A causa de la complejidad computacional de este problema es necesario utilizar buenas heur´ısticas y paralelismo para reducir el tiempo de co´mputo. En este proyecto se realizara´n varias implementaciones pa- ralelasparamaximizarelusodelhardwaredisponibleyreducireltiempoderesolucio´ndelproblema. Paraules clau– Problema de satisfaccio´n de restricciones, computacio´n paralela, Xeon Phi, a´rboldebu´squedaenprofundidad Abstract–InsomefieldsrelatedtoComputerSciencetheConstraintSatisfactionproblemisused,in exemple:ArtificialIntelligence,resourceplaning,etcetera,andthisproblemisNP-complete.Because of it’s computational complexity there is a need to use good heuristics and paralelism to reduce the time to solve it. In this project some parallel implementations will be performed to maximize the use oftheavailablehardwareandminimizethetimeneededtosolvethisproblem. Keywords– Constraint Satisfaction Problem, CSP, parallel computing, Xeon Phi, Depth-first search (cid:70) alnecesitargrancapacidaddeco´mputoparasuresolucio´n. 1.1. Organizacio´ndeldocumento 1 INTRODUCCIO´N El resto del documento sigue la siguiente organizacio´n: En los u´ltimos an˜os los fabricantes de procesadores de- En la seccio´n 2, “Estado del Arte”, se explicara´ el proble- cidieron dejar de incrementar la velocidad de reloj para maCSPy,tambie´n,desistemasymodelosparalelos.Enla aumentar el rendimiento. Este incremento ocasiona varios seccio´n 3, “Objetivos”, se detallara´n los objetivos de este problemas,elprincipaleselaumentodelconsumoenerge´ti- proyecto. Y en la seccio´n 4, “Metodolog´ıa”, como se lle- co, el cual eleva la temperatura[1][2]. La solucio´n adopta- ganacumplir losobjetivos.Enla seccio´n5,“Desarrollo”, da fue cambiar la arquitectura de los procesadores, incre- sedescribeelalgoritmosecuencialylosmodelosutilizados mentandoelnu´merodenu´cleosdeejecucio´n.Estecambio para paralelizarlo. En la seccio´n 6, “Experimentacio´n”, se afectaalosmodelosdeprogramacio´nexistentesysurgela explicara´nlosexperimentosrealizadosyelhardwareutili- necesidaddeprogramacio´norientadaasistemasparalelos. zado.Enlaseccio´n7,“Resultados”,seexpondra´nlosresul- Alaparecerunnuevomercadoorientadoalparalelismo, tadosobtenidosyserazonara´n.Finalmente,enlaseccio´n8, algunas empresas, como NVIDIA e Intel, desarrollan nue- “Conclusiones”,seresumira´nlosresultadosdelproyecto. vos coprocesadores. Estos sistemas se basan en la utiliza- cio´n de una mayor cantidad de nu´cleos de co´mputo, y son 2 ESTADO DEL ARTE aptosparaaplicacionesconungranniveldeparalelismo. Con el fin de analizar las mejoras e inconvenientes de Este apartado se divide en dos partes. Primero se expo- estosnuevossistemas,seutilizara´unproblemadenominado ne el estado del arte del problema CSP y, para finalizar, el ProblemadeSatisfaccio´ndeRestricciones,conocidoconel estadodelartedelossistemasparalelos. nombredeConstraintSatisfactionProblema(CSP),elcual puede beneficiarse de este nuevo modelo de programacio´n 2.1. ConstraintSatisfactionProblem E-maildecontacte:[email protected] En inteligencia artificial, y en otras a´reas de la compu- Mencio´realitzada:EnginyeriadeComputadors Treballtutoritzatper:JuanCarlosMoure(CAOS) tacio´n, muchos problemas pueden ser vistos como proble- Juniode2015,Escolad’Enginyeria(UAB) 2 EE/UABTFGINFORMA`TICA:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NRESTRICCIONESCONARCOCONSISTENCIA mas de satisfaccio´n de restricciones[3][4]. Los problemas 2.2. Sistemasparalelos desatisfaccio´nderestriccionessecomponende: Actualmente la mayor´ıa de ordenadores tienen procesa- Conjuntofinitodevariables,X={x ,x ,...,x }. dores con multiples nu´cleos de procesamiento. Con el fin 1 2 n deaprovechardemaneraeficientelosprocesadores,losal- Conjunto de Dominios de cada variable, D , D , ..., goritmossecuencialesdebendividireltrabajoarealizarde 1 2 D , donde cada dominio, a su vez, es el conjunto de manera eficiente entre los diferentes nu´cleos del sistema, n valoresposiblesdeunavariable. surgiendo la necesidad de nuevos modelos de programa- cio´n. Conjunto de restricciones (Constraints) entre varia- bles,C ,C ,...,C . 1 2 k 2.2.1. Procesadoresmulticoredepropo´sitogeneral Las restricciones son relaciones entre variables que limi- La arquitectura utilizada para paralelismo entre nu´cleos tan los valores va´lidos. Un ejemplo de restriccio´n es All- deco´mputosedenominaMIMD(MultipleInstructionMul- different(X ,X ,...,X ),indicandoquecadavalordiferente tipleData).MIMDpermiteacadanu´cleoejecutardiferen- 1 2 n u´nicamentepuedeasociarseaunavariable. tesinstruccionesadiferentesdatosdeformasimulta´nea. Una de las te´cnicas ma´s utilizadas para la resolucio´n de Paraincrementarelparalelismodentrodecadanu´cleode CSPs es la exploracio´n en profundidad de un a´rbol de so- co´mputosecreo´elprocesamientoSIMD(SingleInstruction luciones y volver a los nodos anteriores con backtracking. Multiple Data). El procesamiento SIMD, tambie´n conoci- Adema´s se utilizan te´cnicas de poda (pruning) para limi- do como vectorizacio´n, permite ejecutar la misma instruc- tarlacantidadtotaldeasignacionesdevaloresavariablesa cio´nsobrediferentesdatosdeformasimulta´neaenunu´nico explorar[5]. nu´cleo.Lacantidaddedatosquepuedenserprocesadosde Este problema se considera NP-completo debido al cre- forma paralela, y que componen el vector SIMD, depende cimiento exponencialde ca´lculo necesariopara resolverel deltaman˜odeloselementosdelvectorydeltaman˜odelos problemaalaumentarelnu´merodevariables. registrosSIMDdelprocesador[7]. Un ejemplo sencillo de CSP es el problema de las N- Delamismamaneraqueenunprocesadorsepuedente- Reinas. Este problema consiste en colocar N reinas en un nermu´ltiplesnu´cleosdeco´mputounordenadorpuedetener tablerodetaman˜oNxNdemaneraqueningunapuedaatacar ma´sdeunprocesador.Lossistemasconvariosprocesadores aotra.Lacodificacio´nutilizadaennuestraimplementacio´n sedenominansistemasmultisocket.Debidoaestosepueden eslasiguiente: dividirlossistemasMIMDendosgrupossegu´nsuorgani- zacio´ndememoria[8]: Variables,X={x ,x ,...,x }.Unavariableporcada 1 2 n reina y asignada a una fila. El valor de la variable x UniformMemoryAcces(UMA).Todaslasunidadesde i indicalacolumnadelareinadelafilai-e´sima. co´mputo del sistema comparten la memoria principal ytienenlamismalatenciam´ınima(sincolisiones)para Dominio comu´n para todas las variable, D =(1, 2, ..., accederamemoria. 1 N).D =D =...=D . 1 2 n Non-Uniform Memory Acces (NUMA). En este caso Lasrestriccionessepuedenverenlafigura1ysonlas lamemoriaseencuentradistribuidaenbloquesycada siguientes: bloque asociado a uno de los diferentes procesadores del sistema. La latencia m´ınima (sin colisiones) para • Diferente-Columna(X , X , ..., X ). Todas las accederamemoriavar´ıasegu´nelprocesadorquehaga 1 2 N variablesseasignanacolumnasdiferentes. la peticio´n y el bloque que deba responder a la peti- cio´n. Es la arquitectura utilizada con ma´s frecuencia • Diferente-Diagonal(X , X , ..., X ). Todas las 1 2 N porlossistemasmultisocket. variablesseasignanadiagonalesdiferentes. Enalgunosprocesadoresmulticore,Intelhaintroducido la tecnolog´ıa Hyper-Threading. Esta tecnolog´ıa permite a un nu´cleo de co´mputo ejecutar dos threads de manera si- multa´nea.Graciasatenerma´sdeunthreadejecuta´ndoseen elmismonu´cleoseaumentaelusodelosrecursosalpermi- tirejecutarinstruccionesdethreadsdiferentesqueesconden los tiempos de espera producidos por fallos de cache´ o de prediccio´ndesaltos,entreotros(Figura2)[9]. 2.2.2. CoprocesadorIntelXeonPhi Adema´sdelosprocesadoressepuedenutilizarcoproce- sadores para recudir el tiempo de ejecucio´n de los progra- mas paralelos. El coprocesador creado por Intel recibe el nombredeIntelXeonPhiysedisen˜o´ paraaumentarelren- Figura1:Reinaysusrestricciones[6]. dimientoenaplicacionesqueobtenganunabuenaescalabi- lidadenprocesaroresIntelXeon[10]. JORDIALCARAZRODRIGUEZ:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NDERESTRICCIONESUTILIZANDOARCOCONSISTENCIA 3 2.2.3. Modelosdeprogramacio´nparalela Antesdehablardemodelosdeprogramacio´nparalelase debe pensar en elos modelos de paralelismo a utilizar.En este proyecto se utilizara´n los modelos de paralelismo de bucleydeparalelismodepareas. Enelmodelodeparalelismodebuclealllegarlaejecu- cio´naunbucleparalelosedividenlasiteracionesentrelos diferenteshilosdeejecucio´n.Estemodeloutilizaelesque- madeparalelismoFork-Join.Elesquemaconsisteenejecu- tar el co´digo de manera secuencial hasta llegar a un punto concreto, donde se divide el trabajo en varias partes y se distribuyeentrediferentesthreads.Unavezhanacabadode trabajar todos los threads, la ejecucio´n del algoritmo vuel- ve a continuar de manera secuencial, pudiendo haber ma´s divisionesdetrabajoenelfuturo(verFigura3). Figura 2: Sistema sin Hyper-Threading y sistema con Hyper-Threading. Se puede ver el efecto en el tiempo de ejecucio´n de la posibilidad de esconder los tiempos de es- pera[9]. EL coprocesador Intel Xeon Phi dispone de una capa- Figura3:EsquemadeparalelismoFork-Join cidad de co´mputo siete veces superior a los procesadores XeonPhi[11].Adema´s,estamejoraseobtieneconunme- Encambio,enelmodelodetareas,unhilotrabajacomo jor rendimiento energe´tico. La capacidad de co´mputo del generador(llamadoMaster)yelrestoactu´ancomoconsu- Intel Xeon Phi 7120P es de 1208 GFLOPS en doble pre- midores(llamadosWorkers).Algenerarseunatarea,lanue- cisio´n,conunaeficienciade3.66GFLOPS/W.Encambio, vatareasean˜adeaunalistadetareas.Silosconsumidores el procesador Intel Xeon 2670 dispone de una capacidad acaban de ejecutar una tarea, o esta´n en espera, consultan deco´mputode166.4GFLOPS,conunaeficienciade1.45 la lista de tareas y, si no esta´ vac´ıa, se les asigna trabajo a GFLOPS/W. realizar(verFigura4). El coprocesador Xeon Phi cuenta con una arquitectura MIMDyutilizalosmismosmodelosdeprogramacio´nque la CPU, facilitando as´ı la programacio´n y adaptacio´n del co´digo. A diferencia de los procesadores Xeon, de hasta 18 nu´cleosdecomputoy36hilosdeejecucio´n,loscoprocesa- doresPhicontienenhasta61coresy244threads.Estohace queseamuyimportantelaescalabilidaddelasaplicaciones aejecutar. Otra diferencia es el taman˜o de los vectores SIMD. Mientras que el Xeon Phi permite instrucciones SIMD de 512bits,losprocesadoresXeondisponendeinstrucciones SIMDde256bits[12],siendoimportanteutilizardemane- raeficientelasunidadesSIMDdelPhiparaobtenerunbuen rendimiento. Sedisponededosmodosdiferentesdeejecucio´n:ejecu- cio´nnativa(elcomandosshpermiteconectarsealcoproce- sador y ver al Phi como un sistema independiente) y eje- cucio´noffload(modeloh´ıbridoquepermiteespecificarque´ partedelco´digoseejecutaenelhostyque´ parteseejecuta enelPhi). Elcoprocesadordisponedeunsistemaoperativobasado en Unix para poder gestionar la ejecucio´n nativa y el sis- tema operativo necesita utilizar un nu´cleo. En ejecuciones offloadnosepermiteutilizaresenu´cleo,mientrasqueenlas ejecucionesnativassedisponedetodoslosnu´cleos,perose recomiendadejarunolibreparaelsistemaoperativo. Figura4:Esquemadeparalelismodetareas 4 EE/UABTFGINFORMA`TICA:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NRESTRICCIONESCONARCOCONSISTENCIA Entre los diferentes modelos de programacio´n parale- 5.1. Ana´lisisdelalgoritmosecuencial la con soporte para tareas para el lenguaje C++ destacan Este algoritmo se utilizara´ para resolver el problema de por su popularidad [13]: Intel Threading Building Blocks, lasN-Reinas,codificadocomounproblemadesatisfaccio´n OpenMP y Cilk Plus. El proyecto utilizara´ Cilk Plus y derestricciones.Elalgoritmosebasaenelrecorridodeun OpenMP, que esta´n integrados en los compiladores de las a´rboldebu´squedadesolucionesenprofundidadconback- ma´quinasdisponibles trackingyusandoarco-consistenciaparapodaralternativas. CilkPlusasignaunacoladetareasacadahilodeejecu- Las restricciones son binarias y el algoritmo utiliza opera- cio´n (o worker) disponible, y reparte las tareas entre dife- ciones a nivel de bit para reducir la cantidad de memoria rentes colas. Los workers creados por Cilk Plus no se en- necesaria. cuentran ligados a un thread hardware y pueden migrar a El algoritmo al empezar selecciona la variable (var) 0 y otronu´cleodeprocesamiento.Cuandounhilodeejecucio´n elnivel(level)0dela´rboldebu´squeda.Unavezacabadala sequedaconlacolavac´ıa,ylosdema´sno,seleccionaauna inicializacio´nsellamaalafuncio´ndebu´squedadesolucio- v´ıctimapararobarletrabajo[14]. nes. Esta funcio´n acepta de para´metros de entrada el nivel Porotrolado,OpenMPtieneunacolacompartidadeta- yelestadodelasvariables,ysiguelossiquientespasosdel reas. En el momento de asignar una tarea a un thread, se Algorithm1: entra en una zona cr´ıtica, la tarea es asignada y eliminada de la lista. Finalmente, el thread sale de la zona cr´ıtica y 3. Se comprueba si el estado (state) actual es va´lido. Si ejecutalatarea[15][16]. no es va´lido se devuelve 0, es decir, 0 soluciones en- contradas. 3 OBJETIVOS 4. Se comprueba si el nivel (level) es el ma´ximo permi- tido.Sielniveleselma´ximopermitidoyelestadoes Un objetivo principal de este proyecto es desarrollar e va´lido,tenemosunasolucio´nydevuelve1. implementarunalgoritmopararesolverelproblemadelas N-Reinas, codificado como CSP, para sistemas con mu´lti- 5. Se selecciona una variable libre a la variable (var) a plesnu´cleosdeprocesamiento. utilizar. Otroobjetivoprincipalesevaluarycompararlosresulta- dosobtenidosutilizandodiferentesmodelosdeparalelismo 6. Seinicializaelcontadordesoluciones(s)a0. ydiferentessistemasparalelos. Adema´sdelosobjetivosprincipales,tambie´nsepretende 7. Serealizanlossiguientesdospuntosporcadavalorde desarrollareimplementarunalgoritmoparaleloequivalente lavariable(var)seleccionada: aptoparaelcoprocesadorIntelXeonPhi. 8. Se calcula el nuevo estado (state´) con la funcio´n de arc consistency. 4 METODOLOG´IA 9. Se llama recursivamente a la funcio´n de bu´squeda de Conelfinderealizaresteproyectoseutilizo´ lametodo- soluciones, con los parametros de entrada del nuevo log´ıaWaterfall.Estametodolog´ıaseconsideraaptaparael estado(state´)yelnivelincrementadoenuno(level+1). proyecto al ser necesario el cumplimiento estricto de cada Ysesumaalcontadordecoluciones(s)lassoluciones unadelasfasesparapoderavanzaralasiguiente.Adema´s, encontradasporlafuncio´n. estametodolog´ıaseutilizaenproyectosconobjetivosbien definidos al principio y con bajas probabilidades de sufrir 10. Sedevuelveelvalordelcontadordesoluciones(s). cambios,requerimientosquesecumplenenesteproyecto. En cada fase del proyecto con desarrollo de algoritmos Algorithm1Bu´squedadesoluciones sehacontadoconpruebasderendimientoyalfinalizarlas fasesdedesarrollodelosalgoritmosparaCPUserealizaron 1: procedureintsearch solutions(level,state) pruebasdeescalabilidad. 2: if!feasible(state)thenreturn0 Lasfasesdedesarrollodelproyectosonlassiguientes: 3: iflevel==N thenreturn1 4: var ←select free variable(state) Desarrollo del algoritmo paralelo con el esquema de 5: s←0 paralelismoFork-Join. 6: forval in available values(var,state)do 7: state(cid:48) ←arc consistency(var,val,state) Desarrolloutilizandoelesquemadeparalelismodeta- 8: s←s+search solutions(level+1,state(cid:48)) reas.Primeroparaelmodelodeprogramacio´nparalela returns OpenMPydespue´sparaCilkPlus La complejidad del algoritmo es O(N!), donde N es el DesarrollodeversionesaptasparacoprocesadoresIn- nu´mero de reinas, esta complejidad se obtiene al tener N telXeonPhi. variablesconNvaloresperolosvaloreslibresalasignarun valoraunavariablesereducenenuno.Peroestacompleji- 5 DESARROLLO dadsereduceconsiderablementealutilizarenelalgoritmo te´cnicasdepoda. Esteapartadosedivideenelana´lisisdelalgoritmoinicial La funcio´n de arco-consistencia utiliza una lista de res- ylaparalelizacio´ndelalgoritmo. tricciones binarias de taman˜o N3. Esta funcio´n, por cada JORDIALCARAZRODRIGUEZ:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NDERESTRICCIONESUTILIZANDOARCOCONSISTENCIA 5 valordecadavariable,realizaNcomparacionesentrelalis- Paracadathreadsenecesitamemoriaadicionalpararea- ta y los valores de las dema´s variables, obteniendo un re- lizarlabu´squedaenelsuba´rbolquetieneasignado,aproxi- sultadoparalapoda.Debidoalascomparacionesarealizar, madamente(N2+3N)∗BitVector,dondeNeselnu´mero laarco-consistenciatieneunacomplejidaddeN3,yresulta dereinas. serlafuncio´nconunademandadetiempodeaproximada- Lasventajasdeestaimplementacio´nsonlassiguientes: menteel93%deltotal. Fa´cilimplementacio´n. EnelalgoritmosedefinelaestructuradedatosBitVector. Estaestructurasedefineparapodermodificareltaman˜ode Senecesitapocamemoriaextra. lasestructurasdedatosdecadareina,susdominios,lasres- triccionesbinariasylosvaloresdearco-consistencia,segu´n Lasdesventajasson: elnu´merodereinas.Contaldereducirlacantidaddeme- morianecesariasetrabajaaniveldebityeltaman˜odeBit- Paralelismo de threads limitado por el nu´mero de va- vectoresN +1bits,dondeNeselnu´merodereinas. loreslibresdelavariablesescogida. La lista de restricciones binarias es un cuello de botella Paralelismou´nicamenteenlazonadelbucleparalelo. si el nu´mero de reinas es elevado, ya que el taman˜o de la listaenbyteses(N3)∗taman˜o de BitVector.Siseutiliza Malbalanceodecargaaltenercadaiteracio´ncargasde un nu´mero pequen˜o como 17 reinas el taman˜o de la lista trabajodiferentes. es 19,2 KBytes, pero en el caso de utilizar 200 reinas se necesitan 244,14 MBytes y si se requiere de 500 reinas se 5.2.2. Paralelizacio´nmediantetareasparalelas necesitan7,5GBytes. Para hacer backtracking es necesario mantener los re- Enestaaproximacio´nseintentaaumentarelparalelismo sultados previos de arco-consistencia obtenidos durante la ymejorarelbalanceodecargaenelprocesodebu´squeda. bu´squedaenela´rboldeposiblessolucionesyseutilizanN Lapartesecuencialdelalgoritmo,unavezllegaalnivel vectoresdebits(Bitvector)encadanivel.Conestefinseuti- a paralelizar, guarda en una lista la informacio´n necesaria lizaunalistadetaman˜o=(N2+N)∗sizeof(BitVector). parapodercontinuarconlabu´squeda.Cadavalordelalis- ta puede ser utilizado K veces, donde K es el nu´mero de 5.2. Paralelizacio´ndelalgoritmo valores libres (ramas) de la Variable escogida a ese nivel. Despue´selprogramacreatantastareascomovaloreslibres Para poder paralelizar el algoritmo se ha dividido la tengalaVariableseleccionadaycontinuaexplorando.Asu bu´squedadesolucionesdelasiguientemanera: vez,losthreadsdisponiblesenelsistemaconsumenlasta- reascreadasdemaneraconcurrente,permitiendounmayor Unhilodeejecucio´nllamadoMaster exploraela´rbol usodelosrecursosdisponibles. de bu´squeda de forma secuencial hasta una profundi- Enestemodelotambie´nselimitaconunaregio´ncr´ıticael daddeterminadaporelusuarioygeneratrabajo(con- accesodelavariablequecontieneelnu´merodesoluciones. tinu´alabu´squedaapartirdelestadogenerado)parael Adema´s,sehaintroducidounanuevazonacr´ıtica,dondese restodehilos. evalu´asielvaloractualdelalistasehautilizadoKveces, Ungrupodehilossedivideeltrabajogeneradoporel encasoafirmativoseutilizara´ lainformacio´ndelsiguiente Master. valordelalista,dondeKeselnu´meroderamas. Deigualmaneraquelaestrategiaanteriornecesitabame- Primeroseexplicalaestrategiadeutilizarunbucleparalelo, moriaextra,e´stanecesitalamismamemoriaadicionalpor despue´s la versio´n realizada mediante el uso de tareas y, thread.Peronecesitama´smemoriaparalosdatosqueutili- para finalizar, la versio´n h´ıbrida para ejecutar el algoritmo zara´nlastareas:sutaman˜odependera´delosnodosexplora- enCPUyenelacelaradorXeonPhi. dosenelnivelseleccionado.Alutilizarpodanoesposible saber a priori el nu´mero de nodos explorados y se requie- 5.2.1. Paralelizacio´nmedianteunbucleparalelo rehacerunaaproximacio´nquereservama´smemoriadela En esta aproximacio´n, al llegar la ejecucio´n secuencial necesaria. aunniveldeterminadoporelusuario,unbuclerepartelos Enlaaproximacio´nrealizadasiseutilizan17reinasyse valoreslibresdelaVariableseleccionadaentrelosdiferen- paraleliza a profundidad 3 se reservan 880 KBytes, de los teshilosdeejecucio´n.CambiandoelbucledelAlgorithm1 cualesso´losonnecesarios732KBytes.Enelcasodepara- porunbucleparaleloenelnivelseleccionado,siguiendoel lelizaranivel6ladiferenciaaumenta,delos1135MBytes esquema de paralelismo Fork-Join (ver Figura 3). Debido reservadosso´losonnecesarios311MBytes.Losvaloresde a la poda irregular realizada en el a´rbol de bu´squeda cada lamemorianecesariaseobtienenalfinalizarlaejecucio´ny threadtienecargasdetrabajodiferente.Lapartesecuencial mostrarcuantoselementosdelalistasehanutilizado. delalgoritmodebeesperaralafinalizacio´ndetodaslasite- Lasventajasdeestaimplementacio´nson: racionesdelbucleparaleloparapodercontinuar. El thread ma´ster no espera a los dema´s threads para Esta aproximacio´n tiene una parte cr´ıtica: la actualiza- continuarsutrabajo. cio´n del nu´mero de soluciones. Debido a tener varios th- readsejecuta´ndoseconcurrentemente,lavariablesepodr´ıa Mejor balanceo de carga al eliminar la necesidad de actualizardemaneraincorrectasiseleeyescribedemanera sincronizarencadanododela´rbolenelniveldondese concurrente. Para evitar tener un valor incorrecto se limita paralelizalabu´squeda. elaccesodeestavariableaunu´nicothreadutilizandouna regio´ncr´ıtica. Lasdesventajasson: 6 EE/UABTFGINFORMA`TICA:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NRESTRICCIONESCONARCOCONSISTENCIA Elusodememoriaextradependedelaprofundidada Hardware lacualseparaleliza. CPU Inteli7-950 Aolin №Nu´cleos 1socketx4=4cores Senecesitandoszonascr´ıticasenlugardeuna. №ThreadsH/W 4x2threads=8threads CPU IntelXeonE5645 5.2.3. Paralelizacio´nh´ıbrida Aoclsd №Nu´cleos 2socketx6=12cores №ThreadsH/W 12x2threads=24threads Si se quiere utilizar el Xeon Phi como coprocesador las CPU IntelXeonE5-4620 anterioresestrategiasnosonaptas.Enelcasodelbuclepa- Penguin №Nu´cleos 4socketx8=32cores ralelo,allimitarelparalelismodethreadsalnu´merodeva- №ThreadsH/W 32x2threads=64threads loreslibres,seobtieneunacantidadinsuficientedetrabajas CPU AMDOpteron6376 independientescomparadoconelnu´merodethreadshard- Batman №Nu´cleos 4socketx16=64cores waredelPhi. №ThreadsH/W 64x1threads=64threads En cambio la estrategia de tareas resultar´ıa viable, pero CPU IntelXeonE5-2620 no hay soporte para consumir concurrentemente las tareas №Nu´cleos 2socketx6=12cores enelPhiyenelsistemahost. №ThreadsH/W 12x2threads=24threads Finalmente,sehaoptadoporutilizarelalgoritmodelmo- Sandman Coprocesor IntelXeonPhi7120 delodetareasperomodificarlodelasiguientemanera: №Nu´cleosPhi 61cores Seintroducenloselementosenlalistadeinformacio´n №ThreadsH/WPhi 61x4threads=244threads para las tareas, pero sin generar tareas. Se recorre de manerasecuencialela´rbolcompletolimitandolapro- Cuadro1:Hardwaredelasma´quinasutilizadas fundidadma´ximadeexploracio´n. Sedeterminalacantidaddeelementosdelalistaaeje- dememoriaeslamismaparatodoslosnu´cleosdeco´mputo. cutarporelhostyporelcoprocesadorconelobjetivo En el caso de la ma´quina Aoclsd, que tiene de una arqui- derepartireltrabajo. tecturaNUMAperoduranteelperiododeexperimentacio´n Se crea una zona paralela, en el host y el en Phi, al estabaconfiguradaconunaemulacio´ndeUMA. finalizarlaparteseriedelalgoritmoyseconsumenlos Lasdema´sma´quinastienenunadearquitecturaNUMA: elementosdelalista. cadasockettieneunamemoriaasociadayaccederalame- moria asociada a otro socket incrementa el tiempo de res- Estemodelotienelosmismosrequerimientosdememo- puesta.Paraaprovecharalma´ximolascaracter´ısticasdees- riaquelaversio´nconelmodelodetareas. tossistemasserealizaunaimplementacio´ndelaversio´nde Lasventajasdeestaimplementacio´nson: tareasadaptadaasistemasNUMA,tandoconOpenMPco- mo con Cilk Plus. En esta nueva versio´n la estructura de Buenbalanceodecargaenlaparteparalela datosautilizarporcadaworkerladeclaraelpropioworker Permite aumentar la capacidad de co´mputo al utilizar enlugardelthreadma´ster. elcoprocesadorXeonPhi. Todas las ejecuciones realizadas utilizan 17 reinas, me- nosenlasma´quinasAolin,queutilizan16reinas,debidoa El uso de memoria extra depende del nivel al cual se su menor capacidad de co´mputo y a utilizar un sistema de paraleliza. colasconunmenortiempoma´ximodeejecucio´n. Doszonascriticas 7 RESULTADOS No hay paralelismo hasta finalizar la parte serie del algoritmo. Enesteapartadoseexplicara´nlosresultadosobtenidosen diferentes ma´quinas y se extraera´n conclusiones generales 6 EXPERIMENTACIO´N delosresultados. Se debe tener en cuenta que la versio´n con bucle para- Las experimentaciones con las diferentes versiones del lelo (llamada FOR en las gra´ficas) u´nicamente se utilizara´ algoritmosehanrealizadoenlasma´quinasdelasiguiente enlacomputadoraAolindebidoasusdesventajasylimita- tabla(Cuadro1): ciones. Las ejecuciones del modelo de tareas, al utilizarse Todas las ma´quinas, menos Batman, disponen de pro- enlamayor´ıadegra´ficas,selasnombrara´ segu´nelmodelo cesadoresIntelconHyperThreading,permitiendounautili- deprogramacio´nparalelautilizado.SiendoOpenMPlaeje- zarinstruccionesindependientesdediferentesthreadspara cucio´ndetareasconOpenMPyCilkPluslaejecucio´ncon ocultar las esperas producidas por las latencias. Si el ren- tareasyCilkPlus. dimiento del algoritmo secuencial tiene problemas con es- peras, por fallos de cache´ u otras latencias, utilizando dos 7.1. Resultadosinicialesderendimiento threads por nu´cleo se puede obtener una mejora de rendi- mientosuperioralnu´merodenu´cleosdeprocesamientodel Acontinuacio´nseanalizaelimpactodeaumentarelni- sistema. vel del a´rbol a partir del cual se distribuye la bu´squeda en Lama´quinaAolin,alu´nicamentedisponerdeunsocket, paralelo (ver Figura 5),. En estos experimentos se utilizan esdearquitecturaUMA,esdecir,lalatenciadelosaccesos ochothreads. JORDIALCARAZRODRIGUEZ:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NDERESTRICCIONESUTILIZANDOARCOCONSISTENCIA 7 HyperThreading,ejecuta´ndosedosthreadspornu´cleo(ver Figura 7). Se ha escogido paralelizar la bu´squeda a partir delnivel3alserelmejorparatodaslasversionessegu´nla Figura5. Figura 5: Speed-Up respecto a la ejecucio´n serie. El nivel var´ıaentre2y7. Se puede observar que la versio´n con bucle paralelo Figura 7: Escalabilidad del rendimiento incrementando el en ningu´n momento obtiene un rendimiento adecuado. El nu´merodehilosdeejecucio´n. Speed-Upobtenidodesdelaprofundidad5nocompensael usodehardwareadicional.Estosedebealamalaestrategia quesigueelalgoritmoaltenerpartesdeco´digoserieymal Dados estos resultados, y los de la anterior gra´fica (ver balanceodecargaenlaszonasparalelas,desaprovechando Figura5),sepuedeafirmarquelaoptimizacio´nqueparale- losrecursosdelprocesador(verFigura6).Otromotivodel liza con un bucle paralelo es la peor de todas sin importar malrendimientoeselincrementoenelnu´merodeinstruc- losrecursosutilizado.Estoesdebidoacarecerdesuficien- cionesparagestionarlasregionesparalelas. teparalelismoydeunbuenbalanceodecarga.Encambio, las versiones que utilizan un modelo de tareas son mucho ma´s eficaces, obteniendo un Speed-Up pro´ximo al nu´me- rodecoresutilizados.ConHyperThreadingelaumentode rendimientosuperaelnu´merodenu´cleosdelsistemaalma- ximizarelusodelosrecursosdeco´mputoescondiendolas latenciasdebidasazonascr´ıticasydependenciasdedatos. 7.2. Resultados de escalabilidad en sistemas multisocket En este apartado se analiza la escalabilidad en el rendi- Figura6:ProfilingconVTune.Cadafilacorrespondeaun miento de la implementacio´n con el modelo de tareas. Se nu´cleodeco´mputo.Lasfranjasrojascorrespondenaespe- utilizansistemasconmu´ltiplessocketsyarquitecturasNU- ras,mientrasquelaszonasmarronesautilizacio´ndeCPU MA. Para reducir la cantidad de figuras a mostrar se ana- lizanlosresultadosdelama´quinaPenguin(verFigura8), En el caso de las versiones de tareas el rendimiento no dado que los resultados son similares en las ma´quinas con var´ıa de manera significativa al variar la profundidad del procesadoresIntel,ylosdelama´quinaBatman(verFigura a´rbol de bu´squeda entre el nivel 2 y el 5. A partir del ni- 9). vel5CilkPluspierderendimientodemaneranotable.Esto En estas ejecuciones las computadoras Penguin y Bat- se debe a un incremento en el nu´mero total de instruccio- man tienen una arquitectura de memoria NUMA. Al uti- nes ejecutadas por el programa, llegando a un incremento lizar dicha arquitectura se debe tener en cuenta que la lo- del72.68%enelnivel7.Enteincrementovienegenerado calizacio´n de los datos puede incrementar la latencia para principalmenteporlasfuncionesdeCilkPlusparagestionar accederamemoria.Contaldeminimizarlosoverheadsde lastareas.Parafinalizar,lape´rdidaconOpenMPsecentra memoriaesimportantequecadanu´cleodecomputoutilice en el nivel 7 a causa de tener menos trabajo los workers y lamemoriama´scercana. ma´s trabajo el hilogenerador. Elincremento en el nu´mero En el algoritmo del modelo de tareas el thread Master deinstruccionesenestecasotienepocoimpacto,alserdel crea,paracadanu´cleo,laestructuradedatosnecesariapara 5.37%. explorar los suba´rboles. En el caso de la versio´n NUMA- En la Figura 7 se puede ver la escalabilidad del rendi- Awarecadanu´cleocrealaestructuradedatosensumemo- miento al utilizar un nu´mero creciente de threads. En los riama´scercanaaliniciarsecadathread. casosde2,3y4threads,cadaunodeellosseasignaaun Sepuedevercomolaimplementacio´nqueusaCilkPlus nu´cleo diferente, y en el caso de 8 threads se habilita el tienevariacioneslevesderendimientoentrelaversio´nini- 8 EE/UABTFGINFORMA`TICA:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NRESTRICCIONESCONARCOCONSISTENCIA cial y la adaptada para NUMA. Gracias a que Cilk Plus disponedeunplanificadordina´mico,parabalancearmejor lacargaentrelosdiferentesnu´cleos,sepuedenmitigarlos efectosdelaarquitecturaNUMAdeformaautoma´tica,sin queelprogramadordebahacernadaespecial. Por otro lado, con OpenMP siempre es mejor la ver- sio´n NUMA-Aware. A causa de no permitir migrar threads de manera automa´tica, segu´n la localizacio´n de los datos, los efectos de la arquitectura NUMA son considerables, y el programador tiene que optimizar el co´digo de forma expl´ıcitaparatrabajarenestasarquitecturasconOpenMP. En las dos ma´quinas con procesadores Intel (Figura 8) se ha llegado a conseguir un Speed-Up mayor al nu´mero de nu´cleos f´ısicos del sistema. Gracias a la tecnolog´ıa Hy- perThreading que ha conseguido maximizar la utilizacio´n delosrecursosalesconderlatencias. ConlaarquitecturaAMD,enloscasosde8,16y32th- Figura8:EscalabilidadenPenguin.Con8threadsseutiliza reads,sehallegadoaunamejoraderendimientosuperioral unu´nicosocket.De8a32threadsseutilizaunnu´cleopor incrementodehardwareutilizado(verFigura9).Encambio, thread.Con64hilosseutilizan2threadsporcore. al usar 64 threads, se pierde escalabilidad, y la utilizacio´n delosrecursos,enlaversio´nOpenMPNUMA-Aware,baja al85.6%. Hayquedestacarquelaarquitecturadelosprocesadores AMDorganizalosnu´cleosdeco´mputoenmo´dulosdedos coresydentrodelmo´dulosecompartendiferentesrecursos. Algunos de los recursos compartidos son las unidades de vectorizacio´n, las unidades Fetch y Decode, y la cache´ de instrucciones,entreotras(verFigura10)[17][18][19][20]. Lascausasexactasdeestape´rdidanosonfa´cilesdeen- contraralnodisponerdeunprofilercomoVTuneenarqui- tecturas AMD. Descartando los fallos de cache´ al obtener resultados similares con ejecuciones de 32 y 64 nu´cleos, y tambie´n problemas de vectorizacio´n al realizar pruebas deshabilitandolasinstruccionesSIMDyobteniendomejo- rasderendimientosimilares,lascausasma´sprobablespue- den ser los tiempos de espera debidos a las zonas cr´ıticas delalgoritmoytambie´nlasperdidasdebidasalosrecursos compartidosenlosmo´dulosdelosprocesadoresAMD. Figura 9: Escalabilidad en Batman. De 8 a 32 threads se Con la versio´n Numa-aware de Cilk Plus el rendimien- utilizaunnu´cleodecadamo´dulodedoscores.Con64th- to ha empeorado, al contrario que la misma versio´n con readsseutilizanlosdosnu´cleosdecadamo´dulo. OpenMP.LacausaprobableesqueCilkPlusespropiedad deIntelylaarquitecturaAMDpuedequenoseaadecuada paraestemodelodeprogramacio´nparalela. 7.3. ResultadosXeonPhi Enesteapartadoprimerosemostrara´nlosresultadosob- tenidos con el coprocesador Xeon Phi y el esquema de ta- reasconOpenMPNuma-Aware.Despue´ssemostrara´nlos resultadosdelmodeloh´ıbrido. Las comparaciones de aumento de rendimiento se reali- zancontraelalgoritmosecuencialejecutadoenelhost. Sedebetenerencuentaquelasejecucionesqueutilizan elcoprocesadorXeonPhihanutilizadounnu´cleodeproce- samientomenosdelosdisponiblesdebidoalnu´cleoutiliza- doporelsistemaoperativodelPhi. Los resultados obtenidos con la versio´n de tareas en el XeonPhi(verFigura11)permitenobservarco´moutilizan- Figura10:Unmo´dulodelaarquitecturaAMD[17] dou´nicamenteunhilodeejecucio´nencadanu´cleodepro- cesamientoseobtieneunrendimientobajo,comparadocon utilizarelma´ximodethreadspermitidos,dondecasisecon- Teo´ricamente,enelXeonPhisepuedeobtenerunincre- sigueduplicarelSpeed-Up. mentodesieteveceslapotenciadeca´lculodeunXeonde JORDIALCARAZRODRIGUEZ:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NDERESTRICCIONESUTILIZANDOARCOCONSISTENCIA 9 8 nu´cleos. Esto se traduce en un Speed-Up de aproxima- damente56respectolaversio´nserie,aunquesolamentese consigueun17.26(un30,8%delrendimientoteo´rico).Es- tosedebeenparteatenerunnu´meropequen˜odereinas,se utilizanvectoriesSIMDdepequen˜otaman˜o,ynoseapro- vechaalma´ximolacapacidaddeSIMDdelPhi,quecuen- ta con vectores del doble de taman˜o que los procesadores Xeon. SisecomparanlosresultadosdelaFigura11ydelaFi- gura12sepuedeverunligeroincrementodelrendimiento entrelaversio´ndetareasylaversio´nh´ıbridaejecuta´ndose u´nicamenteenelPhi.Estamejoraseobtienealejecutarla parteserieenunnu´cleodeprocesamientoma´spotente,per- tenecientealhost,consiguiendorecorrertodalaparteserie antesdequeelPhiconsigagenerarunnu´merodetareasque utilicedemaneraapropiadalagrancantidaddethreadsque Figura 12: Rendimiento de la versio´n h´ıbrida comparada contiene. con la versio´n secuencial en el host. El host es Sandman, La versio´n h´ıbrida en el host tiene una pequen˜a pe´rdida conIntelXeonE5-2620v2.Encadacasoseutilizaelma´xi- derendimiento,del2,5%,respectoalaversio´ndetareasen monu´merodethreadsquepermiteelsistema. el host. Esta pequen˜a diferencia se debe a tener una parte secuencialpequen˜aalparalelizaralnivel3. En la ejecucio´n h´ıbrida se consigue llegar al 95.7% del neraumentosderendimientocercanoseinclusosuperiores aumentoderendimientoteo´rico,elma´ximoseobtienecon alnu´merodenu´cleosdeco´mputoutilizados. lasumadelaumentodelrendimientoenelhostyenelPhi EnelcasodeutilizarHyperThreadingelaumentoderen- (13,53 + 17,57 = 31,1). Este resultado se puede conside- dimientohasuperadolacantidaddenu´cleosutilizados,de- rarsatisfactorioalnohaberningunacomunicacio´nentrelos mostrando que esta tecnolog´ıa cumple con la finalidad de dossistemasparabalancearcargadina´micamente. aumentarelrendimiento,aprovechandoinstruccionesdedi- ferentesthreadsparaminimizartiemposdeespera. ElcoprocesadorIntelXeonPhihapermitidoaumentarla capacidaddeco´mputodelsistemaperosuutilizacio´nnoha sidoenlaproporcio´nesperada.Peseaseruncoprocesador fa´cildeutilizaryprogramar,sedebenllevaracabooptimi- zacionesenelalgoritmosisequiereobtenerunrendimiento o´ptimo.Conlosresultadosobtenidossepuedeafirmarque el problema de no obtener el Speed-Up esperado utilizan- doelPhirecaeenlaimplementacio´ndelalgoritmoynoen los modelos utilizados, que obtienen buenos resultados de escalabilidad. 9 L´INEAS FUTURAS Se pueden realizar varios cambios en el futuro. Estos cambiossonlossiguientes: 1. Limitar el nu´mero de tareas a ejecutar concurrente- Figura11:RendimientodelmodelodetareasenXeonPhi mente.Limitandoelnu´merodetareassepuedereducir comparadoconlaversio´nsecuencialenelhost.Elhostes eltaman˜odelalistaconlainformacio´ndelastareas, Sandman, con Intel Xeon E5-2620 v2. Con 60 threads se reduciendolamemoriaextranecesaria. utilizaunthreadpornu´cleo,con120dosporcore,con180 tresycon240seutilizan4threadspornu´cleo. 2. UtilizarrestriccionesAll-Different,quesonma´srele- vantesparaelcampodelaInteligenciaArtificial.Este tipo de restricciones no necesitan de una lista con las restricciones,yrequierenmenostrabajodeco´mputoy 8 CONCLUSIONES menoscapacidaddememoria. Una vez finalizado el proyecto se puede comprobar que 3. Realizarunaimplementacio´nsecuencialyunaversio´n sehancumplidotantolosobjetivosprincipalescomoelob- paralelaequivalenteparalabu´squedadelaprimeraso- jetivosecundario,y,adema´s,laplanificacio´nnosehavisto lucio´nodelasXprimerassoluciones. modificadaalolargodelproyecto,demostrandoquelame- todologiaWaterfallesadecuadaparaelproyecto. Realizandolasl´ıneasfuturas2y3sepodr´ıarealizaruna Los resultados obtenidos demuestran que los modelos implementacio´n adecuada para ser ejecutada en GPUs y de paralelizacio´n utilizados son adecuados para la resolu- tambie´nparamejorarelrendimientodelXeonPhialtener cio´n del problema de satisfaccio´n de restricciones al obte- unmayornu´merodereinas. 10 EE/UABTFGINFORMA`TICA:PARALELIZACIO´NDELPROBLEMADESATISFACCIO´NRESTRICCIONESCONARCOCONSISTENCIA AGRADECIMIENTOS [14] Intel, “Faq: Cilk plus task scheduler.” https://www.cilkplus.org/faq/20, 2012. U´ltimo Megustar´ıaagradecerleamitutorJuancarlosMouresu acceso:25Abril2015. ayudaduranteeldesarrollodelproyectoysoportarmehasta sufinalizacio´n. [15] K. A. H. y A. D. Malony y S. Shende y D. W. Ja- Quisiera tambie´n darle las gracias a Toni Espinosa y al cobsen, Integrated Measurement for Cross-Platform pequen˜o grupito de alumnos de ma´ster y doctorado que OpenMP Performance Analysis. Using and Impro- mehanayudadoaresolverproblemasrelacionadosconlas vingOpenMPforDevices,Tasks,andMore,Springer, ma´quinasutilizadas. 2014. [16] X.T.yP.UnnikrishnanyX.MartorellyE.Ayduade´ REFERENCIAS yR.SilverayG.ZhangyE.Tiotto,OpenMPTasksin IBMXLCompilers.CASCON’08:proceedingsofthe [1] P. G. y M. F. Kowalik, Multi-Core Processors: New 2008ConferenceoftheCenterforAdvancedStudies WaytoAchieveHighSystemPerformance.PARELEC onCollaborativeResearch:meetingofminds,2008. 2006:ProceedingsoftheInternationalSymposumon ParallelComputinginElectricalEngineering,2006. [17] C.Angelini,“Amdbulldozerreview:Fx-8150getstes- ted.”http://www.tomshardware.com/reviews/fx-8150- [2] T. Spyrou, “Why parallel proces- zambezi-bulldozer-990fx,3043-3.html, 2011. U´ltimo sing? why now? what about my le- acceso:25Abril2015. gacy code?.” https://software.intel.com/en- us/blogs/2009/08/31/why-parallel-processing-why- [18] C. Webster, “Amd bulldozer - what’s a now-what-about-my-legacy-code, 2009. U´ltimo module, what’s a core?.” http://www.bit- acceso:7Marzo2015. tech.net/hardware/cpus/2011/10/12/amd-fx-8150- review/2,2011. U´ltimoacceso:25Abril2015. [3] V.Kumar,AlgorithmsforConstraintSatisfactionPro- blems:ASurvey. AIMagazine,vol.13,nº1,1992. [19] S. Walton, “Amd fx-8350 and fx-6300 piledriver re- view.” http://www.techspot.com/review/586-amd-fx- [4] E. Tsang, Foundations of Constraint Satisfaction. 8350-fx-6300/,2012. U´ltimoacceso:25Abril2015. London:AcademicPressLimited,1993. [20] M. Pollice, “Opteron 6300 series launch: An [5] S.C.B.yC.N.PottsyB.M.Smith,Constraintsatis- incremental upgrade on an outdated platform.” factionproblems:Algorithmsandapplications. Euro- http://www.vrworld.com/2012/11/05/opteron- peanJournalofOperationalResearch119,1999,557- 6300-series-launch-an-incremental-upgrade-on- 591,1999. an-outdated-platform/,2012. U´ltimoacceso:25Abril [6] H. Bodlaender, The rules of chess. 2015. http://www.chessvariants.org/d.chess/chess.html, 2000. [7] H. Bodlaender, M. McCool, A. D. Robison y J. Rein- ders. Waltham:MorganKauffmann,2012. [8] J. L. H. y D. A. Patterson, Computer Architecture: A QuantitativeApproachIV. MorganKauffmann,2007. [9] A. Valles, “Performance insights to intel hyper- threading technology.” https://software.intel.com/en- us/articles/performance-34insights-to-intel-hyper- threading-technology,2009. U´ltimoacceso:25Abril 2015. [10] J. J. y J. Reinders, Intel Xeon Phi Coprocessor High PerformanceProgramming.Waltham:MorganKauff- mann,2013. [11] Intel,IntroducingtheIntelXeonPhiCoprocessor,Ar- chitectureforDiscovery. 2012. [12] S.J.P.yC.J.HughesyM.SmelyanskiyyS.A.Jarvis, Exproring SIMD for Molecular Dynamics, Using In- telXeonProcessorsandIntelXeonPhiCoprocessors. IntelCorporation,2013. [13] A. L. y A. Gilman, A Comparative Analysis of Para- llelProgrammingModelsforC++. ICCGI2014:The Ninth International Multi-Conference on Computing intheGlobalInformationTechnology,2014.
Description: