[ca] Aquest projecte, tal com el títol indica, es centra en la optimització i paral·lelització d'un simulador sísmic en arquitectures multi-nucli. A partir de les formules matemàtiques necessàries, es presenta el model i es raona el perquè de l'ús de l'estructura de dades SSG (que dona part del nom al algorisme H-MSSG que executa el simulador). Aquest simulador és implementat a dues arquitectures hardware diferents: La primera arquitectura CPU basada en x86 de Intel i una segona basada en una GPU de la mà de NVIDIA. A partir d'un codi seqüencial i utilitzant optimitzacions software, es realitza una primera versió. Com a principals a destacar, es troba un canvi d'estructura de dades del simulador així com la millora dels accessos a memòria mitjançant diferents tècniques. A continuació s'incrementa el rendiment seqüencial del simulador mitjançant tècniques de reducció del nombre de salts. Aprofitant els recursos i les noves instruccions multimèdia (SIMD) disponibles al processador, s'elabora una iteració del simulador aprofitant aquesta tecnologia. Finalment, es paral·lelitza el codi anterior utilitzant la interfície OpenMP. A partir del codi seqüencial i mitjançant la tecnologia CUDA present els les targetes gràfiques (GPU's) d'NVIDIA, s'estudia amb detall l'arquitectura per implementar una nova versió del simulador a aquesta. Ja com a últim pas, s'utilitza la interfície de programació OpenACC per a generar un executable compatible amb la GPU utilitzant el mateix codi seqüencial. En cada apartat s'analitza el rendiment utilitzant diferents mètriques (temps i/o SpeedUp) y es comproven els resultats numèrics obtinguts.

[es] Este proyecto, tal como el título indica, se centra en la optimización y paralelización de un simulador sísmico en arquitecturas multinúcleo. A partir de las formulas matemáticas necesarias, se presenta el modelo y se razona el porqué del uso de la estructura de datos SSG (que da parte del nombre al algoritmo H-MSSG que ejecuta el simulador). Este simulador es implementado a dos arquitecturas hardware diferentes: La primera arquitectura és una CPU basada en x86 de Intel y la segona una GPU de la mano de NVIDIA. A partir de un código secuencial y utilizando optimizaciones software se realiza una primera versión. Como principales puntos a destacar, se encuentra un cambio en la estructura de datos del simulador i la mejora de los accesos a memoria utilizando diferentes técnicas sofware. A continuación se incrementa el rendimiento secuencial del simulador mediante técnicas de reducción del numero de saltos. Aprovechando los recursos y las nuevas instrucciones multimedia (SIMD) disponibles en el procesador, se implementa una version del simulador aprovechando esta tecnología. Finalmente, se paraleliza el código anterior utilizando la interfaz de programacion OpenMP. A partir del código secuencial y mediante la tecnología CUDA presente en las tarjetas gráficas (GPU's) de NVIDIA, se estudia con detalle la arquitectura para implementar una nueva version del codigo utilizando esta tecnologia. Ya como último paso, se utiliza la interfaz de programación OpenACC, para generar un ejecutable compatible con la GPU utilizando el mismo código secuencial. En cada apartado se analiza el rendimiento utilitzando diferentes metricas (tiempos y/o SpeedUp) y se comprueban los resultados numèricos obtenidos.