[ca] Aquest projecte presenta la optimització y l'estudi de l'algoritme sismològic H-MSSG proposat per Otilio Rojas. Aquest algoritme es basa en l'ús dels operadors mimètics que tracten d'adaptar als mètodes de càlculs finits les propietats dels operadors continus. L'optimització treballa sobre els aspectes paralelitzables del codi mitjançant l'ús de un hardware específic anomenat GPGPU enfocat al càlcul de processat gràfic pels ordinadors personals. Aquest element es composa de múltiples nuclis estructurats en una arquitectura enfocada al paral·lelisme. Tot i que aquests elements van ser creats originalment per a calcular y renderitzar objectes gràfics y textures una nova tendència tecnològica ha portat a la creació d'una interfície de programació creada per NVIDA anomenada CUDA que facilita l'ús fora del camp gràfic de les eines del hardware de la GPU. En una primera part del treball s'analitza l'algoritme i el camp de la sismologia per tal de conèixer-ne profundament el caràcter paral·lel. Un cop analitzat el treball aprofundeix en l'ús del caràcter paralelitzable que s'identifica dintre dels bucles d'actualització de matrius de l'algoritme per tal d'adaptar-lo a la programació en CUDA amb l'objectiu final de reduir-ne el temps d'execució. En una segona part del treball es comparen els resultats d'optimització obtinguts en CUDA amb les optimitzacions a l'abast en les eines hardware de treball habitual i en concret les CPU comercials. Aquestes optimitzacions es basen en l'ús de instruccions de tipus SIMD. Finalment s'han comparat els resultats amb la eina de programació OpenACC que presenta unes directives de compilació mitjançant les quals es possible paralelizar el codi de forma automàtica. Un cop obtinguts les resultats amb aquestes eines es realitza una comparació entre tots els mètodes d'optimització.

[es] Este proyecto presenta la optimización y el estudio del algoritmo sismológico H-MSSG propuesto por Otilio Rojas. Este algoritmo se basa en el uso de los operadores miméticos que tratan de adaptar a los métodos de cálculos finitos las propiedades de los operadores continuos. La optimización trabaja sobre los aspectos paralelizables del código mediante el uso de un hardware específico llamado GPGPU enfocado al cálculo de procesado gráfico por los ordenadores personales. Este elemento se compone de múltiples núcleos estructurados en una arquitectura enfocada al paralelismo. Aunque estos elementos fueron creados originalmente para calcular y renderizar objetos gráficos y texturas una nueva tendencia tecnológica ha llevado a la creación de una interfaz de programación creada por nVidia llamada CUDA que facilita el uso fuera del campo gráfico de las herramientas del hardware de la GPU. En una primera parte del trabajo se analiza el algoritmo y el campo de la sismología para conocer profundamente el carácter paralelo. Una vez analizado el trabajo profundiza en el uso del carácter paralelizable que se identifica dentro de los bucles de actualización de matrices del algoritmo para adaptarlo a la programación en CUDA con el objetivo final de reducir el tiempo de ejecución. En una segunda parte del trabajo se comparan los resultados de optimización obtenidos en CUDA con las optimizaciones al alcance en las herramientas hardware de trabajo habitual y en concreto las CPU comerciales. Estas optimizaciones se basan en el uso de instrucciones de tipo SIMD. Finalmente se han comparado los resultados con la herramienta de programación OpenACC que presenta unas directivas de compilación mediante las cuales es posible paralelizar el código de forma automática. Una vez obtenidos los resultados con estas herramientas se realiza una comparación entre todos los métodos de optimización.